
- •1. Віртуальна пам’ять. Види віртуальної пам’яті.
- •3 Види вірт.Памяті:
- •2. Перетворення лінійної адреси у фізичну при сторінковій організації пам’яті.
- •3. Визначення ос наявності або відсутності сегмента у пам’яті.
- •4. Визначення ос наявності або відсутності сторінки у пам’яті.
- •5. Механізм включення віртуальної пам’яті.
- •6. Плоска модель пам’яті.
- •9. Дескриптор сегменту. Види дескрипторів....
- •10. Таблиця сегментів переривань та її призначення.
- •11. Виключення. Види виключень.
- •12. Структури даних.Опис структур
- •13. Доступ до примірників структур даних.
- •14. Записи даних. Застосування записів даних.
- •15. Доступ до примірників записів даних. Див. Пункт 14.
- •16. Порядок виконання команд після повернення з обробки відмови.
- •17. Структура tss та її призначення. Бітова карта введення/виведення, її призначення.
- •18. Перемикання задач. Умови повернення в основну задачу.
- •19. Дескриптор сегменту. Види дескрипторів.
- •20. Класифікація дескрипторів користувача.
- •21. Шлюзи. Призначення шлюзів. Види шлюзів
- •22. Байт доступу. Його структура та призначення.
- •23. Система привілеїв та її застосування.
- •24. Захист пам’яті.
- •25. Рівні привілеїв дескриптора.
9. Дескриптор сегменту. Види дескрипторів....
Дескриптор — це 64-битная (восьмибайтная) структура даних, яка може зустрічатися в таблицях GDT і LDT. Дескриптор здатний описувати сегмент коду, сегмент даних, сегмент стану задачі, бути шлюзом виклику, пастки, переривання або задач. В GDT також може знаходитися дескриптор LDT.
Дескриптор сегмента даних або коду (детально розглянутий в главе 6.1)
байт 7: биты 31 – 24 бази сегмента
байт 6:
бит 7: бит гранулярности (0 — ліміт в байтах, 1 — ліміт в 4-кілобайтних одиницях)
бит 6: бит розрядності (0 — 16-битный, 1 — 32-битный сегмент)
бит 5: 0
бит 4: зарезервировано для операційної системи
биты 3 – 0: биты 19 – 16 ліміту
байт 5: (байт доступу)
бит 7: бит присутність сегмента
биты 6 – 5: уровень привілеїв дескриптора (DPL)
бит 4: 1 (тип дескриптора — не системний)
бит 3: тип сегмента (0 — даних, 1 — коду)
бит 2: бит підлеглості для коду, біт розширення вниз для даних
бит 1: бит дозволи читання для коду, біт дозволу запису для даних
бит 0: бит доступу (1 — до сегмента було звертання)
байт 4: биты 23 – 16 бази сегмента
байты 3 – 2: биты 15 – 0 бази
байты 1 – 0: биты 15 – 0 ліміту
Якщо в дескрипторі біт 4 байта доступу рівний 0, дескриптор називається системним. В цьому випадку біти 0 – 3 байта доступу визначають один з шістнадцяти можливих типів дескриптора (табл. 22).
Таблиця 22. Типи системних дескрипторів
0 |
Зарезервований тип |
8 |
Зарезервований тип |
||||||||||||
1 |
Вільний 16-битный TSS |
9 |
Вільний 32-битный TSS |
||||||||||||
2 |
Дескриптор таблиці LDT |
А |
Зарезервований тип |
||||||||||||
3 |
Зайнятий 16-битный TSS |
В |
Зайнятий 16-битный TSS |
||||||||||||
4 |
16-битный шлюз виклику |
З |
32-битный шлюз виклику |
||||||||||||
5 |
Шлюз задачі |
D |
Зарезервований тип |
||||||||||||
6 |
16-битный шлюз переривання |
Е |
32-битный шлюз переривання |
||||||||||||
7 |
16-битный шлюз пастки |
F |
32-битный шлюз пастки |
Дескриптори шлюзів
Дальні CALL або JMP на адресу з будь-яким зсувом і з селектором, вказуючим на дескриптор шлюзу виклику, приводять до передачі управління за адресою, указаною в дескрипторі. Звичайно такі дескриптори використовуються для передачі управління між сегментами з різними рівнями привілеїв (див. главу 10.7).
CALL або JMP на адресу з селектором, вказуючим на шлюз задачі, приводять до перемикання задач (див. главу 10.8).
Шлюзи переривань і пасток використовуються для виклику обробників відповідно переривань і виключень типу пастки (див. главу 10.5).
байты 7 – 6: биты 31 – 16 зсуви (0 для 16-битных шлюзів і шлюзу задачі)
байт 5: (байт доступу)
бит 7: бит присутність сегмента
биты 6 – 5: DPL — рівень привілеїв дескриптора
бит 4: 0
биты 3 – 0: тип шлюзу (3, 4, 5, 6, 7, В, З, Е, 7)
байт 4:
биты 7 – 5: 000
биты 4 – 0: 00000 або (для шлюзу виклику) число подвійних слів, які будуть скопійовані із стека зухвалої задачі в стек викликається
байты 3 – 2: селектор сегмента
байты 1 – 0: биты 15 – 0 зсуви (0 для шлюзу задачі)
Дескриптори TSS і LDT
Ці два типи дескрипторів застосовуються в багатозадачному режимі, про який розказано далі. TSS — сегмент стану задачі, використовуваний для зберігання всієї необхідної інформації про кожну задачу в багатозадачному режимі. LDT — таблиця локальних дескрипторів, своя для кожної задачі.
Формати цих дескрипторів співпадають з форматом дескриптора для сегмента коду або даних, за винятком того, що біт розрядності завжди рівний нулю і, природно, системний біт рівний нулю, і біти 3 – 0 байта доступу містять номер типу сегмента (1, 2, 3, 9, В). Команди JMP і CALL на адресу з селектором, відповідним TSS незайнятої задачі, приводять до перемикання задач.