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

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