Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Поняття віртуальної пам'яті



Розробникам програмного забезпечення часто доводиться вирішувати проблему розміщення в пам'яті великих програм, розмір яких перевищує об'єм доступної оперативної пам'яті. Одін з варіантів вирішення даної проблеми – організація структур з перекриттям – розглянутий в попередній лекції. При цьому передбачалася активна участь програміста в процесі формування частин програми, що перекриваються. Розвиток архітектури комп'ютерів і розширення можливостей операційної системи по управлінню пам'яттю дозволив перекласти рішення цієї задачі на комп'ютер. Одним з головних досягнень стала поява віртуальної пам'яті (virtual memory). Вперше вона була реалізована в 1959 р. на комп'ютері «Атлас», розробленому в Манчестерському університеті.

Суть концепції віртуальної пам'яті полягає в наступному. Інформація, з якою працює активний процес, повинна розташовуватися в оперативній пам'яті. У схемах віртуальної пам'яті у процесу створюється ілюзія того, що вся необхідна йому інформація є в основній пам'яті. Для цього, по-перше, займана процесом пам'ять розбивається на декілька частин, наприклад сторінок. По-друге, логічна адреса (логічна сторінка), до якої звертається процес, динамічно транслюється у фізичну адресу (фізичну сторінку). І нарешті, в тих випадках, коли сторінка, до якої звертається процес, не знаходиться у фізичній пам'яті, потрібно організувати її підкачку з диска. Для контролю наявності сторінки в пам'яті вводиться спеціальний біт присутності, що входить до складу атрибутів сторінки в таблиці сторінок.

Таким чином, в наявності всіх компонентів процесу в основній пам'яті необхідності немає. Важливим наслідком такої організації є те, що розмір пам'яті, займаної процесом, може бути більше, ніж розмір оперативної пам'яті. Принцип локальності забезпечує цій схемі потрібну ефективність.

Можливість виконання програми, що знаходиться в пам'яті лише частково, має ряд цілком очевидних переваг.

Програма не обмежена об'ємом фізичної пам'яті. Спрощується розробка програм, оскільки можна задіювати великі віртуальні простори, не піклуючись про розмір використовуваної пам'яті.

Оскільки з'являється можливість часткового приміщення програми (процесу) в пам'ять і гнучкого перерозподілу пам'яті між програмами, можна розмістити в пам'яті більше програм, що збільшує завантаження процесора і пропускну спроможність системи.

Об'єм введення-виводу для вивантаження частини програми на диск може бути менше, ніж у варіанті класичного свопінгу, у результаті кожна програма працюватиме швидше.

Таким чином, можливість забезпечення (за підтримки операційної системи) для програми «видимості» практично необмеженої (характерний розмір для 32-розрядної архітектури 232 = 4 Гбайт) призначеної для користувача пам'яті (логічний адресний простір), що адресується, за наявності основної пам'яті істотно менших розмірів (фізичний адресний простір) – дуже важливий аспект.

Але введення віртуальної пам'яті дозволяє вирішувати іншу, не менш важливе завдання – забезпечення контролю доступу до окремих сегментів пам'яті і, зокрема, захист призначених для користувача програм один від одного і захист ОС від призначених для користувача програм. Кожен процес працює зі своїми віртуальними адресами, трансляцію яких у фізичних виконує апаратура комп'ютера. Таким чином, призначений для користувача процес позбавлений можливості безпосередньо звернутися до сторінок основної пам'яті, зайнятих інформацією, що відноситься до інших процесів.

Наприклад, 16-розрядний комп'ютер PDP-11/70 з 64 Кбайт логічної пам'яті міг мати до 2 Мбайт оперативної пам'яті. Операційна система цього комп'ютера проте підтримувала віртуальну пам'ять, яка забезпечувала захист і перерозподіл основної пам'яті між призначеними для користувача процесами.

Нагадаємо, що в системах з віртуальною пам'яттю ті адреси, які генерує програма (логічні адреси), називаються віртуальними, і вони формують віртуальний адресний простір. Термін «віртуальна пам'ять» означає, що програміст має справу з пам'яттю, відмінною від реальної, розмір якої потенційно більше, ніж розмір оперативної пам'яті.

Хоча відомі і чисто програмні реалізації віртуальної пам'яті, цей напрям отримав найбільш широкий розвиток після відповідної апаратної підтримки.

Слід зазначити, що устаткування комп'ютера бере участь в трансляції адреси практично у всіх схемах управління пам'яттю. Але у разі віртуальної пам'яті це стає складнішим унаслідок розривності відображення і багатовимірності логічного адресного простору. Можливо, найбільш істотним внеском апаратури в реалізацію описуваної схеми є автоматична генерація виняткових ситуацій за відсутності в пам'яті потрібних сторінок (page fault).

Будь-яка з трьох раніше розглянутих схем управління пам'яттю – сторінковою, сегментною і сегментно-сторінковою – придатна для організації віртуальної пам'яті. Найчастіше використовується сегментно-сторінкова модель, яка є синтезом сторінкової моделі і ідеї сегментації. Причому для тієї архітектури, в якій сегменти не підтримуються апаратний, їх реалізація – завдання не-залежного компоненту менеджера пам'яті.

Сегментна організація в чистому вигляді зустрічається рідко.





Дата публикования: 2014-11-04; Прочитано: 2455 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.007 с)...