Сегментное распределение памяти имеет много общего со страничным распределением. 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Сегментное распределение памяти имеет много общего со страничным распределением.



Механизмы преобразования адресов этих двух способов управления памятью тоже весьма схожи, однако в них имеются и существенные отличия, которые яв­ляются следствием того, что сегменты в отличие от страниц имеют произволь­ный размер. Виртуальный адрес при сегментной организации памяти может быть представлен парой (g, s), где g — номер сегмента, a s — смещение в сегменте. Фи­зический адрес получается путем сложения базового адреса сегмента, который определяется по номеру сегмента g из таблицы сегментов и смещения s.

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

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

Но главный недостаток сегментного распределения — это фрагментация, кото­рая возникает из-за непредсказуемости размеров сегментов. В процессе работы системы в памяти образуются небольшие участки свободной памяти, в которые не может быть загружен ни один сегмент. Суммарный объем, занимаемый фраг­ментами, может составить существенную часть общей памяти системы, приводя к ее неэффективному использованию.

Система с сегментной организацией функционирует аналогично системе со стра­ничной организацией.

Одним из существенных отличий сегментной организации памяти от странич­ной является возможность задания дифференцированных прав доступа процесса к его сегментам. Например, один сегмент данных, содержащий исходную инфор­мацию для приложения, может иметь права доступа «только чтение», а сегмент данных, представляющий результаты, — «чтение и запись». Это свойство дает принципиальное преимущество сегментной модели памяти над страничной.

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

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

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

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

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

Координаты байта в виртуальном адресном пространстве при сегментно-стра­ничной организации можно задать двумя способами.

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

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

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

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

Преобразование виртуального адреса в физический происходит в два этапа (рис. 13.6).

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

 

На первом этапе работает механизм сегментации. Исходный виртуальный адрес, заданный в виде пары (номер сегмента, смещение), преобразуется в линейный виртуальный адрес. Для этого на основании базового адреса таблицы сегмен­тов и номера сегмента вычисляется адрес дескриптора сегмента. Анализиру­ются поля дескриптора и выполняется проверка возможности выполнения за­данной операции. Если доступ к сегменту разрешен, то вычисляется линей­ный виртуальный адрес путем сложения базового адреса сегмента, извлеченного из дескриптора, и смещения, заданного в исходном виртуальном адресе.

На втором этапе работает страничный механизм. Полученный линейный вирту­альный адрес преобразуется в искомый физический адрес. В результате пре­образования линейный виртуальный адрес представляется в том виде, в кото­ром он используется при страничной организации памяти, а именно в виде пары (номер страницы, смещение в странице). Благодаря тому, что размер страницы выбран равным степени двойки, эта задача решается простым отде­лением некоторого количества младших двоичных разрядов. При этом в стар­ших разрядах содержится номер виртуальной страницы, а в младших — смещение искомого элемента относительно начала страницы. Так, если раз­мер страницы равен 2, то смещением является содержимое младших k разрядов, а остальные, старшие разряды содержат номер виртуальной страницы, которой принадлежит искомый адрес. Далее преобразование адреса проис­ходит так же, как при страничной организации: старшие разряды линейного виртуального адреса, содержащие номер виртуальной страницы, заменяются номером физической страницы, взятым из таблицы страниц, а младшие раз­ряды виртуального адреса, содержащие смещение, остаются без изменения.

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

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

2. По номеру виртуальной страницы, заданному в виртуальном адресе, из таб­лицы страниц извлекается дескриптор, в котором указан номер физической страницы.

3. К номеру физической страницы пристыковывается младшая часть виртуаль­ного адреса — смещение.

Разделяемые сегменты памяти

Подсистема виртуальной памяти представляет собой удобный механизм для решения задачи совместного доступа нескольких процессов к одному и тому же сегменту памяти, который в этом случае называется разделяемой памятью (shared memory).

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

Примером применения разделяемой области памяти может быть использование ее в качестве буфера при межпроцессном обмене данными. В этом слу­чае один процесс пишет в разделяемую область, а другой — читает.

Для организации разделяемого сегмента при наличии подсистемы виртуальной памяти достаточно поместить его в виртуальное адресное пространство каждого процесса, которому нужен доступ к данному сегменту, а затем настроить параметры отображения этих виртуальных сегментов так, чтобы они соответствовали одной и той же области оперативной памяти. Детали такой настройки зависят от типа используемой в ОС модели виртуальной памяти: сегментной или сегмент но-страничной (чисто страничная организация не поддерживает понятие «сегмент», что делает невозможным решение рассматриваемой задачи).

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

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

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



Поделиться:


Последнее изменение этой страницы: 2016-12-28; просмотров: 302; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.14.247.5 (0.008 с.)