1.2.     Формування глобальної дескрипторної таблиці.

 

Сегментація пам'яті, тобто розбивка пам'яті на окремі блоки, називані сегментами, здійснюється по-різному в реальному і захищеному режимах.

У захищеному режимі атрибути сегментів, що задають місце розташування сегмента в загальному адресному просторі, його розмір і особливості доступу до нього, представлені у виді 8-байтної структури даних, називаної дескриптором. Дескриптори зберігаються в пам'яті у виді дескрипторних таблиць. Дескриптори сегментів коду, стека, даних, а також системні дескриптори, знаходяться в глобальної дескрипторної таблиці - GDT (Global Descriptor Table).

При багатозадачний роботі кожна задача може мати свої сегменти коду, стека і даних, недоступні для інших задач. У цьому випадку дескриптори цих сегментів містяться в локальну дескрипторну таблицю - LDT (Local Descriptor Table), що може бути формована, якщо це необхідно, для кожної задачі.

Дескриптори оброблювачів переривань зберігаються дескрипторної таблиці переривань - IDT (Interrupt Descriptor Table).

У реальному режимі для опису атрибутів сегмента дескриптор

не потрібно, тому що базова адреса сегмента (зменшений у 16 разів) зберігається в сегментному регістрі, границя сегмента (64 Кб - 1) фіксована і завжди може бути зроблений доступ (запис і читання)

до сегмента.

1.3.     Структура дескриптора сегмента.

Формат дескриптора сегмента для МП починаючи з 80386, що має наступні полючи :

Границя сегмента, рівна розміру сегмента, зменшеному на 1, і його базову адресу займають у дескрипторі по двох полючи : границя - байти 0,1 і молодші 4 розряди байта 6, базовий адреса – байти 2-4 і 7 дескриптора сегмента.

Наявність двох полів для границі і базової адреси сегмента зв'язано з забезпеченням сполучності програм, написаних для МП 80286, з наступними МП: молодші шістьох байтів дескриптора в цьому випадку цілком збігаються з дескриптором МП 80286.

Біти старшої частини байта 6 дескриптора мають наступне призначення:

G (Granularity) - біт дрібності вказує, у яких одиницях задана границя сегмента: при G=0 - у байтах, при G=1 - у сторінках обсягом по 4 Кбайт. Таким чином, сегмент може мати розмір до 1 Мбайт (2^20) при G=0 і до 4 Гбайт (2^32) при G=1. Коли границя задана в 4 Кб одиницях, те молодші 12 розрядів зсуву не беруть участь у порівнянні при перевірці виходу зсуву за зазначену границю сегмента.

D/B (Default size/Big) - біт розміру за замовчуванням визначає для сегмента коду розрядність формованої відносної адреси й операнда : при D=0 - 16 розрядів, при D=1 - 32 розряду. Розрядність, прийнята за замовчуванням може бути змінена за допомогою префікса розрядності даних (66h) чи адреси (67h).

Для сегмента стека цей біт називається B і визначає наступне:

• якщо сегмент стека визначена як сегмент даних, тобто ED=0, то при B=1 розміри слова стека і регістра ESP рівні 32 розрядам;

• якщо сегмент стека розширюється вниз (ED=1), то B також визначає розмір стека: при B=0 він дорівнює 64 Кб, при B=1 - 4 Гб.

Біт X може бути використаний чи системою користувачем за своїм розсудом (цей біт мікропроцесором не обробляється).

Байт доступу дескриптора визначає права доступу до обираного сегмента і, у залежності від типу сегмента, має кілька форматів.

 Біти і полючи байта доступу мають наступне призначення:

P(Present) - біт присутності визначає наявність відповідного

сегмента (P=1) чи його відсутність (P=0) у пам'яті. Якщо в регістр сегмента занесений селектор дескриптора, що має Р=0, то при зверненні до цього сегмента виникає переривання 11;

DPL (Descriptor Privilege Level) - рівень привілеїв дескриптора вказує на ступінь захисту сегмента при доступі до нього;

S (System) - системний біт визначає вид обираного дескриптора: S=0 означає, що це дескриптор системного сегмента й у поле TYPE указується його тип ;

E (Execute) - біт “выполняемости” визначає, чи можна сегмент виконати: E=1 означає, що це сегмент коду, E=0 означає, що це чи сегмент даних, чи стека;

А (Accessed) - біт доступу встановлюється апаратно при доступі до сегмента, т.ч. при завантаженні відповідного селектора в сегментний регістр;

R (Read) - біт дозволу зчитування використовується для сегмента коду і дозволяє при R=1 зчитування його вмісту. При R=0 спроба зчитування приводить до виникнення переривання 13 (те ж відбувається при спробі запису в сегмент коду незалежно від R);

C (Conforming) - біт підпорядкування визначає додаткові правила звертання із сегментом коду (див. роздягнув 12 “ Захист пам'яті”;

W (Write) - біт дозволу запису використовується для сегмента даних і дозволяє (при W=1) чи забороняє (при W=0) зміна умісту сегмента даних. При порушенні викликається переривання 13. Дескриптор сегмента стека обов'язково повинна мати W=1;

ED (Expand Down) - біт напрямку розширення визначає, як буде вказуватися границя сегмента даних: при ED=0 (расширениe нагору) дані в сегменті розміщаються в напрямку зростання адрес від базової адреси сегмента до його границі, зазначеної в дескрипторі; при ED=1 (расширення униз) дані в сегменті розташовуються в напрямку зменшення адрес. Це реалізується в сегментах стека, де дані розміщаються починаючи з осередку, адреса який дорівнює базовому, збільшеному на максимальний розмір сегмента (64 Кб чи 4 Гб у залежності від біта B дескриптора). Інші осередки стека мають менші адреси, аж до нижньої границі стека, рівній сумі базової адреси сегмента і його границі, зазначеної в дескрипторі.

Біти P і A байта доступу дескриптора сегмента можуть бути використані операційною системою (ОС) для організації віртуальної пам'яті. ОС періодично переглядаючи (і скидаючи) біти A дескрипторів усіх сегментів, визначає час останнього доступу до кожного сегмента. Якщо сегмента, до якого виконується звертання, немає в пам'яті (P=0), виробляється відповідне переривання, і операційна система, обробляючи це переривання, зчитує цей сегмент із магнітного диска в пам'ять. І, якщо в пам'яті немає для цього вільного місця, з її віддаляється на диск саме той сегмент, що довше всього залишався незатребуваним.


Информация о работе «Програма модифікуюча команди, які використовуються в захищеному режимі»
Раздел: Информатика, программирование
Количество знаков с пробелами: 47456
Количество таблиц: 8
Количество изображений: 0

Похожие работы

Скачать
97603
5
0

обачив світло спрощений варіант процесора Pentium II, назва ,що отримала Celeron. В ньому вдвічі зменшений вторинний кеш і, немовби, прибрана підтримка багатопроцесорних систем. Однак шляхом “хірургічного” втручання підтримку багатопроцесорності можна повернути. Це пояснюється тим, що в Celeron застосоване ядро Pentium II без будь-яких змін. В 1999 році з'явився процесор Pentium III. В ньому ...

Скачать
98338
2
0

... і друку інформації про конфігурацію системи. ·             Backup. Засоби архівування даних призначені для резервного копіювання інформації на локальний носій на магнітній стрічці. Операційна система Windows NT завжди володіла прекрасними і широко застосовними на практиці можливостями захисту. Однократна реєстрація в домені Windows NT надає користувачам доступ до ресурсів всієї корпоративної ...

Скачать
72476
0
0

... . Користувач може вільно робити резервні копії й переносити програму з одного комп'ютера на інший, переносячи з собою ключ. [3] Деякі питання розкриття і розслідування злочинів у сфері комп’ютерної інформації Правоохоронні органи неготові до адекватного протистояння й активної боротьби з цим вже не новим соціальним явищем. Цей вид злочинності завдає величезних збитків власникам і користувачам ...

Скачать
114386
2
2

... передбаченою. 3. Генерація гамми не повинна бути дуже трудомісткою. Слід зазначити, що алгоритми криптосистем з відкритим ключем (СВК) можна використовувати за трьома напрямками: 1. Як самостійні засоби захисту даних, що передаються чи зберігаються. 2. Як засіб для розподілу ключів. Алгоритми СВК більш трудомісткі, ніж традиційні криптосистеми. Обмін великими інформаційними потоками здійснюють ...

0 комментариев


Наверх