
- •9.1 Виртуальная память. Понятие
- •9.2 Виртуальная память. Основные концепции
- •9.3 Двухуровневая память
- •9.4 Поблочное отображение
- •9.5. Страничный способ организации памяти
- •9.5.1. Основные концепции
- •9.6. Сегментная организация
- •9.6.1. Основные концепции
- •9.6.2. Управление доступом в системах с сегментной организацией
- •9.7 Системы с комбинированной странично-сегментной организацией
- •9.7.1. Основные концепции
- •9.7.2. Динамическое преобразование адресов в системах со странично-сегментной организацией
- •9.8. Стратегии замещения сегментов (страниц) в памяти
- •9.9. Достоинства и недостатки способов организации памяти
- •9.9.1. Сегментный способ
- •9.9.2. Страничный способ
Какую работу нужно написать?
9.5. Страничный способ организации памяти
9.5.1. Основные концепции
Как мы уже сказали, при таком способе все фрагменты программы, на которые она разбивается (за исключением последней ее части), получаются одинаковыми. Одинаковыми полагаются и единицы памяти, которые мы предоставляем для размещения фрагментов программы. Эти одинаковые части называют страницами и говорят, что память разбивается на физические страницы, а программа — на виртуальные страницы. Часть виртуальных страниц задачи размещается в оперативной памяти, а часть — во внешней. Обычно место во внешней памяти, в качестве которой в абсолютном большинстве случаев выступают накопители на магнитных дисках (поскольку они относятся к быстродействующим устройствам с прямым доступом), называют файлом подкачки или страничным файлом (paging file). Иногда этот файл называют swap-файлом, тем самым подчеркивая, что записи этого файла — страницы — замещают друг друга в оперативной памяти. В некоторых ОС выгруженные страницы располагаются не в файле, а в специальном разделе дискового пространства. В UNIX-системах для этих целей выделяется специальный раздел, но кроме него могут быть использованы и файлы, выполняющие те же функции, если объема раздела недостаточно.
Рассмотри поблочное отображение в случае страничной организации памяти. Виртуальный адрес в страничной системе — это упорядоченная пара (р, d), где р — номер страницы в виртуальной памяти, a d - смещение в рамках страницы р, где размещается адресуемый элемент (рис. 9.8).
Рис. 9.8 Формат виртуального адреса в системе с чисто страничной организацией.
Процесс может выполняться, если его текущая страница находится в первичной памяти. Страницы переписываются из внешней памяти в первичную и размещаются в ней в блоках, называемых страничными кадрами и имеющих точно такой же размер, как поступающие страницы. Страничные кадры начинаются с адресов первичной памяти, кратных фиксированному размеру страницы (рис. 9.9). Поступающая страница может быть помещена в любой свободный страничный кадр.
Рис. 9.9 Разделение реальной памяти на страничные кадры
Динамическое преобразование адресов в системе со страничной организацией осуществляется следующим образом. Выполняющийся процесс обращается по адресу виртуальной памяти v = (p, d). Механизм отображения страниц, показанный на рис. 9.10, ищет номер страницы р в таблице отображения страниц и определяет, что эта страница находится в страничном кадре р'. Адрес реальной памяти формируется затем путем конкатенации р' и d.
Рис. 9.10 Соответствие между виртуальной и реальной памяти в системе со страничной организацией страничной организацией
Рассмотрим теперь этот процесс более подробно. В частности, поскольку обычно не все страницы процесса находятся в первичной памяти одновременно, таблица отображения страниц должна указывать, есть ли адресуемая страница в первичной памяти, и если есть, то где именно, а если нет, то в каком месте внешней памяти ее можно найти. На рис. 9.11 показана типичная строка таблицы отображения страниц. Бит-признак присутствия страницы r устанавливается в 0, если данной страницы в первичной памяти нет, и в 1, если эта страница есть в первичной памяти. Если страницы нет, то s - ее адрес во внешней памяти. Если страница есть в первичной памяти, то р' — номер ее страничного кадра. Отметим, что р' - это не действительный адрес первичной памяти. Адрес первичной памяти а, с которого начинается страничный кадр р' (если размер страницы равняется р), определяется следующим произведением (если страничные кадры имеют номера 0, 1, 2 и т. д.): а=(р)(р')
Рис. 9.11 Строка таблицы страниц.
Для отображения виртуального адресного пространства задачи на физическую память, как и в случае с сегментным способом организации, для каждой задачи необходимо иметь таблицу страниц для трансляции адресных пространств. Для описания каждой страницы диспетчер памяти ОС заводит соответствующий дескриптор, который отличается от дескриптора сегмента прежде всего тем, что в нем нет необходимости иметь поле длины — ведь все страницы имеют одинаковый размер. По номеру виртуальной страницы в таблице дескрипторов страниц текущей задачи находится соответствующий элемент (дескриптор). Если бит присутствия имеет единичное значение, значит, данная страница сейчас размещена в оперативной, а не во внешней памяти и мы в дескрипторе имеем номер физической страницы, отведенной под данную виртуальную. Если же бит присутствия равен нулю, то в дескрипторе мы будем иметь адрес виртуальной страницы, расположенной сейчас во внешней памяти. Таким образом и осуществляется трансляция виртуального адресного пространства на физическую память. Этот механизм трансляции проиллюстрирован на рис. 9.12.
Рис. 9.12 Отображение виртуального адресного пространства на физическую память при страничной организации