Управљање меморијом

Из Википедије, слободне енциклопедије
Emblem-important-yellow.svg Ова страница би требало да спада у једну или више категорија.
Молимо вас да је категоришете како би могла да се повеже са сличним страницама.
Уклоните ову поруку након категоризације странице.

Управљање меморијом је чин управљања меморијом рачунара. Суштински услов за управљања меморијом је да обезбеди начин да динамички додели делове меморије програмима на њихов захтев, и ослободи их за поновну употребу када више нису потребни. Ово је од кључне важности за било који напредни рачунарски систем где више од једног процеса може бити у било ком тренутку у току.[1]

Неколико метода је осмишљено за повећање ефикасност управљања меморијом. Системи виртуелне меморије одвоје меморијске адресе које користи процес од стварних физичких адреса, омогућавајући раздвајање процеса и повећање ефикасно расположивог износа РАМ-а користећи страничење или замену секундарне меморије. Квалитет управљања виртуелне меморије може имати широк утицај на укупне перформансе система.

Расподела динамичке меморије[уреди]

Екстерна фрагментација

Детаљи[уреди]

Задатак испуњавања доделе захтева се састоји од лоцираних блокова некоришћене меморије довољне величине. Меморијски захтеви су задовољни додељивањем делова из великог складиштења меморије који се назива хип. У било ком тренутку, неки делови хипа су у употреби, а неки су "слободни" (неискоришћени) и на тај начин су на располагању за будуће алокације. Неколико питања компликују примену, као што је екстерна фрагментација, која се јавља када постоји много малих празнина између додељених меморијских блокова, која поништава њихову примену за захтев за алокацију. Алокатор метаподатака такође може да надува величину (појединачних) малих алокација. Овим се често упраља преко комадања( енгл. chunking ). Систем за управљање меморијом мора пратити преостале алокације како би се осигурало да се не преклапају и да нема меморије која је икада "изгубљена" као цурење меморије.

Ефикасност[уреди]

Специфични имплементирани алгоритам за расподелу динамичке меморије може значајно да утоиче на перформансе. Студија која је спроведена 1994. године од стране Диџитал еквипмент корпорације илуструје опште трошкове који су укључени за разне алокаторе. Најмања просечна дужина пута инструкције потребна да издвоји један слот меморије била је 52 (као што је измерено са нивоом инструкција енгл. profiler-а на различитим софтверима)[2]

Имплементација[уреди]

Пошто тачна локација расподеле (алокације) није позната унапред, меморији се приступа индиректно, обично преко показивача референце. Специфичан алгоритам који се користи да организујр меморијски простор и алоцира и деалоцира комаде, повезан је са кернелом, а може да користи било који од следећих метода:

Алокација блокова фиксне величине[уреди]

Алокација блокова фиксне величине, такође се назива pool меморијска алокација, користи празну листу меморијских блокова фиксне величине (често су сви исте величине). Ово добро функционише за једноставне грађене системе где објекти који нису велики требају да буду алоцирани, али трпе због фрагментације, посебно они са великим меморијским адресама. Како год, због значајно смањеног оптерећења ова метода може значајно побољшати перформансе за објекте којима је потребна честа алокација/деалокација и често се користи у видео игрицама.

Buddy блокови[уреди]

У овом систему, меморија се алоцира у неколико складиштења(pool) меморија уместо само једног, где сваки pool представља блокове меморије одређене величине 2n. Сви блокови одређене величине се чувају у сортираној повезаној листи или стаблу и сви нови блокови који се формирају током алокације су додати у своје pool меморије за каснију употребу. Ако се тражи мањи број него што је на располагању, најмања доступна величина је изабрана и преполовљена. Један од насталих половина је изабранљ, и процес се понавља док се захтев не испуни. Када се блок алоцира, алокатор ће почети са најмањим довољно великим блоком да би се избегло непотребно разбијање блокова. Када је блок ослобођен, он је упоређен са својим buddy блоком. Ако су обоје слободни, они се комбинују и ставњају у следећу buddy-блок листу највећи величине.

Системи са виртуелном меморијом[уреди]

Виртуелна меморија је метод раздвајања организације меморије од физичког хардвера. Апликације оперишу са меморијом преко виртуелних адреса. Сваки пут кад се врши покушај приступа меморисаним подацима, виртуелна меморија наложи да се виртуелна адреса преведе у физичку адресу. На овај начин додавање виртуелне меморије омогућава прецизнију контролу над меморијским системима и методама приступа.

Заштита[уреди]

У системима виртуелне меморије оперативни систем ограничава како процес може да приступи меморији. Ова функција може да се користи да забрани процесу да чита или уписује у меморију која није алоцирана на њему, тиме спречавајући да се злонамерни или неисправни код у једном програму уплиће у рад другог.

Дељење[уреди]

Иако је алоцирана меморија за специфичне процесе нормално изолована, процеси понекад морају да буду у стању да размењују тј. деле информације. Дељена меморија је једна од најбржих техника за међупроцесне комуникације.

Физичка организација[уреди]

Меморија се обично класификује по стопи приступа главној меморији и секундарној меморији. Системи за управљање меморијом управљају премештањем информација између ова два нивоа меморије.

Види још[уреди]

Референце[уреди]

Додатно[уреди]

Спољашње везе[уреди]