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

 

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

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

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

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

Для каждого процесса операционная система создает отдельную таблицу сегментов, в которой содержатся описатели (дескрипторы) всех сегментов процесса. Описание сегмента включает назначенные ему права доступа и другие характеристики, подобные тем, которые содержатся в дескрипторах сегментов при сегментной организации памяти. Однако имеется и принципиальное отличие. В поле адреса указывается не начальный физический адрес сегмента, отведенный ему в результате загрузки в оперативную память, а начальный линейный виртуальный адрес сегмента в про-странстве виртуальных адресов (на рис. 4.5 физические адреса обозначены SI, S2, S3, а виртуальные адреса – fl, f2, f3).

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

 

 

Виртуальное адресное

пространство процесса

 
 


Оперативная

память

 

 


а

S3

S2

 

S1

S1
S2
S3

 

 

Таблица сегментов процессов

Виртуальное адресное Оперативная память

пространство процесса

 

 


б


f1
f2
f3

 

       
   
 
 

 


Таблица сегментов процессов