Якщо цільовий сегмент є сегментом стека, то правило перевірки має вид
CPL-DPL=RPL.
У випадку його порушення також виникає виключення. Оскільки стек може використовуватися в кожнім сегменті коду і всього є чотири рівні привілеїв коду, то використовуються і чотири стеки. Сегмент стека, адресований регістром SS, повинний мати той же рівень привілеїв, що і поточний сегмент коду.
Правила для передачі керування, тобто коли здійснюється міжсегментний перехід з одного сегмента коду на інший сегмент коду, трохи складніше. Якщо для переходу з одного сегмента даних на інший сегмент даних вважається припустимим обробляти менш привілейовані сегменти, то передача керування з високо привілейованого коду на менш привілейований код повинна контролюватися додатково. Іншими словами, код операційної системи не повиннен довіряти коду прикладних задач. І навпаки, не можна просто так давати задачам можливість виконувати високо привілейований код, хоча потреба в цьому є завжди (адже багато функцій, у тому числі і функції введення/виведення, вважаються привілейованими і повинні виконуватися тільки самою ОС). Для реалізації можливостей передачі керування в сегменти коду з іншими рівнями привілеїв уведений механізм шлюзування, що ми коротенько розглянемо нижче. Отже, якщо DPL = CPL, то перехід в інший сегмент коду можливий. Більш докладний розгляд порушених питань за задумом авторів виходить за рамки дійсного підручника. Тут ми розглянемо тільки основні ідеї.
Механізм шлюзів для передачі керування на сегменти коду з іншими рівнями привілеїв.
Оскільки міжсегментні переходи контролюються з використанням рівнів привілеїв і існує потреба в передачі керування з одного рівня привілеїв на інший рівень, у мікропроцесорах i80x86 реалізований механізм шлюзів, що ми пояснимо за допомогою мал. 3.5. Шлюзування дозволяє організувати звертання до так званих підлеглих сегментів коду, що виконують функції, які часто зустрічаються і повинні бути доступні багатьом задачам, що розташовуються на тім же чи більш низькому рівні привілею.
Дата добавления: 2016-07-27; просмотров: 1979;