Сделай Сам Свою Работу на 5

Сегментная организация памяти





 

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

 

 

Рис. 3.13. Формат виртуального адреса в системе

с сегментной организацией памяти

 

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

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



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



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

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

Процесс динамического преобразования адресов при сегментации показан на рис.3.14.

Выполняющийся процесс обращается по виртуальному адресу v = (s,d). Номер сегмента s прибавляется к базовому адресу b, находящемуся в регистре начального адреса таблицы сегментов, образуя реальный адрес b + s строки таблицы сегментов для сегмента s , к которому идет обращение. Если первое поле этого элемента таблицы сегментов указывает на то, что данный сегмент находится в оперативной памяти, то третье поле содержит адрес реальной памяти s’, с которого начинается сегмент. Прибавлением смещения d к s’ формируется реальный адрес r = d + s’, соответствующий виртуальному адресу v = (s,d).



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

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

 

 

Рис. 3.14. Преобразование виртуального адреса

в сегментной системе

 

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

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

 

 








Не нашли, что искали? Воспользуйтесь поиском по сайту:



©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.