Віртуа́льна па́м'ять — схема адресації пам'яті комп'ютера, при якій пам'ять для запущеної програми реалізується однорідним масивом, в той час як насправді операційна система виділяє пам'ять блоками в різних видах пам'яті, включаючи короткочасну (оперативну) і довгочасну (тверді диски, твердотілі накопичувачі).
Також під віртуальною пам'яттю часто розуміють файл підкачки (Windows-системи), або окремий розділ на диску (Unix-системи). Ця пам'ять використовується для того, щоб дати можливість системі або користувачу одночасно виконувати більшу кількість програм, ніж це дозволяє фізична оперативна пам'ять.
Віртуальну пам'ять підтримують процесори, що працюють у захищеному режимі, починаючи з 80286 (випущено у 1982 році), але широко стали використовувати тільки в операційних системах і оболонках для 32-розрядних процесорів (80386 і новіші, починаючи з 1985 року).
Віртуальна пам'ять у Windows
У Windows реалізовано систему віртуальної пам'яті, яка утворює плоский (лінійний) адресний простір. Вона створює кожному процесу ілюзію того, що в нього є власний достатньо великий і закритий від інших процесів адресний простір. Віртуальна пам'ять дає логічне представлення (звідси й назва- віртуальна, "неіснуюча"), яке не обов'язково відповідає (і як правило не відповідає) структурі фізичної пам'яті. У період виконання диспетчер пам'яті, використовуючи апаратну підтримку, транслює, або проектує (maps), віртуальні адреси на фізичні, за якими реально зберігаються дані. Керуючи проектуванням і захистом сторінок пам'яті, операційна система гарантує, що жоден процес не зашкодить іншому й не зможе пошкодити дані самої операційної системи. Оскільки в більшості комп'ютерів обсяг фізичної пам'яті набагато менший від загального обсягу віртуальної пам'яті, задіяної процесами, диспетчер пам'яті переміщає (підкачує) частину вмісту пам'яті на диск. Підкачування даних на диск звільняє фізичну пам'ять для інших процесів або операційної системи. Коли потік звертається до скинутої на диск сторінки віртуальної пам'яті, диспетчер пам'яті завантажує цю інформацію з диска назад у пам’ять. Для використання переваг підкачування в програмах ніякого додаткового коду не потрібно, тому що диспетчер пам'яті спирається на апаратну підтримку цього механізму.
Керування віртуальною пам'яттю
Механізм керування пам’яттю є однією з найважливіших складових операційної системи. У комп’ютерах IBM-сумісної архітектури застосунки разом з оброблюваними даними розташовуються в оперативній пам'яті. Таким чином, виконання будь-якого процесу обов’язково супроводжується операціями з пам’яттю. Для реалізації схеми керування віртуальною пам’яттю, при якій кожен процес отримує власний закритий адресний простір, використовується диспетчер віртуальної пам’яті (virtual memory manager). Диспетчер пам’яті виконує два головних завдання: узгодження адрес віртуального адресного простору з наявними фізичними ресурсами пам’яті (трансляція віртуальних адрес) та керування використанням сторінкового файлу, який дозволяє компенсувати нестачу фізичної пам’яті.
Структура віртуального адресного простору
Розмір віртуального адресного простору залежить від конкретної апаратної платформи. На 32-розрядних системах теоретичний максимум для загального віртуального адресного простору становить 4 Гб. За замовчуванням Windows виділяє нижню половину цього простору (у діапазоні адрес від х00000000 до х7FFFFFFF) процесам, а другу половину (у діапазоні адрес від х80000000 до xFFFFFFFF) використовує у власних цілях. Windows 2000 Advanced Server, Windows 2000 Datacenter Server, Windows XP (SP2 і вище) і Windows Server 2003 підтримують завантажувані параметри /3GB і /USERVA, які вказують у файлі Boot.ini та дозволяють процесам, що виконують програми зі спеціальним прапорцем у заголовку образу, використовувати до 3 Гб закритого адресного простору й залишає операційній системі тільки 1 Гб. Цей варіант дає можливість вимогливій до пам’яті програмі зберігати в адресному просторі свого процесу великі порції даних і тим самим зменшити частоту дискових звертань.
Кожному процесу виділяється власний віртуальний адресний простір. Для 32-розрядних процесів його розмір становить 4 Гб (це максимальний обсяг, який може використовуватися при 32-бітній адресації – 232 байт). Для 64-розрядних процесів розмір адресного простору становить 16 екзабайт (264 байт). Потоки при виконанні отримують доступ тільки до пам'яті, яка належить його процесу. Пам'ять, відведена іншим процесам, прихована від потоку й недоступна для використання. Тому дані різних процесів, записані за тією ж віртуальною адресою, розміщуються в різних сторінках фізичної пам'яті (це забезпечує система трансляції адрес). У ряді випадків ізоляція може бути частково знята (наприклад, для відображених файлів). У подібних випадках забезпечують контроль доступу до області пам'яті, для чого створюють окремий об'єкт, який містить атрибути захисту. 4 Гб адресного простору система ділить на дві приблизно однакові за обсягом частини. Перша частина надається у користування процесу, а друга резервується для системних потреб. Таким чином, за замовчуванням кожен користувацький процес в 32-розрядній версії Windows має у своєму розпорядженні власний адресний простір розміром до 2 Гб; інші 2 Гб використовує операційна система. У системному просторі розміщуються такі компоненти:
- Системний код. Містить образ операційної системи, HAL і драйвери пристроїв, які використовуються для завантаження системи. Сюди ж проектується частина підсистеми Windows режиму ядра, а також графічні драйвери.
- Гіперпростір. Особлива область, яка використовується для проектування на пам’ять списку робочого набору процесу й тимчасового проектування інших фізичних сторінок для ряду системних операцій.
- Структури даних списку робочого набору, які описують системний робочий набір.
- Системний кеш. Віртуальний адресний простір, який використовується для проектування[] файлів.
- Системна купа підкачуваної пам’яті.
- Елементи системної таблиці сторінок. Це елементи в таблиці сторінок, що містять фізичну адресу, на яку проектується віртуальна.
- Системна купа непідкачуваної пам’яті.
- Дані аварійного дампу. Область, зарезервована для запису інформації про стан системи на момент краху.
- Область, зарезервована під специфічні для HAL структури.
Віртуальний адресний простір 32-бітних систем
Віртуальний адресний простір кожного процесу розбивається на розділи, розмір і призначення яких залежать від версії Windows. Розділ для виявлення нульових вказівників резервується, щоб полегшити розробникам програмного забезпечення виявляти нульові вказівники. Спроба читання або запису за цими адресами викликає порушення доступу. Якщо в програмі відсутня належна обробка помилок, то при невдалій спробі виділення пам’яті за вказівником він може мати нульове значення. Тоді спроба звертання до даних за таким вказівником (тобто за адресою $00000000) буде явно помилковою. Оскільки цей розділ адресного простору заблокований, виникне виняткова ситуація некоректного доступу до пам’яті. Ця особливість допомагає програмістам виявляти помилки у програмах. Розділ для коду й даних є закритою частиною адресного простору процесу. Основний обсяг даних, що належать процесу, зберігається саме тут. Сюди завантажуються всі виконавчі модулі, враховуючи й динамічні бібліотеки. На цей же розділ відображуються проектовані файли, доступні даному процесу.
Сторінковий файл
У старих операційних системах фізичною пам'яттю вважалася лише оперативна пам'ять (RAM). Сучасні ОС імітують пам'ять за рахунок дискового простору. При цьому на диску створюється сторінковий файл (paging file), який містить доступну для всіх процесів віртуальну пам'ять. З погляду прикладної програми, сторінковий файл просто збільшує обсяг доступної пам'яті. Під час роботи операційна система скидає вміст частини оперативної пам'яті в сторінковий файл і при необхідності довантажує його порціями назад у пам’ять. Якщо такого файлу немає, система працюватиме, але застосункам буде доступний менший обсяг пам'яті. Сторінковий файл збільшує обсяг доступної пам'яті і дозволяє програмам працювати з більшими обсягами даних. Фізична пам’ять ділиться на сторінки, кожна з яких може мати окремі атрибути захисту.
Механізм розширеної пам'яті (Address Windowing Extension)
Проте інколи для роботи програми недостатньо й 3 Гб (наприклад, для великих баз даних). У зв'язку з цим у 32-розрядних Windows з'явився механізм Address Windowing Extension (AWE), що дозволяє 32-розрядній програмі виділяти до 64 Гб фізичної пам'яті, а потім створювати подання (views), або вікна (windows), на свій 2-гігабайтний віртуальний адресний простір. Застосування AWE ускладнює керування проєкціями віртуальної пам'яті на фізичну, але знімає проблему прямого доступу до обсягу фізичної пам'яті, що перевищує ліміти 32-розрядного адресного простору процесу.
Переваги
Використання віртуальної пам'яті дає ряд переваг:
- спрощення адресації пам'яті клієнтським програмних забезпеченням
- раціонально керувати ОЗП комп'ютера
- ізолювати процеси один від одного (кожен процес «вважає», що монопольно володіє всією пам'яттю)
Примітки
- Коноваленко І.В., Федорів П.С. Системне програмування у Windows з прикладами на Delphi, Т:ТНТУ.- 2012 [ 8 грудня 2012 у Wayback Machine.].
- Руссинович М. Внутреннее устройство Microsoft Windows : Windows Server 2003, Windows XP и Windows 2000. Мастер-класс / М.Руссинович, Д.Соломон ; пер. с англ. – 4-е изд. – М : Издательско-торговый дом "Русская редакция" ; СПб : Питер, 2005.
Див. також
Це незавершена стаття про операційні системи. Ви можете проєкту, виправивши або дописавши її. |
Ця стаття потребує додаткових для поліпшення її . (січень 2016) |
цієї статті під сумнівом. (січень 2016) |
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Virtua lna pa m yat shema adresaciyi pam yati komp yutera pri yakij pam yat dlya zapushenoyi programi realizuyetsya odnoridnim masivom v toj chas yak naspravdi operacijna sistema vidilyaye pam yat blokami v riznih vidah pam yati vklyuchayuchi korotkochasnu operativnu i dovgochasnu tverdi diski tverdotili nakopichuvachi Takozh pid virtualnoyu pam yattyu chasto rozumiyut fajl pidkachki Windows sistemi abo okremij rozdil na disku Unix sistemi Cya pam yat vikoristovuyetsya dlya togo shob dati mozhlivist sistemi abo koristuvachu odnochasno vikonuvati bilshu kilkist program nizh ce dozvolyaye fizichna operativna pam yat Virtualnu pam yat pidtrimuyut procesori sho pracyuyut u zahishenomu rezhimi pochinayuchi z 80286 vipusheno u 1982 roci ale shiroko stali vikoristovuvati tilki v operacijnih sistemah i obolonkah dlya 32 rozryadnih procesoriv 80386 i novishi pochinayuchi z 1985 roku Virtualna pam yat u WindowsU Windows realizovano sistemu virtualnoyi pam yati yaka utvoryuye ploskij linijnij adresnij prostir Vona stvoryuye kozhnomu procesu ilyuziyu togo sho v nogo ye vlasnij dostatno velikij i zakritij vid inshih procesiv adresnij prostir Virtualna pam yat daye logichne predstavlennya zvidsi j nazva virtualna neisnuyucha yake ne obov yazkovo vidpovidaye i yak pravilo ne vidpovidaye strukturi fizichnoyi pam yati U period vikonannya dispetcher pam yati vikoristovuyuchi aparatnu pidtrimku translyuye abo proektuye maps virtualni adresi na fizichni za yakimi realno zberigayutsya dani Keruyuchi proektuvannyam i zahistom storinok pam yati operacijna sistema garantuye sho zhoden proces ne zashkodit inshomu j ne zmozhe poshkoditi dani samoyi operacijnoyi sistemi Oskilki v bilshosti komp yuteriv obsyag fizichnoyi pam yati nabagato menshij vid zagalnogo obsyagu virtualnoyi pam yati zadiyanoyi procesami dispetcher pam yati peremishaye pidkachuye chastinu vmistu pam yati na disk Pidkachuvannya danih na disk zvilnyaye fizichnu pam yat dlya inshih procesiv abo operacijnoyi sistemi Koli potik zvertayetsya do skinutoyi na disk storinki virtualnoyi pam yati dispetcher pam yati zavantazhuye cyu informaciyu z diska nazad u pam yat Dlya vikoristannya perevag pidkachuvannya v programah niyakogo dodatkovogo kodu ne potribno tomu sho dispetcher pam yati spirayetsya na aparatnu pidtrimku cogo mehanizmu Keruvannya virtualnoyu pam yattyu Mehanizm keruvannya pam yattyu ye odniyeyu z najvazhlivishih skladovih operacijnoyi sistemi U komp yuterah IBM sumisnoyi arhitekturi zastosunki razom z obroblyuvanimi danimi roztashovuyutsya v operativnij pam yati Takim chinom vikonannya bud yakogo procesu obov yazkovo suprovodzhuyetsya operaciyami z pam yattyu Dlya realizaciyi shemi keruvannya virtualnoyu pam yattyu pri yakij kozhen proces otrimuye vlasnij zakritij adresnij prostir vikoristovuyetsya dispetcher virtualnoyi pam yati virtual memory manager Dispetcher pam yati vikonuye dva golovnih zavdannya uzgodzhennya adres virtualnogo adresnogo prostoru z nayavnimi fizichnimi resursami pam yati translyaciya virtualnih adres ta keruvannya vikoristannyam storinkovogo fajlu yakij dozvolyaye kompensuvati nestachu fizichnoyi pam yati Struktura virtualnogo adresnogo prostoru Struktura adresnogo prostoru dlya 32 ta 64 rozryadnih Windows Rozmir virtualnogo adresnogo prostoru zalezhit vid konkretnoyi aparatnoyi platformi Na 32 rozryadnih sistemah teoretichnij maksimum dlya zagalnogo virtualnogo adresnogo prostoru stanovit 4 Gb Za zamovchuvannyam Windows vidilyaye nizhnyu polovinu cogo prostoru u diapazoni adres vid h00000000 do h7FFFFFFF procesam a drugu polovinu u diapazoni adres vid h80000000 do xFFFFFFFF vikoristovuye u vlasnih cilyah Windows 2000 Advanced Server Windows 2000 Datacenter Server Windows XP SP2 i vishe i Windows Server 2003 pidtrimuyut zavantazhuvani parametri 3GB i USERVA yaki vkazuyut u fajli Boot ini ta dozvolyayut procesam sho vikonuyut programi zi specialnim praporcem u zagolovku obrazu vikoristovuvati do 3 Gb zakritogo adresnogo prostoru j zalishaye operacijnij sistemi tilki 1 Gb Cej variant daye mozhlivist vimoglivij do pam yati programi zberigati v adresnomu prostori svogo procesu veliki porciyi danih i tim samim zmenshiti chastotu diskovih zvertan Kozhnomu procesu vidilyayetsya vlasnij virtualnij adresnij prostir Dlya 32 rozryadnih procesiv jogo rozmir stanovit 4 Gb ce maksimalnij obsyag yakij mozhe vikoristovuvatisya pri 32 bitnij adresaciyi 232 bajt Dlya 64 rozryadnih procesiv rozmir adresnogo prostoru stanovit 16 ekzabajt 264 bajt Potoki pri vikonanni otrimuyut dostup tilki do pam yati yaka nalezhit jogo procesu Pam yat vidvedena inshim procesam prihovana vid potoku j nedostupna dlya vikoristannya Tomu dani riznih procesiv zapisani za tiyeyu zh virtualnoyu adresoyu rozmishuyutsya v riznih storinkah fizichnoyi pam yati ce zabezpechuye sistema translyaciyi adres U ryadi vipadkiv izolyaciya mozhe buti chastkovo znyata napriklad dlya vidobrazhenih fajliv U podibnih vipadkah zabezpechuyut kontrol dostupu do oblasti pam yati dlya chogo stvoryuyut okremij ob yekt yakij mistit atributi zahistu 4 Gb adresnogo prostoru sistema dilit na dvi priblizno odnakovi za obsyagom chastini Persha chastina nadayetsya u koristuvannya procesu a druga rezervuyetsya dlya sistemnih potreb Takim chinom za zamovchuvannyam kozhen koristuvackij proces v 32 rozryadnij versiyi Windows maye u svoyemu rozporyadzhenni vlasnij adresnij prostir rozmirom do 2 Gb inshi 2 Gb vikoristovuye operacijna sistema U sistemnomu prostori rozmishuyutsya taki komponenti Sistemnij kod Mistit obraz operacijnoyi sistemi HAL i drajveri pristroyiv yaki vikoristovuyutsya dlya zavantazhennya sistemi Syudi zh proektuyetsya chastina pidsistemi Windows rezhimu yadra a takozh grafichni drajveri Giperprostir Osobliva oblast yaka vikoristovuyetsya dlya proektuvannya na pam yat spisku robochogo naboru procesu j timchasovogo proektuvannya inshih fizichnih storinok dlya ryadu sistemnih operacij Strukturi danih spisku robochogo naboru yaki opisuyut sistemnij robochij nabir Sistemnij kesh Virtualnij adresnij prostir yakij vikoristovuyetsya dlya proektuvannya sho fajliv Sistemna kupa pidkachuvanoyi pam yati Elementi sistemnoyi tablici storinok Ce elementi v tablici storinok sho mistyat fizichnu adresu na yaku proektuyetsya virtualna Sistemna kupa nepidkachuvanoyi pam yati Dani avarijnogo dampu Oblast zarezervovana dlya zapisu informaciyi pro stan sistemi na moment krahu Oblast zarezervovana pid specifichni dlya HAL strukturi Virtualnij adresnij prostir 32 bitnih sistem Struktura virtualnogo adresnogo prostoru v sistemah tipu h86 Virtualnij adresnij prostir kozhnogo procesu rozbivayetsya na rozdili rozmir i priznachennya yakih zalezhat vid versiyi Windows Rozdil dlya viyavlennya nulovih vkazivnikiv rezervuyetsya shob polegshiti rozrobnikam programnogo zabezpechennya viyavlyati nulovi vkazivniki Sproba chitannya abo zapisu za cimi adresami viklikaye porushennya dostupu Yaksho v programi vidsutnya nalezhna obrobka pomilok to pri nevdalij sprobi vidilennya pam yati za vkazivnikom vin mozhe mati nulove znachennya Todi sproba zvertannya do danih za takim vkazivnikom tobto za adresoyu 00000000 bude yavno pomilkovoyu Oskilki cej rozdil adresnogo prostoru zablokovanij vinikne vinyatkova situaciya nekorektnogo dostupu do pam yati Cya osoblivist dopomagaye programistam viyavlyati pomilki u programah Rozdil dlya kodu j danih ye zakritoyu chastinoyu adresnogo prostoru procesu Osnovnij obsyag danih sho nalezhat procesu zberigayetsya same tut Syudi zavantazhuyutsya vsi vikonavchi moduli vrahovuyuchi j dinamichni biblioteki Na cej zhe rozdil vidobrazhuyutsya proektovani fajli dostupni danomu procesu Storinkovij fajl U starih operacijnih sistemah fizichnoyu pam yattyu vvazhalasya lishe operativna pam yat RAM Suchasni OS imituyut pam yat za rahunok diskovogo prostoru Pri comu na disku stvoryuyetsya storinkovij fajl paging file yakij mistit dostupnu dlya vsih procesiv virtualnu pam yat Z poglyadu prikladnoyi programi storinkovij fajl prosto zbilshuye obsyag dostupnoyi pam yati Pid chas roboti operacijna sistema skidaye vmist chastini operativnoyi pam yati v storinkovij fajl i pri neobhidnosti dovantazhuye jogo porciyami nazad u pam yat Yaksho takogo fajlu nemaye sistema pracyuvatime ale zastosunkam bude dostupnij menshij obsyag pam yati Storinkovij fajl zbilshuye obsyag dostupnoyi pam yati i dozvolyaye programam pracyuvati z bilshimi obsyagami danih Fizichna pam yat dilitsya na storinki kozhna z yakih mozhe mati okremi atributi zahistu Mehanizm rozshirenoyi pam yati Address Windowing Extension Prote inkoli dlya roboti programi nedostatno j 3 Gb napriklad dlya velikih baz danih U zv yazku z cim u 32 rozryadnih Windows z yavivsya mehanizm Address Windowing Extension AWE sho dozvolyaye 32 rozryadnij programi vidilyati do 64 Gb fizichnoyi pam yati a potim stvoryuvati podannya views abo vikna windows na svij 2 gigabajtnij virtualnij adresnij prostir Zastosuvannya AWE uskladnyuye keruvannya proyekciyami virtualnoyi pam yati na fizichnu ale znimaye problemu pryamogo dostupu do obsyagu fizichnoyi pam yati sho perevishuye limiti 32 rozryadnogo adresnogo prostoru procesu PerevagiVikoristannya virtualnoyi pam yati daye ryad perevag sproshennya adresaciyi pam yati kliyentskim programnih zabezpechennyam racionalno keruvati OZP komp yutera izolyuvati procesi odin vid odnogo kozhen proces vvazhaye sho monopolno volodiye vsiyeyu pam yattyu PrimitkiKonovalenko I V Fedoriv P S Sistemne programuvannya u Windows z prikladami na Delphi T TNTU 2012 8 grudnya 2012 u Wayback Machine Russinovich M Vnutrennee ustrojstvo Microsoft Windows Windows Server 2003 Windows XP i Windows 2000 Master klass M Russinovich D Solomon per s angl 4 e izd M Izdatelsko torgovyj dom Russkaya redakciya SPb Piter 2005 Div takozhZadacha zamishennya storinok Storinkova pam yat Ce nezavershena stattya pro operacijni sistemi Vi mozhete dopomogti proyektu vipravivshi abo dopisavshi yiyi Cya stattya potrebuye dodatkovih posilan na dzherela dlya polipshennya yiyi perevirnosti Bud laska dopomozhit udoskonaliti cyu stattyu dodavshi posilannya na nadijni avtoritetni dzherela Zvernitsya na storinku obgovorennya za poyasnennyami ta dopomozhit vipraviti nedoliki Material bez dzherel mozhe buti piddano sumnivu ta vilucheno sichen 2016 Nejtralnist ciyeyi statti pid sumnivom Bud laska oznajomtesya z vidpovidnim obgovorennyam ta za mozhlivosti vipravte nedoliki sichen 2016