Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
os5.doc
Скачиваний:
0
Добавлен:
20.06.2023
Размер:
186.37 Кб
Скачать

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

Одноуровневая страничная организация

Страничная виртуальная память состоит из блоков фиксированного размера, называемых страницами. Размер страниц обычно составляет от 512 байтов до 4К. Например, в процессоре Intel с 32-х разрядными регистрами размер страницы равен 4К.

Виртуальный адрес равен

V = (p, d),

Где р - номер страницы;

d - смещение внутри страницы.

При фиксированном размере блока проще реализуются стратегии размещения страниц в памяти.

Строка таблицы страниц обычно содержит следующие данные:

p

m

a

n

s

p - бит присутствия страницы;

m - бит модификации страницы;

a - права доступа к странице;

n - адрес в физической памяти, если страница загружена;

s - адрес во внешней памяти, если страница не загружена.

Таблица страниц загружается вместе с задачей и хранится в оперативной памяти.

Для ускорения доступа часть строк таблицы, к которым обращения происходят наиболее часто, хранятся в кэш-памяти. Обращение к таблице в оперативной памяти происходит только при неудачном поиске строки в кэш-памяти. В этом случае кэш-память обновляется новой страницей.

Двухуровневая страничная организация

С ростом размера виртуальной памяти пропорционально увеличиваются и размеры таблиц страниц. Избежать роста таблиц позволяет двухуровневая страничная организация.

В этом случае для каждой задачи создается каталог таблиц, а виртуальный адрес состоит из трех компонентов:

V = (k, p, d),

Где k - строка каталога, содержащая адрес таблицы страниц;

р - смещение в выбранной таблице страниц;

d - смещение в физической памяти.

Например, в процессоре Intel с 32-х разрядными регистрами каталог может содержать информацию о 1024 таблицах (1 К).

Каждая таблица содержит информацию о 1024 страницах (1 К). Поскольку каждая страница имеет размер 4 К, то одна таблица страниц может адресовать память 4 К х 1 К = 4 М.

Один каталог адресует память 4 М х 1 К = 4 Г.

Совместное использование страниц процессами

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

Обычно программы содержат процедуры и данные.

Данные программ чаще имеют характер неразделяемых данных, а доступ к разделяемым данным как раз и организуется рассматриваемым методом.

Неизменяемые процедуры называются реентерабельными или повторновходимыми.

Таким образом, каждая страница должна быть классифицирована как разделяемая или нет.

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

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

Одноуровневая сегментная организация

В отличие от страниц сегменты могут иметь различные размеры. Виртуальный адрес

V = (s, d),

Где s - номер сегмента;

d - смещение внутри сегмента.

Схема отображения остается прежней.

Например, архитектура Intel использует следующую терминологию: виртуальный адрес представляет собой вектор СЕЛЕКТОР:СМЕЩЕНИЕ, таблица отображения - это таблица дескрипторов; строка таблицы - дескриптор сегмента.

В общем случае дескриптор содержит следующие данные:

p

b

l

t

a

r

e

p - бит присутствия;

b - адрес сегмента в памяти, если загружен;

l - длина сегмента;

t - тип сегмента; (чтение, запись, код, данные)

a - бит доступа;

r - привилегии;

e - адрес во внешней памяти, если не загружен.

Следующие четыре вида ошибок могут иметь место при обращении к сегменту:

  1. Если сегмента нет в памяти, то вырабатывается прерывание по отсутствию сегмента.

  1. Если длина сегмента меньше величины смещения в виртуальном адресе, то вырабатывается прерывание по выходу за пределы сегмента.

  1. Если тип операции не соответствует типу сегмента, то вырабатывается прерывание по ошибке.

  1. Если уровень привилегий запроса не соответствует уровню привилегий дескриптора, то вырабатывается прерывание по защите сегмента.

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

Комбинированная сегментно-страничная организация (вместе с таблицей процессов)

Сочетание сегментной и страничной организации представляет собой комбинированную сегментно-страничную систему виртуальной памяти.

Виртуальный адрес в этом случае состоит из трех компонентов:

V = (s, p, d),

Где s - смещение в таблице сегментов процесса, указывающее на адрес таблицы страниц сегмента;

p - смещение в таблице страниц сегмента, указывающее на адрес страницы в памяти;

d - смещение от начала страницы.

Схема комбинированной сегментно-страничной организации практически совпадает со схемой двухуровневой страничной организации виртуальной памяти.

Соседние файлы в предмете Операционные системы