1 / 72

Виртуелна меморија

Виртуелна меморија. Оверлеји Страничење на захтев Перформансе страничења на захтев Замена странице Концепт виртуелне меморије Алгоритми замене страница Управљање меморијом код WinNT-a. Оверлеји.

purity
Download Presentation

Виртуелна меморија

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Виртуелна меморија Оверлеји Страничење на захтев Перформансе страничења на захтев Замена странице Концепт виртуелне меморије Алгоритми замене страница Управљање меморијом код WinNT-a

  2. Оверлеји • Испитивања реалних програма су показала да у многим случајевима није потребан читав програм у меморији.

  3. Оверлеји • На пример: • Програми често имају кôд за руковање неуобичајеним грешкама. Пошто су те грешке ретке, тај део кôда се готово никад не извршава. • Низовима, листама и табелама се често додељује више меморије него што им је заиста потребно. • Неке опције и карактеристике програма се могу ретко користити.

  4. Оверлеји • Чак и у оним случајевима када је цео програм потребан, не мора да значи да је читав програм потребан у исто време.

  5. Оверлеји • Способност да се извршава програм који је само делимично у меморији има многе предности: • Програм више није ограничен износом физичке меморије која је расположива у рачунару. Корисници су у стању да пишу програме за веома велики виртуелни адресни простор, олакшавајући програмирање.

  6. Оверлеји • Како сваки корисник може да заузме мањи износ физичке меморије, више корисника се може извршавати истовремено, што одговара повећању искоришћености CPU-а и пропусне моћи, али не и времена одзива или времена обиласка. • Мање У/И активности је потребно за пуњење или пребацивање корисника у меморију, тако да ће се сваки корисник извршавати брже.

  7. Оверлеји • Техника позната као оверлеји (overlays) се понекад користи да би се омогућило да програми буду већи од износа меморије који им се додељује. • Идеја оверлеја је да се у меморији држе само оне инструкције и подаци који су потребни у неком задатом времену. • Када су друге инструкције потребне оне се пуне у ону меморију у којој су биле неке друге инструкције које сада више нису потребне.

  8. Оверлеји • Размотримо као пример двопролазни асемблер. Током првог пролаза асемблер конструише табелу симбола а у другом пролазу генерише кôд на машинском језику. • Могли би смо да поделимо такав асемблер у кôд првог пролаза, кôд другог пролаза, табелу симбола и заједничке рутине за подршку које користе и први и други пролаз.

  9. Оверлеји • Претпоставимо да су величине ових компонената: • Први пролаз 8К • Други пролаз 10К • Табела симбола 14К • Заједничке рутине 5К

  10. Оверлеји • Да би напунили све то одједном у меморију потребно нам је 37К. Ако је само 32К расположиво не можемо да извршимо наш програм. • Међутим, приметимо да пролаз 1 и пролаз 2 не морају да буду у меморији истовремено.

  11. Оверлеји • Дефинисаћемо два оверлеја: (A) табела симбола, зајединичке рутине и пролаз 1, и (B) табела симбола, заједничке рутине и пролаз 2. • Додаћемо и драјвер оверлеја (величине 2K) и почети са оверлејем A у меморији.

  12. Табела симбола 14K Заједничке рутине 5K Драјвер оверлеја 2K Пролаз 2 Пролаз 1 10K 8K Сл. 1. Оверлеји за двопролазни асемблер. Оверлеји

  13. Оверлеји • Појам који је сродан овоме јесте динамичко пуњење. • Овде се рутине не пуне у меморију док се не позову. Све рутине се налазе на диску у релокатибилном формату. Главни програм се пуни у меморију и извршава.

  14. Оверлеји • Када рутина жели да позове неку другу рутину, онда се најпре проверава да ли је позвана рутина напуњена. • Ако није, релокатиблни пунилац се позива да би се жељена рутина учитала у меморију и ажурирају се одговарајуће табеле да би се одсликало ново стање. • Потом се управљање преноси на новонапуњену рутину.

  15. Оверлеји • Предност динамичког пуњења је у томе да се рутине које нису потребне никада не пуне у меморију. • Ова шема је нарочито корисна када је дугачак кôд потребан за руковање случајевима који се ретко јављају.

  16. Оверлеји • Ни оверлеји ни динамичко пуњење не траже посебну подршку оперативног система. • Обе технике се могу у потпуности имплементирати од стране корисника, једино што ће бити више У/И операција него обично.

  17. Оверлеји • С друге стране програмер мора правилно да пројектује и програмира структуру оверлеја. Овај задатак може да представља тежак подухват. • Стога су пожељније аутоматске технике за извршавање великих програма на ограниченим капацитетима физичке меморије.

  18. Страничење на захтев • Ово је најраспрострањенији систем виртуелне меморије. • Страничење на захтев је слично страничењу са пребацивањем.

  19. Страничење на захтев • Програм се налази на секундарном меморијском медијуму. Када желимо да се изврши он се пребацује у меморију. • Уместо да се читав програм смести у меморију, смештају се само оне странице које су неопходне. • На овај начин се смањује време пребацивања, смањује неопходни капацитет физичке меморије а повећава степен мултипрограмирања.

  20. Пребацивање ван програм A програм B Пребацивање у меморију Главна меморија Сл. 2. Пребацивање страничне меморије на континуални простор на диску. 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 Страничење на захтев

  21. Страничење на захтев • Када програм покуша да користи страницу која није у меморији хардвер ће покушати да преведе корисничку адресу у физичку користећи страничну табелу. • Ставке у страничној табели које одговарају страницама које нису у меморији и којима није придружен странични оквир имају постављену вредност валид/инвалид бита којом се спречава приступ.

  22. Страничење на захтев оквир valid/invalidбит 0 1 0 4 v 1 i 2 A 0 6 v 2 3 B i 1 3 A 4 i C 4 2 9 v 5 5 D 3 i 6 C A B 6 E i 7 4 7 F C D E 5 Странична табела 8 G 6 F F 9 H 7 10 Логичка меморија 11 12 Секундарна меморија 13 14 Физичка меморија Сл. 3. Странична табела када неке странице нису у меморији.

  23. Страничење на захтев • Инвалидирање нема ефекта ако програм никада не покуша да приступи тим страницама. • У супротном, јавља се промашај странице.

  24. Страничење на захтев • Хардвер за страничење ће приликом превођења адресе преко страничне табеле установити да је постављен инвалид бит и изазвати трап типа адресна грешка. • Нормално би се због овог типа грешке програм терминирао. • У овом случају трап је резултат пропуста оперативног система да допреми валидни део програма у меморију.

  25. 3. Страницанајединицисекундарнемеморије Оперативнисистем 2.Трап 1. Референца LOAD M i • 6.Рестартујинструкцију страничнатабела слободаноквир • 4. Учитавање странице која недостаје • 5. Ресетовање страничне табеле Сл. 4. Кораци приликом опслуживања странице. физичка меморија Страничење на захтев

  26. Страничење на захтев • Важно је запазити да, захваљујући памћењу стања прекинутог процеса, тај процес можемо обновити на потпуно истом месту и у истом стању, осим што је сада жељена страница у меморији. • Ово нам омогућава да програм извршавамо и када он није у потпуности у меморији.

  27. Страничење на захтев • У екстремном случају можемо започети извршење програма када ниједна страница није у меморији.

  28. Страничење на захтев • Процес ће одмах произвести промашај странице већ првом инструкцијом. • Када се прва страница допреми у меморију процес ће се наставити, изазивајући промашај стране све док му све потребне стране не буду у меморији. Од тог момента програм се може извршавати без промашаја. • Ово се назива чисто страничење на захтев: никада се не учитава страница у меморију док не буде потребна.

  29. Страничење на захтев • Хардвер који подржава страничење на захтев је исти као за страничење и пребацивање: • Странична табела са могућношћу означавања сваке ставке инвалидном помоћу валид/инвалид бита или посебном вредношћу заштитних битова. • Секундарни меморијски медијум за чување страница које нису у меморји. То је обично брзи диск. • Осим ове хардверске, потребна је и значајна софтверска подршка.

  30. Перформансе страничења на захтев • Страничење на захтев може да има значајни утицај на перформансе рачунарског система.

  31. Перформансе страничења на захтев • Ефективно време приступа код страничења на захтевје где је p – фактор промашаја ta– време приступа меморији tf– време које се утроши на опслуживање промашаја странице (учитавање потребне странице и приступ њој)

  32. Перформансе страничења на захтев • Промашај странице изазива појаву следеће секвенце. • Трап оперативног система. • Памћење регистара и стања програма. • Одређивање да ли је прекид изазван због промашаја странице. • Провера да ли је странична референца била легална и одређивање локације странице на диску.

  33. Перформансе страничења на захтев • Налагање читања са диска у слободан меморијски оквир. • Чекање у реду уређаја док се захтев за читање опслужује. • Чекање током времена постављања и/или времена ротационог кашњења диска. • Отпочињање трансфера странице у слободан меморијски оквир.

  34. Перформансе страничења на захтев • Док чекамо можемо доделити CPU другом процесу. • Прекид изазван од стране јединице диска (У/И завршен). • Памћење регистара и стања програма другог корисника • Одређивање да ли је прекид изазван од стране диска. • Кориговање страничне табеле и других табела да би показивале да је жељена страница сада у меморији. • Чекање да се CPU поново додели процесу. • Обнављање регистара, стања програма и нове страничне табеле, а онда настављање прекинуте инструкције.

  35. Перформансе страничења на захтев • Не морају сви ови кораци да буду неопходни у свим случајевима. • У сваком случају суочени смо само са три главне компоненте времена опслуживања промашаја странице. • Опслуживање прекида изазваног промашајем странице. • Учитавање странице. • Обнављање процеса.

  36. valid/invalid бит оквир 0 H 1 Load M 3 v Monitor PC 0 4 v 2 J 1 5 v 3 M i 2 D Логичка меморија за корисника 1 H Странична табела за корисника 1 3 B Load M 4 J 5 оквир valid/invalid бит 0 A A 6 M 1 B E 6 v 7 2 D i Физичка меморија 3 E 2 v Секундарна меморија 7 v Логичка меморија за корисника 2 Странична табела за корисника 2 Сл. 5. Ситуација када је потребна замена странице. Замена странице

  37. Замена странице • У таквом случају се дешава да у тренутку када је потребно учитати нову страницу нема слободног меморијског оквира. • Оперативни систем тада има неколико могућности. • Терминирање корисничког програма. • Пребацивање читавог програма на диск. • Замена странице.

  38. Замена странице • Рутина за опслуживање промашаја странице је сада измењена да обухвати замену странице. • Нађи локацију жељене странице на диску. • Нађи слободан оквир. • Ако постоји слободан оквир, користи га. • Ако не, употреби алгоритам за замену странице за избор оквира жртве. • Упиши жртву на диск и сагласно томе измени табелу страница и оквира. • Учитај жељену страницу у новоослобођени оквир и ажурирај табеле страница и оквира. • Обнови кориснички процес.

  39. valid/invalid бит оквир • 1. Пребацивање странице жртве на диск • 2. Промени стање на инвалидно f 0 v i f жртва • 4. Ресетуј страничну табелу за нову страницу f v • 3. Учитавање жељене странице у меморију Секундарна меморија Странична табела Физичка меморија Сл. 6. Замена странице. Замена странице

  40. Замена странице • Сада су потребна два преноса странице ако нема слободног оквира што удвостручује време промашаја странице и повећава ефективно време приступа меморији. • Да би се ово време смањило користи се dirty бит.

  41. Концепт виртуелне меморије • Замена странице је суштинска за страничење на захтев. Она комплетира раздвајање логичке од физичке меморије. • Код страничења које није на захтев корисничке адресе се пресликавају у физичке, дозвољавајући да та два скупа адреса буду сасвим различита. • Код страничења на захтев величина логичког адресног прострора није више ограничена физичком меморијом.

  42. Концепт виртуелне меморије • Виртуелна меморија представља раздвајање корисничке логичке меморије од физичке и обично се имплеметира страничењем на захтев. • На тај начин се програмерима може обезбедити велика виртуелна меморија на системима са мањом физичком меморијом.

  43. Страница 0 Страница 1 Страница 2 . . . Меморијско пресликавање Страница n Секундарна меморија Виртуелна меморија Физичка меморија Сл. 7. Виртуелна меморија може бити много већа од физичке. Концепт виртуелне меморије

  44. Концепт виртуелне меморије • Виртуелна меморија чини задатак програмирања лакшим. • Једна од последица виртуелне меморије је виртуелно нестајање оверлеја. • Виртуелна меморија се такође може имплементирати и код система са сегментацијом.

  45. Концепт виртуелне меморије • Два главна проблема се морају решити када се имплементира страничење на захтев: • алгоритам за доделу оквира • алгоритам за замену страница.

  46. Алгоритми замене страница • Бољи је онај алгоритам који даје мањи фактор промашаја. • Евалуација алгоритама се врши њиховим извршавањем на неком низу меморијских референци и рачунањем броја промашаја страница.

  47. Алгоритми замене страница • Уз фиксирану величину странице, потребно да знамо број странице који се референцира. • Потребно је да знамо и број страничних оквира који је расположив. • Како број оквира расте, смањује се број промашаја

  48. Број промашаја странице Број оквира Сл. 8. Број промашаја странице у зависности од броја оквира. Алгоритми замене страница

  49. Алгоритми замене страница • FIFO (First-In-First-Out) • Оптимална замена • LRU (the Least Recently Used) • Апроксимације LRU алгоритма • Додатни референтни битови. • Замена друге шансе. • LFU (Least Frequently Used) • MFU (Most Frequently Used) • Класе страница

  50. Управљање меморијом код WinNT-a • WindowsNT је пројектован тако да се може имплементирати на различитим процесорима. • Најважнијиа платформи за WindowsNT је Intel 80486 (и следбеници).

More Related