- •2.1.2. Определение сегментов в процессоре с i486
- •2.1.3. Права доступа сегмента
- •2.1.4. Дескрипторные таблицы
- •2.1.5. Селекторы сегментов
- •2.1.6. Локальные дескрипторные таблицы
- •2.2. Страничная организация памяти
- •2.2.1. Структура страниц
- •2.2.2. Страничное преобразование адреса
- •2.2.4. Разрешение и запрещение страничного преобразования
- •2.2.6. Совместное действие
2.2. Страничная организация памяти
В Р-режиме или V-режиме процессор i486 поддерживает страничное преобразование адреса. Внутреннее устройство управления памятью (Memory Management Unit — MMU) наряду с обязательной сегментацией реализует еще один уровень косвенности в формировании физического адреса памяти. Основное применение страничного преобразования адреса связано с организацией виртуальной памяти, которая позволяет программисту использовать большее пространство памяти, чем физическая оперативная память. Такое средство «расширения» физической памяти давно применяется в больших компьютерах и миникомпьютерах.
Как и сегментация, страничная организация памяти связана с преобразованием виртуального адреса (которым теперь является линейный адрес с выхода устройства сегментации) в физический адрес, выдаваемый на внешнюю шину адреса. Но если в сегментации базовым объектом памяти является сегмент практически любого размера, то в страничном преобразовании базовым объектом памяти служит блок фиксированного размера 4 Кбайт, называемый страницей (page).
2.2.1. Структура страниц
Рис.2.13.
Страничная память а
- виртуальная, б - физическая
Понятие виртуальной памяти с заменой страниц по требованию подчеркивает тот факт, что прикладные программы не касаются процесса страничного преобразования адреса и могут использовать все адресное пространство. Процессор автоматически формирует особый случай неприсутствия (так называемое страничное нарушение), когда программа обращается к странице, отсутствующей в физической памяти. При обработке этого особого случая операционная система загружает затребованную страницу из внешней памяти (при необходимости отправляя ненужную страницу на диск).
Границы страниц следуют через одинаковые интервалы 4 Кбайт. В то же время границы сегментов являются произвольными, т.е. зависят от базового адреса конкретного сегмента. Строго говоря, границы сегментов и страниц не зависят друг от друга и не обязательно должны быть выравнены. Сегменты определяются дескрипторными таблицами GDT и LDT, а страницы определяются набором таблиц страниц (page table). Однако для повышения производительности процессора рекомендуется выравнивать небольшие сегменты (с размером 4 Кбайт и менее, например сегменты состояния задач TSS) так, чтобы они полностью находились в пределах одной страницы. Такое выравнивание гарантирует, что при загрузке одной страницы будет полностью загружен весь сегмент.
Для сегментов имеется четыре уровня привилегий 0, 1, 2 и 3. В страничной организации памяти есть всего два уровня привилегий, которые называются пользователем и супервизором. При этом уровень 3 считается уровнем пользователя (User), а уровни 0, 1 и 2 уровнем супервизора (Supervisor).
