Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

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




Розширимо модель, розглянуту в попередньому розділі на випадок 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 і подальших передбачено дві таблиці, звані локальною і глобальною). Рішення, що використовує це властивість, полягає в тому, що дескриптор сегменту, що розділяється, поміщається в загальну для всіх процесів (глобальну) таблицю, такий сегмент може бути доступним для всіх процесів і має загальний віртуальний номер для всіх процесів. Інше рішення, можливе і за наявності тільки однієї таблиці для кожного процесу, полягає в тому, що для загального сегменту створюється по запису в таблиці кожного процесу, з ним що працює, для кожного процесу цей сегмент має свій віртуальний номер. Друге рішення представляється вдалішим з погляду захисту, оскільки, по-перше, доступ до сегменту мають тільки ті процеси, в таблицях яких створені відповідні дескриптори, по-друге, є можливість дати різним процесам разные права доступу до сегменту, що розділяється. Але за таке рішення доводиться платити тим, що при свопінгу сегменту, що розділяється, і при обліку його використання необхідно коректувати його дескриптори в таблицях всіх процесів.




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


Дата добавления: 2014-12-23; Просмотров: 390; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.008 сек.