Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
SRS_IPOVS_OS.doc
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
1 Мб
Скачать
☆

16.2. Страничная организация виртуальной памяти

Термин виртуальная память обычно ассоциируется с системами, использующими страничную организацию, хотя используется и виртуальная память на основе сегментации.

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

При рассмотрении простой страничной организации мы указывали, что каждый процесс имеет свою таблицу страниц, создаваемую операционной системой. Каждая запись в таблице страниц содержит номер кадра соответствующей страницы в памяти. Для организации виртуальной памяти каждая запись таблицы страниц также должна содержать бит присутствия P, указывающий на присутствие соответствующей страницы в ОП. Если данная страница располагается в ОП, то в записи таблицы содержится номер ее кадра.

Другим управляющим битом в записи таблицы страниц является бит модификации M. Он указывает, было ли изменено содержимое данной страницы со времени последней загрузки в ОП. Если изменений не было, то когда наступит время замены страницы в занимаемом ею в данный момент кадре, записывать эту страницу на диск не следует, так как на диске уже имеется ее точная копия.

Базовый механизм чтения слова из памяти включает в себя трансляцию виртуального, или логического, адреса, состоящего из номера страницы и смещения, в физический адрес, который представляет собой номер кадра и смещение, с использованием таблицы страниц. Таблица страниц располагается в ОП.

В принципе каждый виртуальный адрес вызывает обращение к двум физическим адресам: одно для выборки соответствующей записи из таблицы страниц и еще одно – для обращения к адресуемым данным. Следовательно, простая схема виртуальной памяти, по сути, удваивает время обращения к памяти. Для преодоления этой проблемы большинство схем виртуальной памяти использует специальный высокоскоростной кэш для записей таблицы страниц, который обычно называется буфером быстрого преобразования адреса, или просто буфером поиска трансляции (TLB, Translation Lookaside Buffer). Этот кэш функционирует так же, как и обычный кэш памяти.

На рис. 16.1 показана схема трансляции адреса с использованием TLB.

16.3. Сегментация

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

Такая организация имеет ряд преимуществ по сравнению с несегментированным адресным пространством.

  1. Упрощается обработка растущих структур данных.

  2. Упрощается совместное использование кода и данных разными процессами.

  3. Улучшается защита.

При рассмотрении простой сегментной организации мы отмечали, что каждый процесс имеет собственную таблицу сегментов. В каждой записи таблицы сегментов указан начальный адрес соответствующего сегмента в ОП и его длина. Та же таблица сегментов нужна и при схеме виртуальной памяти, основанной на сегментации. Записи таблицы сегментов в этом случае усложняются. Поскольку в ОП могут находиться не все сегменты процесса, в каждой записи требуется наличие бита присутствия, указывающего, располагается ли данный сегмент в ОП. Если сегмент расположен в ОП, то запись включает его начальный адрес и длину.

Еще один бит, необходимый в данной схеме, – бит модификации, указывающий, было ли изменено содержимое сегмента со времени его последней загрузки в ОП. Если изменений не было, то при выгрузке сегмента нет необходимости в его записи на диск.

Основной механизм чтения слова из памяти включает преобразование виртуального, или логического, адреса, состоящего из номера сегмента и смещения, в физический адрес с использованием таблицы сегментов. Для хранения таблицы сегментов используется ОП. Когда запускается определенный процесс, в одном из управляющих регистров хранится стартовый адрес его таблицы сегментов. Номер сегмента из виртуального адреса используется в качестве индекса таблицы, позволяющего определить начальный адрес сегмента. Для получения физического адреса к начальному адресу сегмента добавляется смещение из виртуального адреса.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]