Скачиваний:
16
Добавлен:
01.05.2014
Размер:
224.26 Кб
Скачать

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

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

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

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

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

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

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

Физическая память Таблица страниц процесса 1 ------>------------- ----------- | |Страница | ==========------------------------- |процесса 1 | ==========-------------------- ------>------------- ----------- | | |Страница | Таблица страниц процесса 2 | | |процесса 2 | ----------- ------->--->------------- ==========------------------------- ^ |Разделяемая| ==========---------------------------- | страница |

----------- -------------

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

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

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

V = (s, d),

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

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

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

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

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

p

b

l

t

a

r

e

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

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

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

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

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

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

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

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

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

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

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

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

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

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

V = (s, p, d),

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

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

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

Соседние файлы в папке Материалы к курсу