Багатосегментна модель


Розширимо модель, розглянуту в попередньому розділі на випадок N сегментів.

Віртуальний простір процесу розбивається на сегменти, які нумеруються від 0 до N-1. Віртуальна адреса, таким чином, складається з двох частин: номери сегменту і зсуву в сегменті. Ці частини можуть або представлятися окремо кожна, або упаковуватися в одне адресне слово, в якому певне число старших розрядів інтерпретуватиметься як номер сегменту, а частина, що залишилася, - як зсув. У першому випадку сегменти можуть розміщуватися довільним чином у віртуальному адресному просторі. У другому випадку створюється враження плоского адресного простору з адресами від 0 до максимально можливої при даній розрядності віртуальної адреси, але в цьому просторі можуть бути дірки - віртуальні адреси для процесу недоступні - через відсутність відповідних сегментів або із-за сегментів, довжина яких менше максимально можливою.

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

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

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

Ріс.3.5. Трансляція адрес. Багатосегментна модель
Ріс.3.6. Зразкова структура дескриптора сегменту

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

Які переваги багатосегментної моделі пам'яті?

Найперша перевага полягає в тому, що у процесу з'являється можливість розмістити дані, що обробляються різним чином, в різних сегментах свого віртуального простору (так, в ОС Unix, наприклад, кожен процес має при початку виконання три сегменти: кодів, даних і стека). Кожному сегменту можуть бути визначені свої права доступу. Оскільки звернення до пам'яті можуть бути трьох видів: читання, запис і передача управління, то для опису прав доступу достатньо 3-бітового поля Read-Write-eXecute, кожен розряд якого визначає дозвіл один з видів доступу. Апаратні засоби більшості архітектури забезпечують контроль права доступу при трансляції адрес: поле прав доступу включається в дескриптор сегменту і, якщо вид звернення, що поступив, не дозволений, то виконується переривання-пастка "порушення доступу".

Інша важлива перевага багатосегментної моделі полягає в тому, що процес має можливість використовувати віртуальний адресний простір, розмір якого більший, ніж розмір доступної реальної пам'яті. Це досягається за рахунок того, що не обов'язково всі сегменти процесу повинні одночасно знаходитися в реальній пам'яті. Дескриптор кожного сегменту містить біт present, який встановлений в 1, якщо сегмент підкачаний в оперативну пам'ять, або в 0 - якщо сегмент витиснений з неї. Апаратура трансляції адрес перевіряє цей біт і при нульовому його значенні виконує переривання-пастку "відсутність сегменту" (segment falure). На відміну від більшості інших пасток, які в основному сигналізують про помилки, при яких подальше виконання процесу неможливе, ця не приводить до фатальних для процесу наслідків. ОС, обробляючи це переривання, знаходить образ витисненого сегменту на зовнішній пам'яті, і підкачує його в реальну пам'ять. Природно, що процес, що звернувся до витисненого сегменту, переводиться в очікування, це очікування може затягнутися, якщо у ОС є проблеми з ресурсом реальної пам'яті. Коли сегмент буде підкачаний, процес перейде в чергу готових і буде активізований знов з тієї команди, яка викликала переривання-пастку. У тих апаратних системах, які не обробляють біт присутності в дескрипторі сегменту, можна замість нього використовувати поле size: ОС повинна скидати це поле в 0 при витісненні сегменту і відновлювати при його підкачці.

Надзвичайно важливою перевагою багатосегментної моделі є можливість розділення (сумісного використання) сегментів процесами. Процеси можуть бути розроблені так, щоб віртуальні простори два або більш за процеси перекривалися в якихось областях. Процеси можуть використовувати загальний віртуальний простір для обміну даними. Реалізація цієї можливості в якійсь мірі залежить від апаратних засобів. У багатьох обчислювальних системах процес може працювати з декількома таблицями дескрипторів, оскільки в системі є декілька регістрів адрес таблиць (так в процесорі Intel 80286 і подальших передбачено дві таблиці, звані локальною і глобальною). Рішення, що використовує це властивість, полягає в тому, що дескриптор сегменту, що розділяється, поміщається в загальну для всіх процесів (глобальну) таблицю, такий сегмент може бути доступним для всіх процесів і має загальний віртуальний номер для всіх процесів. Інше рішення, можливе і за наявності тільки однієї таблиці для кожного процесу, полягає в тому, що для загального сегменту створюється по запису в таблиці кожного процесу, з ним що працює, для кожного процесу цей сегмент має свій віртуальний номер. Друге рішення представляється вдалішим з погляду захисту, оскільки, по-перше, доступ до сегменту мають тільки ті процеси, в таблицях яких створені відповідні дескриптори, по-друге, є можливість дати різним процесам разные права доступу до сегменту, що розділяється. Але за таке рішення доводиться платити тим, що при свопінгу сегменту, що розділяється, і при обліку його використання необхідно коректувати його дескриптори в таблицях всіх процесів.

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

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

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

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


Дата добавления: 2016-07-27; просмотров: 1707;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

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

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.007 сек.