Віртуальная памяць

From Wikipedia, the free encyclopedia

Віртуальная памяць
Remove ads

Віртуа́льная па́мяць — гэта схема арганізацыі памяці кампутара, пры якой праграмнае забесьпячэньне ўяўляе адрасную прастору кампутара бесьперапыннай і аднастайнай.

Thumb
Схема працы віртуальнай памяці

Гісторыя стварэньня

У першых кампутарах памяць была вельмі малая па аб’ёме і да таго ж каштавала вельмі дорага. Адзін з самых хуткадзейных кампутараў таго часу — IBM-650 (канец 1950-х гадоў) — утрымоўваў усяго 2000 словаў памяці. Адзін зь першых кампілятараў ALGOL быў напісаны для кампутара з аб’ёмам памяці ўсяго 1024 словы. Старажытная сыстэма з падзелам часу выдатна працавала на кампутары PDP-1, агульны аб’ём памяці якога складаў усяго 4096 18-разрадных словаў для апэрацыйнай сыстэмы і праграм карыстальніка. У тыя часы праграмісты марнавалі вельмі шмат часу, спрабуючы зьмясьціць свае праграмы ў малюсенькую памяць. Часта прыходзілася выкарыстоўваць маруднейшыя альгарытмы толькі таму, што хутчэйшыя не атрымоўвалася разьмясьціць у памяці кампутара.

У 1961 годзе група дасьледнікаў з Манчэстэра (Ангельшчына) прапанавала мэтад аўтаматычнага выкананьня працэсу накладаньня розных частак памяці, пры якім праграміст мог наогул не думаць аб гэтым працэсе[1]. Гэты мэтад, у аснове якога, як цяпер кажуць, ляжыць выкарыстаньне віртуальнай памяці, меў відавочную перавагу, паколькі вызваляў праграміста ад масы нуднай працы. Упершыню гэты мэтад быў ужыты ў шэрагу кампутараў, выпушчаных у 60-я гады. Да пачатку 70-х гадоў віртуальная памяць была рэалізаваная ў большасьці кампутараў. У цяперашні час нават кампутары на адной мікрасхеме, у тым ліку Pentium 4 і UltraSPARC III, маюць вельмі складаныя сыстэмы віртуальнай памяці.

Remove ads

Старонкавая арганізацыя памяці

Згодна з канцэпцыяй віртуальнай памяці, уся фізычная і віртуальная памяць кампутара разьбіваецца на роўныя часткі, якія завуцца старонкі. Дзякуючы наяўнасьці віртуальнай памяці фізычная памяць і яе абмежаваньне перастаюць быць перашкодаю для праграміста.

Праграмы пішуцца так, быццам у апэратыўнай памяці хапае месца для разьмяшчэньня ўсёй віртуальнай адраснай прасторы, нават калі гэта не адпавядае рэчаіснасьці. Праграмы могуць загружаць словы зь віртуальнай адраснай прасторы або запісваць словы ў віртуальную адрасную прастору, нягледзячы на тое, што на самай справе фізычнай памяці для гэтага можа не хапіць. Праграміст можа пісаць праграмы, нават не ўсьведамляючы, што існуе віртуальная памяць. Проста ствараецца такое ўражаньне, што аб’ём памяці дадзенага кампутара досыць вялікі.

Віртуальнай памяці патрабуецца фізычная памяць для захоўваньня ўсёй праграмы і ўсіх дадзеных. Копію праграмы, якая захоўваецца ў фізычнай памяці, зручней разглядаць як арыгінал, а фрагмэнты, якія запісваюцца ў апэратыўную памяць, — як копіі. Натуральна, арыгінал у такім разе павінен апэратыўна абнаўляцца. Калі зьмены ўносяцца ў копію праграмы ў апэратыўнай памяці, яны ў канчатковым выніку павінны быць адлюстраваныя ў арыгінале.

Віртуальная адрасная прастора разьбіваецца на шэраг старонак роўнага памеру, звычайна ад 512 байт да 64 Кбайт, хоць часам сустракаюцца старонкі па 4 Мбайт. Памер старонкі заўсёды павінен быць ступеньню двойкі. Фізычная адрасная прастора таксама разьбіваецца на часткі роўнага памеру такім чынам, каб кожная такая частка апэратыўнай памяці зьмяшчала роўна адну старонку. Гэтыя часткі апэратыўнай памяці завуцца старонкавымі кадрамі[2].

Remove ads

Выклік старонак па патрабаваньні і працоўнае мноства

Віртуальная старонка, да якой адбываецца зварот, не заўжды знаходзіцца ў апэратыўнай памяці, паколькі ў апэратыўнай памяці нядосыць месца для ўсіх віртуальных старонак. Пры звароце да адрасу старонкі, якой няма ў апэратыўнай памяці, адбываецца памылка адсутнасьці старонкі. У выпадку такой памылкі апэрацыйная сыстэма павінна прачытаць патрэбную старонку з дыску, увесьці новы адрас фізычнай памяці ў табліцу старонак, а затым паўтарыць каманду, якая выклікала памылку.

Такі мэтад працы зь віртуальнай памяцьцю завецца выклікам старонак па патрабаваньні (demand paging). Такі выклік старонак нагадвае кармленьне немаўля па патрабаваньні (у супрацьлегласьць кармленьню па раскладзе): калі немаўля крычыць, вы яго корміце. Пры выкліку старонак па патрабаваньні старонкі пераносяцца ў апэратыўную памяць толькі ў выпадку неабходнасьці, але не раней.

Альтэрнатыўны падыход заснаваны на назіраньні, што шматлікія праграмы зьвяртаюцца да адраснай прасторы нераўнамерна. Звычайна большасьць зваротаў адносяцца да невялікай колькасьці старонак. Гэта завецца прынцыпам лякальнасьці. Пры звароце да памяці можна выклікаць каманду, выклікаць зьвесткі або захаваць зьвесткі. У кожны момант часу існуе набор старонак, якія выкарыстоўваліся пры апошніх зваротах. Вось гэты набор старонак і завецца працоўным мноствам.

Loading content...
Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads