Курсовая работа: Програма модифікуюча команди, які використовуються в захищеному режимі

не потрібно, тому що базова адреса сегмента (зменшений у 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), виробляється відповідне переривання, і операційна система, обробляючи це переривання, зчитує цей сегмент із магнітного диска в пам'ять. І, якщо в пам'яті немає для цього вільного місця, з її віддаляється на диск саме той сегмент, що довше всього залишався незатребуваним.

1.4. Виконання доступу до сегментів.

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

Сегментні регістри містять значення селекторів сегментів, що

К-во Просмотров: 412
Бесплатно скачать Курсовая работа: Програма модифікуюча команди, які використовуються в захищеному режимі