Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
zdolbickij_operacijni_sistemi-konspekt-2009.doc
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
3.06 Mб
Скачать

Сторінкова модель

Сторінкову організацію пам'яті легко представити як багатосегментну модель з фіксованим розміром сегменту. Такі сегменти називаються сторінками. Вся доступна реальна пам'ять розбивається на сторінкових кадрів (page frame), причому межі кадрів в реальній пам'яті фіксовані. Іншими словами, реальна пам'ять представляється як масив сторінкових кадрів. Віртуальна адреса складається з номера сторінки і зсуву в сторінці, система підтримує таблицю дескрипторів сторінок для кожного процесу. Дескриптор сторінки в основному подібний до дескриптора сегменту, але в нім може бути скорочена розрядність поля base, оскільки в нім зберігається не повна реальна адреса, а тільки номер сторінкового кадру, а необхідність в полі size взагалі відпадає, оскільки розмір сторінок фіксований. Проблема розміщення значно спрощується, оскільки будь-який сторінковий кадр підходить для розміщення будь-якої сторінки, необхідно тільки вести облік вільних кадрів. За рахунок цього сторінкова організація виявляється зручною навіть за відсутності свопінгу, оскільки дозволяє розмістити безперервний віртуальний адресний простір в несуміжних сторінкових кадрах. (Іноді для позначення свопінгу на рівні сторінок застосовують спеціальний термін "paging" - сторінковий обмін.) Зовнішні дірки в сторінковій моделі відсутні, зате з'являються внутрішні дірки за рахунок недовикористаних сторінок. За наявності в системі свопінгу нульове значення бита present викликає переривання-пастку "сторінкову відмову" (page falure) і підкачку сторінки в реальну пам'ять. Для обліку занятых/свободных сторінок підходить техніка бітової карти, але більшість ОС використовують як елементи карти (таблиці сторінкових кадрів) не биті, а куди складніші структури, з яких можуть складатися і багатозв'язкові списки (у тому числі і списки вільних кадрів).

Який розмір сторінки вигідніший - великий або малий? Міркування, які можуть вплинути на вибір розміру наступні:

  • при малих сторінках виходять менші внутрішні дірки;

  • при малих сторінках менше вірогідність сторінкової відмови (оскільки більше сторінок поміщаються в пам'яті);

  • при великих сторінках менші апаратні витрати (оскільки розбиття пам'яті на великі блоки обійдеться дешевшим);

  • при великих сторінках менші заголовні дірки і витрати на пошук і управління сторінками (таблиці мають менший розмір);

  • при великих сторінках вище ефективність обміну із зовнішньою пам'яттю.

Сегментно-сторінкова модель

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

Віртуальна адреса тепер складається з трьох частин - номери сегменту, номери сторінки в сегменті і зсуву в сторінці. Апарат трансляції адрес, представлений на Малюнку 3.8, принаймні, трьохкроковий:

  • регістр адреси дескриптора указує на таблицю сегментів, з неї вибирається дескриптор сегменту, а з останнього - адреса таблиці сторінок;

  • з таблиці сторінок вибирається дескриптор сторінки, а з нього - номер сторінкового кадру;

  • реальна адреса виходить складанням базової адреси сторінкового кадру із зсувом в сторінці.

Ріс.3.8. Трансляція адрес. Cегментно-страничная модель

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

Оскільки в моделі, приведеній на рис.3.8, кожен сегмент має власну таблицю сторінок, самі таблиці сторінок можуть займати значний об'єм в пам'яті. Просте вирішення цієї проблеми представляє Windows 3.x: у системі існує єдина таблиця сторінок. Сегментна частина трансляції адреси має, таким чином, на виході адресу загалом для всіх процесів віртуальному сторінковому просторі, об'єм якого перевищує об'єм реальної пам'яті не більш, ніж в 4 рази. Подібне ж, хоча і гнучкіше і захищеніше рішення представляє VSE: система забезпечує загальний об'єм віртуальної пам'яті (до 2 Гбайт), який розбивається на розділи (до 12 статичних і до 200 динамічних), сумарний об'єм адресних просторів всіх розділів не перевищує загального об'єму віртуальної пам'яті. Простота рішення, проте, може істотно позначатися на його ефективності: по-перше, із-за обмежень на розмір віртуальної пам'яті, по-друге, із-за необхідності виділяти суміжні дескриптори в таблиці сторінок для сторінок, суміжних у віртуальній пам'яті. Тому дійсно багатозадачні системи застосовують множинні таблиці сторінок і включають пам'ять, займану таблицями сторінок, в сторінковий обмін. Витіснення і завантаження приватних таблиць сторінок проводиться або виключно самою ОС (Unix), або ОС використовує для цього наявні апаратні засоби (так, ОС, орієнтовані на Intel-Pentium, використовують каталоги сторінок).

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]