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