Сегментно-страничное распределение

Комбинация страничного и сегментного методов.

Сочетает плюсы обоих подходов (должен, по крайней мере);

· ВАП делится на сегменты (можно задавать права доступа)

· Сегменты делятся на страницы фиксированного размера – перемещение данных осуществляется страницами (минимизация фрагментации)

· Сегменты образуют линейное адресное пространство

· Адрес можно задавать:

** либо линейным адресом

** либо парой чисел: номер сегмента + смещение (ОС делает так, т.к. это позволяет проверить права доступа к сегменту)

Напрочь не понимаю, что на этой картинке нарисовано, но…

Сегментно-страничное распределение - student2.ru

Создается процесс.

· ОС создает для процесса таблицу сегментов, где содержатся дескрипторы всех сегментов (все, как при сегментной организации, только базовый адрес указывается НЕ ФИЗИЧЕСКИЙ, а начальный линейный виртуальный адрес сегмента)

· ОС, используя начальный линейный виртуальный адрес сегмента, преобразовывает пару (номер сегмента + смещение в сегменте) в ЛИНЕЙНЫЙ ВИРТУАЛЬНЫЙ адрес байта.

· Потом, используя СТРАНИЧНЫЕ механизмы, этот линейный виртуальный адрес байта преобразуется в физический.

Деление ВАП процесса на страницы аналогично страничной организации памяти:

· Размер страницы – степень двойки

· Нумерация виртуальных страниц – в пределах ВАП процесса

· Нумерация физических страниц – в пределах оперативной памяти.

· Для каждого процесса также ведется ТАБЛИЦА СТРАНИЦ

· В память загружаются / выгружается только часть страниц процесса по разным всяким механизмам.

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

Итак, преобразование виртуального адреса в физический:

1) Механизм сегментации (добываем линейный виртуальный адрес):

· Дано: номер сегмента, смещение

· В спец регистре хранится базовый адрес таблицы сегментов

· Базовый адрес + номер сегмента = адрес дескриптора сегмента

· Анализ полей дескриптора (разрешен ли доступ к сегменту)

· Из дескриптора добываем базовый адрес сегмента + смещение = линейный виртуальный адрес.

2) Страничный механизм (получаем физический адрес)

· Линейный виртуальный адрес раскладывается на номер страницы и смещение внутри страницы (отделение энного к-ва младших бит, в зависимости от размера страницы)

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

· К номеру физической страницы прибавляем смещение = физический адрес.

Ура!!!

Сегментно-страничное распределение - student2.ru

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

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

Сегментно-страничное управление памятью можно реализовать по-другому:

· ВАП процесса делим на сегменты

· Сегменты делим на виртуальные страницы, но они нумеруются В ПРЕДЕЛАХ СЕГМЕНТА, а не всего ВАП процесса.

· Виртуальный адрес задается 3 параметрами: Номер Сегмента + Номер Страницы + Смещение в Странице.

· У каждого процесса – своя таблица сегментов, хранится в регистре.

· У каждого СЕГМЕНТА – своя таблица страниц

· В таблице страниц – дескрипторы страниц, без особенностей

· В таблице сегментов – дескрипторы сегментов хранят АДРЕС ТАБЛИЦ СТРАНИЦ.

Сегментно-страничное распределение - student2.ru

Преобразование адреса в такой схеме еще красивше:

1) Есть номер сегмента, находим адрес соответствующей таблицы страниц

2) Есть номер страницы, находим номер физической страницы

3) К нему конкатенируем смещение.

Ура!!!

Наши рекомендации