Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Theme07.doc
Скачиваний:
5
Добавлен:
21.12.2018
Размер:
429.57 Кб
Скачать

Мал. 7.6 Процес отримання лінійної адреси команди.

4. Підтримка сторінкового способу організації віртуальної пам'яті.

При створенні мікропроцесора i80386 розробники зштовхнулися з дуже серйозною проблемою в реалізації сторінкового механізму. Справа в тім, що мікропроцесор має широку шину адресу — 32 біта — і виникає питання про розбивку всієї адреси на поле сторінки і поле індексу. Якщо велику кількість бітів адреси відвести під індекс, то сторінки стануть дуже великими, що спричинить великі втрати і на фрагментацію, і на операції введення/виведення, зв'язані з заміщенням сторінок. Хоча кількість сторінок сталася б при цьому менше, і накладні витрати при їхній підтримці теж би зменшилися. Якщо ж розмір сторінки зменшити, то велике поле номера-сторінки привело б до появи величезної кількості можливих сторінок і необхідно було або вводити якісь механізми контролю за номером сторінки (для того, щоб він не виходив за розміри таблиці сторінок), або створювати ці таблиці максимально можливого розміру. Розробники пішли по шляху, при якому розмір сторінки все-таки невеликий (він обраний рівним 212 = 4096 = 4К), а поле номера сторінки завбільшки 20 бітів, у свою чергу, розбивається на два поля і здійснюється двохетапна (двохкрокова) сторінкова трансляція.

Для опису кожної сторінки створюється відповідний дескриптор. Довжина дескриптора обрана рівною 32 бітам: 20 бітів лінійної адреси визначають номер сторінки (власне кажучи — її адресу, оскільки додавання до нього (приписування як молодші розряди) 12 нулів приводить до визначення початкової адреси сторінки), а інші біти розбиті на наступні поля, що зображені на мал. 3.7. Як видно, три біти дескриптора зарезервовані для використання системними програмістами при розробці підсистеми організації віртуальної пам'яті. З цими бітами мікропроцесор сам не працює.

Мал. 7.7 Дескриптор сторінки.

Насамперед, мікропроцесор аналізує самий молодший біт дескриптора — біт присутності, тому що якщо поле present дорівнює нулю, те це означає відсутність даної сторінки в оперативній пам'яті, і така ситуація призводить до переривання в роботі процесора з передачею керування відповідній програмі, що повинна буде завантажити викликану сторінку. Біт dirty — «брудний» — призначений для оцінки, що дану сторінку модифікували і при заміщенні цього сторінкового кадру наступним її необхідно зберегти в зовнішній пам'яті. Біт звертання (access) свідчить про те, що до даної таблиці чи сторінки здійснювався доступ. Він використовується для визначення сторінок), що буде брати участь у заміщенні при використанні дисциплін LRU чи LFU. Нарешті, перший і другий біти використовуються для захисту пам'яті.

Старші 10 бітів лінійної адреси визначають номер таблиці сторінок (раgе table entry, РТЕ), з якої за допомогою других 10 бітів лінійної адреси вибирається відповідний дескриптор віртуальної сторінки. І вже з цього дескриптора вибирається номер фізичної сторінки, якщо дана віртуальна сторінка відображена зараз на оперативну пам'ять. Ця схема визначення фізичної адреси по лінійному зображена на мал. 3.8.

Чорна таблиця, що ми індексуємо першими (старшими) 10 бітами лінійної адреси, названа таблицею каталогів таблиць сторінок (раge directory entry PDE). Її адреса в оперативній пам'яті визначається старшими 20 бітами керуючого регістра CR3.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]