Принцип віртуальної пам'яті мікропроцесора i80286

Версія від 09:50, 10 березня 2012, створена Spam cleanup script (обговореннявнесок) (Cleaning up links to essaywritingservices.org)
(різн.) ← Попередня версія • Поточна версія (різн.) • Новіша версія → (різн.)

Віртуальна пам'ять

Процесор i80286 може безпосередньо адресувати до 16 Мбайтів фізичної пам'яті. Програми можуть вимагати для свого запуску об'єму пам'яті, що не існує у системі. Тоді операційна система може використати так звану віртуальну пам'ять. Основна ідея віртуальної пам'яті полягає у тому, щоб зберігати (та оновлювати) вміст великої віртуальної пам'яті на диску, "підкачуючи" окремі ділянки віртуальної пам'яті в реальну оперативну пам'ять. Можна, наприклад, зберігати усі використовувані програмою сегменти на диску, а у фізичну пам'ять записувати тільки сегменти, необхідні для виконання програми в даний момент. Операційна система веде облік сегментів, що знаходяться в пам'яті та на диску. Два поля дескриптора в полі доступу: біт присутності сегмента в пам'яті P і біт звертання до сегмента пам'яті A призначені для апаратної реалізації обліку сегментів. При використанні віртуальної пам'яті непотрібні у даний момент сегменти записуються на жорсткий диск, а звільнене місце використовується потрібними даними. У дескрипторі таких "непотрібних" сегментів, у полі Base указується розміщення сегмента на жорсткому диску, одночасно у полі доступу біт Р встановлюється в 1. Коли відбувається звертання до даних розміщених у сегменті з бітом Р = 1 у полі доступу, викликається спеціальне виключення (#NP), процедура обробки котрого зчитує потрібні дані з пам'яті, змінює дескрипторні таблицю, та повторно виконує команду, котра звернулась до вказаних даних.

Біт P поля доступів сегменту

На рис. 1 наведені формати поля доступу всіх типів дескрипторів: дескрипторів сегментів коду, сегментів даних і системних сегментів. У всіх дескрипторів три старших біти поля доступу мають однакове призначення.

Рис.1 Формати поля доступу дескриптора

Біт P призначений для організації віртуальної пам'яті. Біт P указує на присутність сегмента в пам'яті. Для тих сегментів, що знаходяться у пам'яті, цей біт повинен бути встановлений в 1. Будь-яка спроба програми звернутися до сегмента пам'яті, у дескрипторі якого біт P встановлений в 0, призведе до виключення (11). У процесі обробки виключення можливе або ігнорування звертання до сегмента, або зчитування даних з жорсткого диска і заповнення сегмента необхідними даними, або емуляція виконання команди, котра зчитувала дані цього сегмента, або аварійна зупинка програми.

Поле DPL займає два біти та задає атрибути привілей сегменту. Воно контролює можливість використання сегмента задачею. Четвертий біт визначає властивість сегмента. Якщо сегмент є сегментом даних, або коду біт рівний 1, якщо ж сегмент є системним - біт рівний 0. Загальним для усіх типів сегментів є також біт A (молодший біт поля доступу), котрий називають бітом доступності сегмента. Для всіх сегментів, до котрих було звертання, або виконувалась команда тестування селектора біт автоматично установлюється в 1. У випадку, коли звертань до сегмента ще не було біт установлюється в 0. Третій біт поля доступу сегментів коду та даних дозволяє розрізнити сегменти даних та коду. У сегментів коду цей біт рівний 1, у даних – 0. Біт С поля доступу сегментів колу визначає підпорядкованість сегментів. Якщо С = 0, то код з цього сегмента може виконуватись лише коли DPL = CLP. Такі сегменти називаються непідпорядкованими. У випадку коли С = 1, код з цього сегмента може виконуватись для всіх задач, якщо виконується умова CPL ≥ DPL. У такому випадку код буде виконуватись з рівнем привілеїв, що задавався бітами CPL, а не DPL. Поле доступу дескриптора сегментів коду містить також бітове поле R, яке називають бітом дозволу читання сегмента. Якщо цей біт встановлений в 1, програма може зчитувати вміст сегмента коду. У протилежному випадку процесор може тільки виконувати цей код. Дескриптори сегмента даних мають бітові поля W і D. Поле W називають бітом дозволу записування даних в сегмент. Якщо цей біт встановлений в 1, поряд з читанням можливе і записування даних у даний сегмент. В іншому випадку при спробі читання виконання програми буде перервано. Поле D задає напрямок розширення сегмента. Звичайний сегмент даних розширюється в область старших адрес (розширення вгору). Якщо ж у сегменті розміщений стек, розширення звичайно відбувається у зворотному напрямку – в область молодших адрес (розширення вниз). Для сегментів, у яких організуються стек, необхідно встановлювати поле D в 1. Дескриптори системних сегментів у чотирьох молодих бітах містять поле TYPE, що визначає тип системного сегмента.

Об'єм доступу фізичної і віртуальної пам'яті

Захищений режим передбачає розширений адресний простір фізичної і віртуальної пам'яті, механізми захисту пам'яті, нові операції з підтримки операційних систем і віртуальної пам'яті. Захищений режим забезпечує віртуальний адресний простір 1 Гбайт для кожної задачі, котрий відображається на фізичний адресний простір у 16 Мбайт. Віртуальний простір може бути більший фізичного, тому що будь-яке використання адреси, що не розподілена у фізичній пам'яті, створює виняткову ситуацію, котра обробляється операційною системою.

Посилання

"Мікропроцесорні та програмні засоби автоматизації" Медвідь В.Р., Козбур В.Р., Пісьціо В.П. Тернопіль 2010

Категорії