Проблеми реалізації віртуальної пам’яті. Фрагментація пам’яті



Основна проблема, що виникає у разі використання віртуальної пам’яті, стосується ефективності її реалізації. Оскілки перетворення адрес необхідно робити під час кожного звертання до пам’яті, недбала реалізація цього перетворення може призвести до найгірших наслідків для продуктивності всієї системи. Якщо для більшості звертань до пам’яті система буде змушена насправді звертатися до диска (який у десятки тисяч разів повільніший, ніж основна пам’ять0, працювати із такою системою стане практично неможливо.

Ще однією проблемою є фрагментація пам’яті, що виникає за ситуації, коли неможливо використати вільну пам’ять. Розрізняють зовнішню і внутрішню фрагментацію пам’яті (рис. 8.2).

Рис. 8.2. Зовнішня і внутрішня фрагментація

Зовнішня зводиться до того, що внаслідок виділення і наступного звільнення пам’яті в ній утворюються вільні блоки малого розміру – діри (holes). Через це може виникнути ситуація, за якої неможливо виділити неперервний блок пам’яті розміру N, оскільки немає жодного неперервного вільного блоку, розмір якого S³N, хоча загалом обсяг вільного простору пам’яті перевищує N. Так, на рис. 8.2 для виконання процесу Р5 місця через зовнішню фрагментацію не вистачає.

Внутрішня фрагментація зводиться до того, що за запитом виділяють блоки пам’яті більшого розміру, ніж насправді будуть використовуватися, у результаті всередині виділених блоків залишаються невикористовувані ділянки, які вже не можуть бути призначені для чогось іншого.

Логічна і фізична адресація пам’яті

Найважливішими поняттями концепції віртуальної пам’яті є логічна і фізична адресація пам’яті.

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

Фізична адреса – адреса, якою оперує мікросхема пам’яті. Прикладна програма в сучасних комп’ютерах ніколи не має справи з фізичними адресами. Спеціальний апаратний пристрій MMU (memory management unit – пристрій керування пам’яттю) відповідає за перетворення логічних адрес у фізичні. Сукупність усіх доступних фізичних адрес становить фізичний адресний простір. Отже, якщо в комп’ютері є мікросхеми на 128 Мбайт пам’яті, то саме такий обсяг адресують фізично. Логічно зазвичай адресують значно більше пам’яті.

Найпростіша схема перетворення адрес зображена на рис. 8.3.

Рис. 8.3. Перетворення логічних адрес пам’яті у фізичні адреси

Специфіку перетворення логічних адрес у фізичні визначають різні підходи до керування оперативною пам’яттю.

Підхід базового та межового регістрів

Під час реалізації віртуальної пам’яті необхідно забезпечити захист пам’яті, переміщення процесів у пам’яті та спільне використання пам’яті кількома процесами.

Одним з найпростіших способів задовольнити ці вимоги є підхід базового та межового регістрів. Для кожного процесу в двох регістрах процесора зберігають два значення – базової адреси (base) і межі (bounds). Кожний доступ до логічної адреси апаратно перетворюються у фізичну адресу шляхом додавання логічної адреси до базової. Якщо отримувана фізична адреса не потрапляє в діапазон (base, base+bounds), вважають, що адреса невірна, і генерують помилку (рис. 8.4).

Рис. 8.4. Використання базового і межового регістрів

Такий підхід є найпростішим прикладом реалізації динамічного переміщення процесів у пам’яті. Усі інші підходи є різними варіантами розвитку цієї схеми. Наприклад, те, що кожний процес у разі використання цього підходу має свої власні значення базового і межового регістрів, є найпростішою реалізацією концепції адресного простору процесу, яка ґрунтується на тому, що кожний процес має власне відображення пам’яті.

Для організації захисту пам’яті в цій ситуації необхідно, щоб застосування користувача не могли змінювати значення базового і межового регістрів. Достатньо інструкції такої зміни зробити доступними тільки у привілейованому режимі процесора.

До переваг цього підходу належать простота, скромні вимоги до апаратного забезпечення (потрібні тільки два регістри), висока ефективність. Однак сьогодні його практично не використовують через низку недоліків, пов’язаних насамперед з тим, що адресний простір процесу все одно відображається на один неперервний блок фізичної пам’яті: незрозуміло, як динамічно розширювати адресний простір процесу: різні процеси не можуть спільно використовувати пам’ять; немає розподілу коду і даних.

За такого підходу для процесу виділяють тільки одну пару значень «базова адреса-межа». Природним розвитком цієї ідеї стало відображення адресного простору процесу за допомогою кількох діапазонів фізичної пам’яті, кожен з яких задають власною парою значень базової адреси і межі. Так виникла концепція сегментації пам’яті.

Сегментація пам’яті


Дата добавления: 2018-04-05; просмотров: 647; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!