Базові адреси таблиць глобальних i локальних дескрипторів

Базові адреси таблиць глобальних i локальних дескрипторів

Під час виконання поточного завдання базові адреси таблиць глобальних i локальних дескрипторів містяться в спеціальних регістрах. При завантаженій селектора в сегментний регістр за другим розрядом поля Т визначається тип таблиці: якщо Г = 0, то таблиця глобальна, якщо Т = 1, то таблиця локальна.


Відповідно до таблиць обирається i тип віртуальної пам’яті Старші 13 розрядів селектора (індекс) визначають змінення дескриптора, що викликається, в таблиці стосовно бази. Якщо виконуються вci привілеї (поточний i запитуваний рівні достатні для доступу), дескриптор зчитується з таблиці й завантажується в спеціальний ремонт ноутбуков програмно недоступний нa6ip регістрів — кеш-пам’ять сегментних дескрипторів, що складається з чотирьох 48-розрядних регістрів. При звернені до пам’яті виконавча адреса ЕА порівнюється з обмеженням. Якщо межа сегмента не порушна, то фізична адреса формується як сума 24-розрядної базової адреси сегмента i виконавчої адреси. При цьому можна задавати сегменти даних, що «зростають» вгору, i сегменти стека, що «зростають» донизу. За цією адресою i «вилучається» код даних з пам’яті. У разі відсутності сегмента у фізичній пам’яті настає виняткова подія — «немає сегмента», за якої керування передається операційній системі для «Підкачки» сегмента iз зовнішнього носія. Після запису сегмента у фізичну пам’ять керування повертається в програму користувача, i операція зчитування (запису) повторюється.

Три розряди (поле Туре) в байті доступу сегмента визначають допустимі дії з кодами, розташованими в сегменті Один з розрядів задає тип сегмента (дат чи коди програми). Для сегмента даних можливий захист від запису. Для сегмента програмних кодів забезпечується захист від зчитування i (чи) виконання завдання з нижчим пріоритетом. Поле DPL визначає один з 4 рівнів привілеїв одного сегмента. Найбільш привілейованим є нульовий рівень. Він призначений для сервисный центр ядра операційної системи, найнижчий рівень надається завданням користувача. Рівень привілеїв поточного завдання визначається місткістю поля RPL у сегментному регістрі CS програмних кодів. При намаганні завантажити новий селектор у сегментний регістр даних DS відбувається апаратне порівняння поточного рівня (RPL 13 CS), рівня, що запитується (RPL \з селектора) i рівня доступу (DPL з байта доступу дескриптора). Якщо поточний та запитуваний рівні менші чи такі caмi, то завдання одержує доступ до сегмента даних.

Міжсегментні передачі керування, зокрема виклики Підпрограм i повернення з них, обробка переривань i винятків, виконуються тільки через спеціальні шлюзи (date), які теж задаються своїми дескрипторами. Формат дескриптора шлюзу подібний дескрипторові сегмента. Передача керування з сервис по ремонту ноутбуков менш привілейованої програми в ділянку з більшими привілеями поза шлюзами неможлива i зумовлює відповідний виняток.

 




Пожалуйста, оставьте комментарий

  1. Traignimpaing сказал:

    дуже цікаво, спасибі

Оставить комментарий

You must be logged in to post a comment.