Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
VSOS_2014.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.9 Mб
Скачать
    1. Сегментная организация памяти

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

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

Логический адрес при сегментной организации памяти состоит из двух частей: <s, d>, где s – номер сегмента, а d – смещение в пределах сегмента. При сегментной организации виртуальный адрес является двумерным как для программиста, так и для операционной системы, и состоит из двух полей – номера сегмента и смещения внутри сегмента.

Каждому процессу соответствует таблица сегментов (segment table), в которой каждому сегменту соответствует одна запись. Адрес таблицы сегментов обычно хранится в специальном аппаратном регистре (STBRSegment-Table Base Register). В каждой строке таблицы хранится адрес начала сегмента в ОП (base) и длина сегмента (limit).

Количество строк таблицы сегментов равно количеству сегментов программы.

Рис. 11.7 иллюстрирует аппаратную поддержку базового метода сегментной организации памяти.

Номер сегмента (s) используется как индекс для таблицы сегментов. С помощью таблицы сегментов определяется его начальный адрес (base) в основной памяти. Значение limit используется для защиты памяти. Смещение d должно удовлетворять неравенству 0<d<limit. В случае выхода смещения за границы сегмента работа программы прерывается. Физический адрес определяется как сумма начального адреса (base) и смещения (d).

Рисунок 11.31 - Аппаратная поддержка базового метода сегментной организации памяти

Защита и совместное использование

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

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

Фрагментация

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

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

    1. Сегментация в сочетании со страничной памятью

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

Логические адреса состоят из трех: [s, p, d]. Первая компонента – номер сегмента s. Вход в таблицу сегментов осуществляется через регистр таблицы сегментов; s-я ячейка таблицы сегментов содержит базовый адрес и длину (то есть границу) таблицы страниц для этого сегмента. Вторая компонента адреса р определяет запись в таблице страниц, которая указывает на р страницу сегмента s. Затем, чтобы добраться до искомого слова, надо смещение d прибавить к базовому адресу страницы.

На такую трехкомпонентную ссылку требуется три цикла обращения к памяти; это создает недопустимо большую задержку, даже, если поиск слова по адресу выполняется с помощью аппаратного оборудования. Эту трудность можно обойти, если использовать группу ячеек памяти с быстрым доступом, называемых ассоциативными регистрами. Эти регистры сопоставляют комбинациям [s, p] физические места страниц. Основное свойство ассоциативных регистров — то, что их можно просматривать параллельно. По заданной ссылке [s, p, d] ассоциативная память порождает указатель страницы [s, p], если он имеется в одном из ассоциативных регистров. Таким образом, количество требуемых циклов памяти сводится к двум. Если комбинации [s, p] нет ни в одном ассоциативном регистре, то происходит прерывание и супервизор заменяет содержимое од­ного из ассоциативных регистров новой ссылкой [s, p]. Наблюдения показывают, что ссылки распределяются в памяти неравномерно, концентрируясь на нескольких интенсивно используемых страницах. Поэтому для большинства адресных ссылок соответствующая комбинация [s, p] будет найдена в ассоциативных регистрах.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]