|
Сегментная организация памяти
При сегментной организации памяти пользователь рассматривает свой процесс как совокупность логических частей или сегментов, каждый из которых может быть областью данных, процедурой или набором процедур. В этом случае виртуальный адрес представляет собой упорядоченную пару 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 Все материалы защищены законодательством РФ.
|