The design of the UNIX Operating System 51 страница



 

На практике, однако, появления в системе большого количества таблиц страниц стараются избежать, ор-ганизуя неперекрывающиеся сегменты в одном виртуальном пространстве, для описания которого хвата-ет одной таблицы страниц. Таким образом, одна таблица страниц отводится для всего процесса. Напри-мер, в популярных ОС Linux и Windows 2000 все сегменты процесса, а также область памяти ядра огра-ничены виртуальным адресным пространством объемом 4 Гбайт. При этом ядро ОС располагается по фиксированным виртуальным адресам вне зависимости от выполняемого процесса.

 

Структура таблицы страниц

 

Организация таблицы страниц – один из ключевых элементов отображения адресов в страничной и сег-ментно-страничной схемах. Рассмотрим структуру таблицы страниц для случая страничной организации более подробно.

 

Итак, виртуальный адрес состоит из виртуального номера страницы и смещения. Номер записи в таблице страниц соответствует номеру виртуальной страницы. Размер записи колеблется от системы к системе, но чаще всего он составляет 32 бита. Из этой записи в таблице страниц находится номер кадра для дан-ной виртуальной страницы, затем прибавляется смещение и формируется физический адрес. Помимо этого запись в таблице страниц содержит информацию об атрибутах страницы. Это биты присутствия и защиты (например, 0 – read/write, 1 – read only...). Также могут быть указаны: бит модификации, который устанавливается, если содержимое страницы модифицировано, и позволяет контролировать необходи-мость перезаписи страницы на диск; бит ссылки, который помогает выделить малоиспользуемые страни-цы; бит, разрешающий кэширование, и другие управляющие биты. Заметим, что адреса страниц на диске не являются частью таблицы страниц.

 

Основную проблему для эффективной реализации таблицы страниц создают большие размеры виртуаль-ных адресных пространств современных компьютеров, которые обычно определяются разрядностью ар-хитектуры процессора. Самыми распространенными на сегодня являются 32-разрядные процессоры, по-зволяющие создавать виртуальные адресные пространства размером 4 Гбайт (для 64-разрядных компью-теров эта величина равна 264 байт). Кроме того, существует проблема скорости отображения, которая решается за счет использования так называемой ассоциативной памяти (см. следующий раздел).

 

Подсчитаем примерный размер таблицы страниц . В 32-битном адресном пространстве при размере стра-ницы 4 Кбайт (Intel) получаем 232/212=220, то есть приблизительно миллион страниц, а в 64-битном и того более. Таким образом, таблица должна иметь примерно миллион строк (entry), причем запись в строке


Основы операционных систем 85

состоит из нескольких байтов. Заметим, что каждый процесс нуждается в своей таблице страниц (а в слу-чае сегментно-страничной схемы желательно иметь по одной таблице страниц на каждый сегмент).

 

Понятно, что количество памяти, отводимое таблицам страниц, не может быть так велико . Для того что-бы избежать размещения в памяти огромной таблицы, ее разбивают на ряд фрагментов. В оперативной памяти хранят лишь некоторые, необходимые для конкретного момента исполнения фрагменты таблицы страниц. В силу свойства локальности число таких фрагментов относительно невелико. Выполнить раз - биение таблицы страниц на части можно по-разному. Наиболее распространенный способ разбиения – организация так называемой многоуровневой таблицы страниц. Для примера рассмотрим двухуровневую таблицу с размером страниц 4 Кбайт, реализованную в 32-разрядной архитектуре Intel.


Дата добавления: 2021-01-21; просмотров: 100; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!