Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lec 1.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
181 Кб
Скачать
☆

0000H: 0000h  [ сегмент: зміщення ]  fffFh: 000Fh

Приклад. Маєм логічну адресу < 1234h: 0123h >

сегментна компонента

компонента зміщення

Фізична адреса визначається по наступній схемі:

20 розрядів

16розрядів

1234h

сегмент

0000

+ +

0000

зміщення

16 розрядів 00123h

12453h

фізична адреса

10 розрядів

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

Сегменти, як раніше зазначалось, можуть починатися тільки з фізичної адреси, який кратний 16 байтам.

Виділяють два основних недоліки схеми адресації пам’яті реального режиму:

  • обмежений адресний простір (до 1 Мбайта і приблизно 64 Кб старшої області пам’яті для CPU 286, 386, 486…)

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

Адресація пам’яті в реальному режимі

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

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

Селектор

Зміщення

+

базовий

адрес

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

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

Як уже зазначалось – операційні системи, що використовують реальний режим роботи процесора не захищені від прикладних програм. Підсистема управління пам’яттю в реальному режимі ґрунтується на розбитті всієї пам’яті на участки, на початку яких розміщаються блоки управління пам’яттю MCB (Memory Control Block). При старті програми DOS виділяє їй потрібну кількість блоків і загружає відповідним чином сегментні регістри. Якщо програма не змінює значення сегментних регістрів – то вона працює тільки з тими сегментами пам’яті які їй виділено. Однак ніщо не заважає любій програмі загрузити сегментні регістри своїми значеннями, в тому числі і адреси і адреси сегментів самої операційної системи.

В захищеному режимі реалізовано більш надійну схему захисту операційної системи і програм один від одного. В цій схемі використовуються пріоритети 4-ох рівнів від 0 до 3. Найбільші привілеї відповідають рівню 0. Як правило такими привілеями володіє ядро операційної системи (0). Мінімальні пріоритети у користувацьких програм – рівень 3.

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

3 кільце 0 – ядро операційної системи, системні

2 драйвери.

1 кільце 1 – програми обслуговування апаратури,

драйвери, програми, що працюють

  1. з портами вводу/виводу комп’ютера.

кільце 2 – системи управління базами даних, розширення операційної системи.

кільце 3 – прикладні програми, що записуються користувачем.

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

Якщо програма спробує отримати доступ до більш привілегійованого сегменту пам’яті то її виконання буде перервано.

Нескладні програми (системи) можуть використовувати не всі кільця, а тільки деякі чи навіть одне.

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