1.Врсте меморије На основу начина чувања података делимо их на меморије које привремено чувају податке (док је рачунар укључен) и меморије које трајно чувају податке. Привремено чување података карактерише се губитком података након искључивања уређаја ( рачунара) Међутим, основна подела меморије обично се врши на основу брзине приступа. Слободније говорећи, брзина приступа меморији је време потребно да се податак упише или прочита из меморије. Подела је следећа 1. Регистри 2. Кеш меморија 3. Примарна меморија 4. Секундарна меморија На врху лествице налазе се регистри. То су меморијске ћелије уграђене у процесор CPU и у њима се налазе подаци које процесор тренурно обрађује. Кеш меморија је веома брза и она такође привремено чува податке, а представља бафер (Buffer - међуспремник, амортизер, ублаживач) између примарне меморије и процесора. Примарна (главна) меморија садржи инструкције и податке са којима процесор тренутно оперише, па се због тога назива и радном меморијом. Брзина радне меморије мања је од брзине кеш меморије, али је значајно већа од брзине секундарне меморије. Секундарна меморија не губи садржај након престанка рада рачунара, па се зато и користи за трајно чување података. 2.Време приступа меморији Главни циљ код управљања меморијом је да се комбиновањем велике-споре меморије са малом-брзом меморијом оствари ефекат велике-брзе меморије Kапацитет и просечно време приступа се стално повећавају. Такође на сваком меморијском нивоу постоји компромис брзине и цене. Иако брзина преноса података између процесора и RAM меморије може бити веома велика у многим системима се између процесора и RAM меморије користи и кеш меморија. Она убрзава рад апликације и из угла крајњег корисника је невидљива. У просеку око 10% укупне величине програма се налази у главној меморији, а око 1% програма се налази у кеш меморији. У регистрима се налази једна иснтрукција и неколико података. 3.Капацитет меморије Меморија се састоји од низа меморијских ћелија које могу да сачувају најмању количину података тј. jедан bit. Битови се организују у бајтове (byte) тј. групе од 8 бита. На већини рачунара 1 бyte је најмања адресибилна јединица, што значи да сваки бајт има своју адресу и може му се директно приступити. Меморијска реч одеђује количину података које процесор може да обради у једном тренутку. Њена величина је одређена архитектуром конкретног рачунара. У прошлости величина меморијске речи била је 8, 16, 32 bit-а. Данас се углавном користе рачунари са меморијском речи дужине 64 bit-а. Нпр. 64-битни рачунар може да једном инструкцијом сабере два 64-битна броја ( бројеви представљени са 64 бинарних цифара), док ће 32-битни рачунар бити у стању да исто уради са бројевима величине 32-бита. 4.Логичке и физичке адресе и адресни простори Адресибилни простор - Често се при употреби термина меморијска реч, мисли и на адресибилни простор рачунара. Тако 32-битни рачунар најчешће дозвољава 32-битне маморијске адресе, па је у могућности да подржи-адресира 2 32 = 4.294.967.296 бајтова тј. 4GB memorije. Редни број бајта записан у бинарном систему представља адресу тог бајта. На основу те адресе процесор може приступити произвољном бајту. Када се програм учита у меморију он мора да ради са реалним физичким адресама.процес превођења симболичких у физичке адресе се назива повезивање адреса (address binding). Приликом учитавања извршног програма, пунилац (loader) пресликава релативне у физичке адресе. Током извршавања процеса, комуникација са меморијом се одвија кроз читав низ читања и/или писања у локације које се налазе на одређеној меморијској адреси. Процесор узима инструкције и податке из меморије или смешта податке у меморију. У наведеним акцијама процесор не манипулише физичким адресама, већ логичким које сам генерише. Скуп свих логичких адреса назива се логички или виртуелни адресни простор. Свакој логичкој адреси одговара физичка адреса. Скуп свих физичких адреса које одговарају адресама логичког адресног простора назива се физички адресни простор. 5.Шта је MMU? Хардверски уређај који пресликава логичке у физичке адресе назива се јединица за управљање меморијoм MMU (Memory Management Unit).Једноставни MMU је уређај који поседује посебан регистар тзв. базни регистар. MMU додаје вредност базног регистра на логичку адресу и тако генерише физичку адресу (као на слици). Кориснички програм ради са логичким адресама које он види у опсегу од 0 до max. Ako je za R означена вредност базног регистра, MMU пресликава логичке адресе у физичке и ове ће бити у опсегу R+0 до R+max. 6.Шта је монопрограмирање - навести примере Монопрограмирање је најједноставнији приступ за управљање меморијом који подразумева да се у меморији налази само један кориснички процес. Један део меморије се одваја за OS, док остатак меморије користи процес који се извршава.код овог приступа постоје три могућности: Прва могућност подразумева да се OS учита на ниже адресе мемеорије, а проце користи више делове меморије. Друга могућност је да се OS налази на врху меморије, а да ниже адресе користи процес. Трећа могућност је да се OS учита на ниже адресе меморије, драјвери су учитавају на адресе на врху меморије, а остатак служи за кориснички програм Учитавање OS-а у меморију извршава се аутоматски приликом укључивања система. Тада се активира пунилац (Loader) који има задатак да пренесе OS из секундарне меморије у радну меморију. Овак поступак називамо подизање система. По учитавању OS-а, кориснички програм (односно процес) се учитава на адресе одмах после OS-а или на други крај меморије. 7.Ште је мултипрограмирање - пребацивање и партиције
Мултипрорамирање омогућава да се више процеса може наћи у меморији и да се привидно извршавају истовремено. Када се текући процес заустви због чекања на неку I/O - операцију, процесор може да извршава инструкције неког другог процеса. Ово захтева да ни у једном тренутку не постоје два или више процеса који се налазе у стању чекања. Ако се са p означи проценат времена које процес троши на чекање и ако постоји n процеса у меморији, тада је вероватноћа да се свих процеса нађе стању чекања p n. Одавде се добија да проценат времена у којем процесор није бесполен 1-p n.овај проценат се назива искоришћеност процесора, а број n се назива степен мултипрограмирања. Наведена формула за искоришћеност процесора ја апроксимативне природе, јер у стварности процеси немају исто време чекања. Постоје различите технике које обезбеђују меморију потребну процесима за извршавање у систему мултипрограмирања. Најпознатије су Пребацивање За време извршавања, програм (процес) мора бити учитан у меморију. Међутим, док процес чека на неке ресурсе, није неопходно да се налази у меморији. Пребацивање је једноставна техника управљања меморијом и процесима коју OS може кориситити у циљу повећања искоришћености процесора. Идеја је да се блокирани процес привемено премести у секундарну меморију (HD), а да се у меморију учита други процес. На овај начин формира се ред привремено блокираних процеса. Процеси из реда блокираних процеса, који су у могућности да наставе са радом, формирају ред спремниџ процеса. Након пребацивања блокираног процеса у секундарну меморију OS одлучује да ли ће учитати нови програм у меморију, или ће активирати неки из реда спремних процеса. Ефикасност пребацивања највише уависи од брзине секундарне меморије (HD), која би требало да буде и добољно велика да прихвати меморијске слике ѕа све процесе. Партиције Техника пребацивања захтева да се, поред OS-a, у меморији најчешће налази само један процес. Пораст капацитета RAM меморије омогућио је да се уместо пребацивања користи ефикаснија техника коју називамо партиционисање меморије. Основна идеја је да се меморија подели на n-делова - партиција, које представљају непрекидне делове меморије. Партиције могу бити једнаке, али и различитих величина. У сваки партицију се може сместити само један процес.степен мултипрограмирања у овом случају је n. Ако су све партиције заузете а неки програм треба да започне своје извршавање, онда се формира ред спремних процеса. Када се нека од заузетих партиција ослободи, учитава се неки од спремних процеса. 8.ММ (Mеmory Manager ) - основне функције MM-а Систем за управљање меморијом кратко називамо ММ- Memory Manager. Основне функције које сваки ММ мора садржавати и спроводити су ММF_1 - Водити рачуна о заузетим и слободним просторима у централној меморији. То значи да је могуће у сваком тренутку одговорити да ли новопридошли програм може бити смештен у меморију и тиме омогућити генерисање новог процеса. ММF_2 - Стратегија доделе меморије То значи имати план како ће се у сваком тренутку одлучивати о томе - ком програму ће се доделити меморија - колико меморије ће му бити додељено - када ће меморија бити додељена - где, на ком месту у меморији доделити меморију ММF_3 - Механизам доделе меморије То значи којом техником односно механизмом прерачунавати адресе које процес тражи. ММF_4 - Деалокација То значи ослобађање меморије када процес заврши са радом. Овакав систем за управљање меморијом називамо кратко систем за доделу тј. алокацију меморије 9. Везивање адреса Везивања адреса - време и начин Функција f (као и остале ) може бити одређена у 4 различита тренутка и то: 1. за време писања програма 2. за време превођења 3. за време учитавања у меморију 4. за време извршавања Начини везивања (NV) Ово фиксно одређивање функције пресликавања f називамо везивање (bindind). Ако посматрамо ова четири могућа везивања функције f тада добијамо следеће 4 врсте програмирања, односно адресирања: NV1 - Апсолутно адресирање - програмер одређује стварне физичке адресе, па при пресликавању нема никаквих трансформација, дакле f је идентитет функција. NV2 - Симболичко адресирање - функција пресликавања f је фиксирана у програму преводиоцу (Compiler) и он генерише стварне физичке адресе из имена које даје програмер. NV3 - Релокатибилно адресирање - где програм за пуњење (Loader) одређује стварне физичке адресе, а програм преводилац (Compiler) даје само релативне адресе, с обзиром на почетак програма. NV4 - Динамичко адресирање где се адресе одређују за време извршавања програма, обично употребом посебних регистара
10.Континуална појединачна додела меморије Ово је најједноставнија алокација меморије, и као таква није од посебног значаја јер се све ређе среће у рачунарским системима, али теоријски има значај за разумевање сложенијих начина алокације. Ова алокација се користи код система са тзв. групном обрадом (Batch System) код којих се један једини процес извршава од свог почетка па до краја а да не дели централни CPU са другим процесима. Код овакве алокације меморије потребно је сместити само један процес у меморију рачунара Нпр. ако цела меморија има 256 KB, OS заузима 32 KB, a је кориснику на располагању 224 KB. Ako процес заузима 160 KB тада ће 160 KB централне меморије бити неискоришћено за све време док се извршава дотични процес. Ако имамо мало централне меморије, може се догодити да цео процес не можемо ни учитати у меморију. Зато увек морамо централну меморију оставити довољно великом да би се учитали и већи процеси.то даље значи да ће увек један део, већи или мањи, бити неискоришћен. Са друге стране овај начин алоцирања меморије не захтева никакве хардверске додатке. 11. Алокација меморије у партицијама Овај начин алокације меморије, за разлику појединачне дозвољава учитавање више процеса истовремено. Читава расположива меморија подељена је у делове- партиције. У свакој је смештен по један процес, Тако да добијамо више процеса у меморији истовремено и они сад могу делити процесорско време, дакле изводи се мултирпограмирано. 12. Статичка алокација меморије у партицијама Код овог начина алокације меморије величина партиције је унапред одређена и не може се у неком тренутку за поједини процес погодном, мењати. Величина партиције одређује се нпр. приликом дефинисања самог оперативног система или је опаратер на почетку рада сам дефинише. Код оваквог алоцирања меморије води се посебна табела са подацима: -Број партиције -Величина партиције -Почетна адреса (локација) партиције -Стање партиције, које може бити слободна или заузета Сваки процес који долази мора претходно деклакрисати своје захтеве за коришћење меморије. То је потребно да би се могао алоцирати у меморију. При алокацији алготитам ће једноставним претраживањем табеле установити у коју партицију може и треба сместити процес. 13. Динамичка алокација меморије у партицијама Код овог начина алокације меморије партиције се одређују по величини и броју према долазећим процесима. На тај начин, свака партиција постаје толико велика колико је велик и процес који у њу треба сместити. Сви преостали делови меморије чине неалоциране партиције. Када неки процес заврши са радом, читава партиција се ослобађа и постаје слободна. Да би се могло пратити стање, тј. заузетост меморије потребне су две табеле, Јдна за праћење алоцираних-заузетих партиција и једна за праћење неалоцираних-слободних партиција. Табеле су истих структура и у њима се воде подаци о -Величини партиција -Почетним адресама (локацијама) партиција -Стањима партиција, које могу бити слободна или заузета 14.Евиденција заузетости меморије FSB- Free Storage Block Поступак вођења евиденције о заузетости меморије може се провести и без овх табела. Ту технику називамо кратко FSBтехника. Ова техника је приказана на слици, где се види да се води евиденција само о слободним партицијама, и то тако да су почетне адресе партиција повезанe помоћу посебних показивача у линеартну листу. Наиме свакој партиције је придружен посебан блок назван слободан блок, кратко SB. Овакав блок за ознаку слободних партиција, се налази на почетку сваке слободне партиције. Taj SB садржи два основна податка и то: 1. Adress Pointer - показивач адресе следећег већег блока 2. Величина слободне партиције којој овај блок припада 3. Треће поље је неискоришћно Будући да поље показивача садржи адресу следећег већег слободног дела меморије, дакле следеће незаузете партиције, повезани су у линеарну листу у растућем поретку. На слици ова повезаност је назначена стремицама. Притом се може видети да почетна стрелица излази из подручја OS-а, што значи да се адреса најмање слободне партиције мора налазити у неком регистру, на фиксној адреси подручја OS-а. То је важно због гога да би рутине за алокацију, деалокацију и одржавање редоследа у листи знале одакле почиње претраживање. Ознаке за величину партиције писане су у хексадецималној нотацији а тако и адресе. Највећа слободна, неалоцирана, партиција последња је у листи. Како иза ње не следи ни једна друга партиција, у адресном дели SB-а стоје нуле, што означава крај листе. Приступ овој листи блокиран је помоћу семафора, чија је почетна вредност 1. Свака рутина која жели приступ листи, мора на том семафору извести операцију wait и након завршетка коришћења опет операцију signal. Други семафор с почетном вреднсоти 0, контролише ред чекања на алокацију меморије. Ако, наиме, процес не може бити алоциран јер нема одговарајуће слободне партиције, мора извести операцију wait на том семафору и тиме се ставља у ред чекања. Операција signal изводи се на том семафору сваки пут када дође до деалокације неке партиције, односно до завршетка неког процеса. Овом техником се штеди на меморијском простору, јер нема табела за вођење евиденције о заузетим и слободним партицијама, а претраживање при алокацији је неупоредиво брже. 15. SWAPPING - замена и пребацивање Ако немамо довољно места у оперативној меморији за смештање свих спремних процеса, неки се избацују на диск. Када је потребно, цели спремни процеси из интерне меморије се пребацују на диск, односно спремни процеси се са диска пребацују у интерну меморију Процес се мора приликом извршавања налазити у оперативној меморији. Процес се може привремено пребацити из меморије на диск, како би се ослободила меморија. Ослобођена меморија се пуни другим процесом. После извесног времена, процес се може вратири са диска у меморију како би наставио извршавање.
16.PAGING - страничење Полазна идеја страничења је кориснички поглед на програм као скуп главног програма, процедура, функција и модула. Управљање меморијом помоћу сегмената подразумева представљање логичког адресног простора као скупа сегмената. Сваки сегмант има своје име и дужину. Делове процеса држимо на диску, учитавају се по потеби. Страничење решава проблем екстерне фрагментације. Страничење је метода са хардверском подршком на нивоу процесора. Физичка меморија се дели на блокове фиксне величине: оквире (page frames).логички адресни простор се дели на блокове истих величина: странице (pages).величине страница су по оравилу степен броја 2.Свакој логичкој станици одговара једна физичка.логичке странице и оквити за те странице имају исте величинекоресподенција између њих се чува у табели страница ( page table).континуални логички простро процеса може да се разбаца по физичкој меморији.свака логичка адреса коју генерише процесор се дели на два дела: Број странице p ( page number) 1. Користи се као индекс у табели стрнаица која садржи базну адресу сваке странице у физичкој меморији 2. Базна адреса пресдставља тзв. виши део адресе Померај унутар странице d ( page offset) 1. У комбинацији са базном адресом дефинише физичку меморијску адресу која се шаље меморијској јединици Сегментција Преведени кориснички програм се може посматрати као скуп различитих логичкох целина - сегмената. Нпр. Неке од њих су: главни програм, библиотеке, глобални подаци итд. Основна идеја сегментације је да се сваком сегменту додели посебан меморијски простор. Сваки сегмент је АТОМИЧАН, тј или ће се ЦЕО сегмент наћи у меморији или неће уопште бити учитан у меморију. Сегменти се могу наћи било где у меморији, али један сегмент мора бити у НЕПРЕКИДНОМ меморијском простору. Није неопходно да сегменти буду исте величине, већ се сваком сегменту додељује онолико меморије колико је потребно. Слично као и код страничења, логичке адресе код сегментације се састоје из два дела као на слици 1. Број сегмената - s 2. Број позиције у сегменту - d Овде је потребно дводимензионалне логичке адресе пресликати у једнодимензионе физичке адресе. За те потребе уводи се табела сегмената. Сваком процесу се додељује по једна табела сегмената у којој се чува по један слог за сваки сегмент процеса. Тај слог садржи три податка: 1. Редни број сегмента 2. Адресу почетка сегмента у меморији и 3. Укупни дужину сегмента Као и код страничења, табела сегмената може бити смештена у регистрима, додатој или радној меморији. Базни регистар табеле сегмената STBR ( Segment Table Base Register ) садржи адресу локације где је смештена табела сегмената. Како број сегмената једног процеса може да варира, потребно је водити рачуна о величини табеле сегмената. За то се обично користи регистар дужине процеса STLR ( Segment Table Lenght Registar) Мапирање логичких адреса у физичке састоји се од следећих акција, као на слици Најпре се за логичку адресу ( s, d ) проверава да ли је број сегмената валидан, тј, да ли је s < STLR. Ако је број сегмената регуларан, онда се он додаје на вредност регистра STBR. Тиме се добија меморијска адреса одговарајућег слога у табели сегмената. Са те адресе се учитава дужина сегмента и физичка адреса почетка сегмента. Прво се проверава да ли је позиција у сегменту валидна, тј. Да ли је d < дужине сегмента, ако је то тачно, онда се на физичку адресу почетка сегмента додаје d и добија се одговарајућа физичка адреса. Као и код страничења, пресликавање логичких адреса у физичке захтева два обраћања меморији, што успорава рад OS-а два пута. Као и код страничења, управљање оваквим поступком се убрзава коришћењем додате меморије. Предност сегментације у односу на остале концепте огледа се у заштити меморије. С обзиром да сегменти представљају логички дефинисане делове меморије, вероватно је да ће се све ставке сегмента корисити на исти начин. Дакле, очекивано је да неки сегменти садрже инструкције, анеки податке. Сегменти који садрже инструкције могу се означити тако да се могу само читати и да се не могу модификовати, чиме се штите од нежељених промена и приступа. Такође, сегментација пружа могућност дељења кода и података између различитих процеса. Наиме сваки процес има своју табелу сегмената. Сегменти се деле уколико ставке у табелама сегмената два различита процеса указују на исту физичку локацију. Додељивање меморије код сегмантације је слично као и код станичења. Једина разлика је у томе што су сегменти најчешће различите дужине. Како величина сегмената може бити различита, сегментација подећа на динамичко партиционисање. Разлика је у томе што се кос сегментације процес не налази у једном меморијском блоку, већ се делови процеса могу наћи било где у мемориј