процесора, але це не так. Воно не завжди показує розмір в байтах.
Байт прав доступу:
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0
P | DPL | S | Type | А
Біт P (present) – указує на присутність сегменту в пам'яті. Звернення до відсутнього сегменту викликає особливий випадок не присутності сегменту в пам'яті.
Двобітове поле DPL визначає рівень привілеїв сегменту.
Біт S (Segment) – будучи встановленим в 1, визначає сегмент пам'яті, до якого може дістати доступ на читання (запис) або виконання.
Три біти Type – залежно від біта S визначає або можливості читання/запису, виконання сегменту або визначає тип системних даних, бережених в селекторі. Докладніше це виглядає так:
Якщо біт S встановлений в 1, про поле Type ділиться на біти:
2 | 1 | 0
1 – код | Підлеглий сегмент коду | Допустиме зчитування
0 – дані | Розширяється вниз | Допустимий запис
Якщо сегмент розширюється вниз (це використовується для стекових сегментів) те поле межі показує адресу, вище за яку допустимий запис. Нижче запис недопустимий і викличе порушення меж сегменту.
Битий А (Accessed) встановлюється в 1, якщо до сегменту проводився звертання.
Якщо біт S встановлений в 0, то в сегменті знаходиться службова інформація визначувана полем Typе і бітом А.
TYPE | А | Опис
000 | 1 | TSS для i286
001 | 0 | LDT
001 | 1 | Зайнятий TSS для i286
010 | 0 | Шлюз виклику i286
010 | 1 | Шлюз задачі
011 | 0 | Шлюз переривання i286
011 | 1 | Шлюз виключення i286
100 | 1 | TSS для i386
101 | 1 | Зайнятий TSS i386
110 | 0 | Шлюз виклику i386
111 | 0 | Шлюз переривання i386
111 | 1 | Шлюз пастки i386
Решта комбінацій або недопустима, або зарезервована.
TSS – це сегмент стану задачі (Task state segment) про них ми поговоримо пізніше, можливо в наступному випуску.
Шостий байт дескриптора, крім старших біт межі, містить в собі декілька бітових полів.
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0
G | D | 0 | U | Межа 19-16
Біт G (Granularity) – визначає розмір елементів, в яких вимірюється межа. Якщо 0 – межа в байтах, якщо 1 – розмір в сторінках.
Біт D (Default size) – розмір операндів в сегменті. Якщо 0 – 16 біт. Якщо 1 – 32 біти.
Біт U (User) – доступний для користувача (вірніше для програміста операційної системи)
І знову захист
Трохи термінології:
Рівень привілеїв може бути від 0 (вищий) до 3 (нижчий). Отже підвищення рівня привілеїв відповідає його зменшенню в чисельному еквіваленті, пониження – навпаки.
У дескрипторі містяться біти DPL, які визначають максимальний рівень привілеїв для доступу до сегменту.
У селекторі міститься RPL – тобто запрошуваний рівень привілеїв.
RPL січного кодового сегменту (зберігається в регістрі CS) є рівнем привілеїв даного процесу і називається поточним рівнем привілеїв (CPL)
Прямі звернення до сегментів можливі при дотриманні наступних умов:
У випадку якщо запрошуваний рівень привілеїв більше поточного, то запрошуваний рівень знижується до поточного.
При зверненні до сегменту даних RPL селектора повинен не нижче за DPL сегмент.
При зверненні до сегменту коду можливо тільки при рівності CPL, RPL і DPL.
Якщо сегмент коду помічений як підлеглий, то для звернення до нього необхідно мати рівень привілеїв не нижче за рівень сегменту. При цьому виконання сегменту відбувається з поточним рівнем привілеїв.
Непрямі виклики можливі тільки через шлюзи при дотриманні наступних умов:
DPL шлюзу повинен не вище, ніж CPL сегменту, з якого проводиться виклик шлюзу.
DPL сегменту, на який указує шлюз, повинне не нижче ніж DPL шлюзу.
3. Тестування, налагодження, відновлення
Основний недолік оперативної пам'яті полягає в тому, що конструктивно досяжний її об'єм у багато разів менше ніж у дискової (поки що це було справедливо на всіх ступенях технічного прогресу). Розв'язати проблему збільшення об'єму оперативної пам'яті за рахунок дискової дозволяє віртуальна пам'ять, яку можна вважати кешуванням оперативної пам'яті на диску. Суть її полягає в тому, що програмам надається віртуальний простір оперативної пам'яті, за розмірами перевищуюче об'їм фізично встановленій оперативній пам'яті. Цей віртуальний простір розбитий на сторінки фіксованого розміру, а у фізичній оперативній пам'яті в кожний момент часу присутня тільки частина з них. Решта сторінок зберігається на диску, звідки операційна система може їх "підкачати" у фізичну на місце заздалегідь вивантажених на диск сторінок. Для прикладної програми цей процес прозорий (якщо тільки вона не критична до часу звернення до пам'яті). Для користувача цей процес помітний по роботі диска навіть в той момент, коли не потрібне звернення до файлів. Розплатою за майже безмірне збільшення об'єму доступної оперативної пам'яті є зниження середньої продуктивності пам'яті і деяка витрата дискової пам'яті на файл підкачки (Swap File). Природно, розмір віртуальної пам'яті не може перевищувати розміру диска (файл підкачки на декількох дисках звичайно не розміщують). Віртуальна пам'ять реалізується операційними системами (і оболонками) захищеного режиму (наприклад, OS/2, MS Windows) на основі апаратних засобів процесорів класу не нижче 286, а найбільш ефективно – 32-розрядних процесорів 386 і старше.
Віртуальна пам'ять (Virtual Memory) є програмно-апаратним засобом розширення простору пам'яті, програмі, що надається, як оперативна. Ця пам'ять фізично реалізується за допомогою оперативної і дискової пам'яті під управлінням відповідної операційної системи. Віртуальний простір пам'яті розбитий на сторінки фіксованого розміру, а у фізичній оперативній пам'яті в кожний момент часу