Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Создай свою операционную систему! #14


Информационный Канал Subscribe.Ru

Проект UzhOS uzhos.tk



Сетевые операционные системы

Глава 5. Управление памятью

Продолжение

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Продолжение следует...

В следующем выпуске:

  • Разделяемые сегменты памяти
  • Кэширование данных
    • Иерархия запоминающих устройств
    • Кэш-память
    • Принцип действия кэш-памяти


Copyright (C) 2004-2005 UzhOS-Team
Ведущий рассылки DFirst (winexp[@]yandex.ru)
Дизайн Vladimir Tsarkov (bvbn[@]lipetsk.ru)

Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: comp.soft.othos.osmaker
Отписаться
Вспомнить пароль

В избранное