Скачиваний:
123
Добавлен:
04.04.2013
Размер:
774.66 Кб
Скачать

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 Отображение виртуального адресного пространства на физическую память при страничной организации

Соседние файлы в папке Лекции 9-12rar