- •Тема 1: Основні елементи апаратних засобів комп’ютера. Пам’ять, одиниці об’єму пам’яті. Реальний та захищений режим роботи процесора
- •Пристрій керування шиною (контролер шини)
- •Характеристика та загальна структура мікропроцесорів
- •Регістри загального призначення Регістри загального призначення використовуються для будь-яких операцій без обмежень, але мають і свої спеціальні призначення
- •Регістр командного показчика
- •Регістр прапорців
- •Пам’ять, виділення пам’яті, біти, байти, сегменти, регістри
- •Реальний та захищений режими роботи
- •Адресація пам’яті в реальному режимі
- •0000H: 0000h [ сегмент: зміщення ] fffFh: 000Fh
- •Адресація пам’яті в реальному режимі
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 – програми обслуговування апаратури,
драйвери, програми, що працюють
з портами вводу/виводу комп’ютера.
кільце 2 – системи управління базами даних, розширення операційної системи.
кільце 3 – прикладні програми, що записуються користувачем.
Запущена програма отримує від операційної системи поточний рівень пріоритету, який вона може проаналізувати на основі вмісту регістру CS. Перед тим як програма звернеться до сегменту даних, вона повинна загрузити один із сегментних регістрів селектора, що відповідає потрібному сегменту даних. В селекторі вказується рівень пріоритету з яким хоче працювати програма (Requested Privilege Level). Програмі буде надано відповідний доступ до сегменту тільки в тому випадку коли рівень пріоритету дескриптора сегменту, що запрошується більший, або рівний найбільшому із значень поточного рівню пріоритету і рівню пріоритету, що запрошується.
Якщо програма спробує отримати доступ до більш привілегійованого сегменту пам’яті то її виконання буде перервано.
Нескладні програми (системи) можуть використовувати не всі кільця, а тільки деякі чи навіть одне.
