Керiвництво программиста
| Категория реферата: Рефераты по информатике, программированию
| Теги реферата: реферат, решебник по алгебре класс
| Добавил(а) на сайт: Smotrov.
Предыдущая страница реферата | 1 2 3 4 5 6 7 8 | Следующая страница реферата
Кожна з таблиць має відповідний регістр: GDTR, LDTR, IDTR. Регістр GDTR містить 48 розрядів (40 в 80286), з яких 32 (24 в 80386) задають базову адресу таблиці, а 16 розрядів вказують її обсяг в байтах мінус 1. Якщо подставити в молодші 3 розряду селектора нулі, то отримається зміщення дескриптора в таблиці. Це зміщення порівнюється з межею таблиці. В випадку, якщо зміщення виходить за межі таблиці, виробляється виключення. Якщо порушення межі немає, зміщення підсумовується з базовою адресою таблиці, в результаті утвориться лінійна адреса дескриптора. Дана перевірка і наступне формування адреси справедливі для всіх таблиць.
Регістр LDTR містить 16-разрядный покажчик, що визначає розміщення в
GDT дескриптора таблиці, що використається LDT. Дескриптор LDT містить 32-
розрядний (24-розрядний в 80286) базову адресу таблиці і її 16-розрядний
розмір, що при завантаженні регістру LDTR вибираються з GDT і зберігаються
в внутрішніх програмно недосяжних регістрах процесора.
Після вибору відповідного дескриптора формування лінійної адреси здійснюється шляхом додавання базової адреси, що міститься в дескрипторі, і відносної адреси, що утвориться в відповідності з що використаються засобом адресації.
Окрім базової адреси і розміру сегменту дескриптора визначають ряд інших важливих його атрибутів. В загальному вигляді формат дескриптора уявлений на рисунку 1.14.
В процесорі 80286 біти 63-48 зарезервовані і повинні бути рівним нулю.
В поле “доп. Атрибути” присутнє 4 біти:
. Біт дрібності G (біт 55) вказує, в яких одиницях заданий розмір сегменту: в байтах при G=0 або сторінках обсягом по 4 Кб при G=1. Таким чином, в процесорах 80386+ сегмент може мати розмір до 220*4Кб= 4Гб;
. Біт розрядність D (біт 54). Даний біт має сенс тільки для сегментів коду і стека. Для сегменту коду він задає розрядність операндів і адреси за замовчанням. Для сегменту стека він задає розрядність осередків стека, при D=1 для стекових операцій використовується регістр ESP, і осередок стека має 32 розряди, т. є. Навіть при вталкуванні в стек 16-розрядного слова ESP зменшиться на 4;
. Біт 53 передвизначений для майбутніх розширеннь і повинен містити 0;
. Біт 52 не використовується.
Байт доступу дескриптора визначає права доступу до сегменту ,що
вибирається. В залежності від вмісту сегменту байт доступу має різноманітні
формати (малюнок 1.15), хоча призначення ряду полів залишається однаковим.
Однакове призначення мають наступні поля:
. Біт присутності Р визначає наявність відповідного сегменту в пам'яті.
Якщо Р=0 (сегмент буде відстуній), те даний дескриптор не використовується для формування адрес. В цьому випадку вміст інших розрядів дескриптора може бути довільним. Якщо в регістр сегменту надходить селектор дескриптора, що є Р=0, те процесор генерує виключення
“відсутність сегменту”. Обработчик даного виключення може підвантажити необхідний сегмент з диску;
. Поле DPL вказує рівень привілей дескриптора. В залежності від співвідношення значень DPL, CPL (поточний рівень привілей) і RPL, що задається в молодших бітах селектора, дозволяється або забороняється звертання до даного сегменту. Таким чином забезпечується рівень ,що вимагається захисту сегменту;
. Системний біт S визначає роль що вибирається дескриптора в системі. При
S=1 дескриптор забезпечує звертання до сегментів кодів або даних.
Дескрипторы, що є S=0, служать для звертання до таблиць LDT, сегментів
TSS, або шлюзів для входу в інші задачі або програми, включаючи обработчики перериваннь. Такі дескриптори називаються системними.
Поле типу системного дескриптора визначає його тип. Типи системних дескрипторов наведені в таблиці 1.1.
Таблиця 1.1 Типи системних дескрипторов.
|Тип |Визначення |Тип |Визначення |
|0 |Не використовується |8 |Не використовується |
|1 |Доступний TSS 286 |9 |Доступний TSS 386+ |
|2 |Таблиця LDT |A |Зарезервирован |
|3 |Зайнятий TSS 286 |B |Зайнятий TSS 386+ |
|4 |Шлюз виклика 286 |C |Шлюз виклика 386+ |
|5 |Шлюз задачі |D |Зарезервирован |
|6 |Шлюз перериваннь 286 |E |Шлюз перериваннь 386+ |
|7 |Шлюз ловушки 286 |F |Шлюз ловушки 386+ |
В процесорі 80286 доступні тільки типи з 0 по 7.
Можна виділити три основних класу системних дескрипторів.
Дескриптори таблиць LDT (тип 2) забезпечують звертання до локальної таблиці дескрипторів для вибору сегментів.
Дескрипторы сегментів TSS (типи 1 3 9 В) використовуються при
переключенні задач в багатозадачному режимі. Біт 1 в байті доступу сегменту
TSS пазиваеться бітом зайнятості і вказує, є чи задача, що викликається
зайнятой. Цей біт дескриптора встановлюється в одиницю, коли процесор
виконує виклик задачі, і скидається в нуль при виконанні повернення до
попередньої задачі. Б зайнятості використовується для запобігання
повторного виклика вже працюючої задачі. Переключення на зайняту задачу
наводить до генерації виключення 13.
Відзначимо, що дескриптори LDT і TSS завжди повинні мати значення біта розрядності D=0.
Дескриптори шлюзів (типи 4-7, C, E, F) використовуються для звертання до програм і задач, а також при обробці перериваннь і ловушек.
Формати байта доступу для дескрипторів кодів і даних (S=1) показані на рисунку 1.15. Вони відрізняються значеннями б виконавчості Е: Е=1 для сегментів кодів і Е=0 для сегментів даних і стека.
Біт звертання А встановлюється в одиницю у разі звертання до сегменту т. є. При завантаженні відповідного дескриптора в сегментний регістр. Цей біт періодично перевіряється операційною системою, що реалізує віртуальну пам'ять, що таким чином виявляє незапитані сегменти, що є А=0. Сегменти, довгий час що залишаються незапитаними, виводяться з оперативної пам'яті на диск, звільняючи місце для інших сегментів.
Біт дозволу читання R вводиться для сегменту кодів і дозволяє при R=1 виробляти читання його вмісту. При R=0 допускається тільки вибірка вмісту цього сегменту для виконання через регістр CS. Спроба читання в цьому випадку викличе виключення 13. Відзначимо, що виключення цього типу виникне також при спробі запису в сегмент програм незалежно від значення біту R.
Біт підпорядкування З визначає додаткові правила звертання, що забезпечують захист сегментів програм.
Біт дозволу запису W вводиться для сегментів даних. Дозволяє при W=1 або забороняє при W=0 зміна вмісту цих сегментів. Читання з сегментів даних розв'язане завжди.
Біт направлення розширення ED визначає розміщення сегменту даних
відносно базової адреси. При ED=0 (розширення вверх) дані в сегменті
розміщуються в направленні зростання адрес від базової адреси до межі. При
ED=1 (розширення вниз) дані в сегменті розташуються в направленні зменшення
адрес. Таким чином, при розширенні вверх відносна адреса осередка сегменту
повинна бути менш або рівна значенню розміру сегменту, при розширенні вниз
відносна адреса повинна бути більше розміру сегменту.
Захист пам'яті.
Процесор має спеціальні засоби, що забезпечують в захищеному режимі захист пам'яті від несанкціонованого доступу. Для захисту інформації, що зберігається в сегментах пам'яті, використовується система привілей, що регулює доступ до того або іншого сегменту в залежності від рівня його захищеності і від ступеню важливості запитання. В процесорі встановлені чотири рівня привілей PL, що задаються номерами від 0 до 3. Найбільш привілейованим є рівень з меншим номером. Ступінь захищеності сегменту також має чотири рівня, що схематичні подаються в вигляді вкладених колець захисту (малюнок 1.16).
Відповідні рівні захищеності ілюструються на прикладі сегментів кодів.
Наименее захищеними є програми користувача, для яких виділяється рівень з
номером 3. Рівні з 0 по 2 відводяться для системних програм.
В відповідності з рівнями привілей і захищеності встановлені наступні
правила доступу для сегментів кодів і даних.
1. Дані з сегменту, що є рівень захисту PL можуть бути вибрані програмою, що є такий же або більш високий рівень привілей.
2. Сегмент кодів (процедура), рівень ,що є захисту PL, може бути викликаний програмою, що є такий же або більш низький рівень привілей.
Необхідно відзначити, що правило 2 не виконується при викликові сегментів кодів, що є встановлений біт підпорядкованості С=1 в байті доступу дескриптора.
Рекомендуем скачать другие рефераты по теме: сочинение сказка, 2 класс изложение.
Категории:
Предыдущая страница реферата | 1 2 3 4 5 6 7 8 | Следующая страница реферата