Мультипроцессорные системы. Семафорная техника синхронизации и упорядочивания процессов. Стек – средство обработки структурированных программ, страница 5

добавочных функций. Программа при оверлейном способе разбивания на главный (корневой) сегмент, и на один или более не основных сегментов  фиксированных данных. Эти сегменты называются оверлейными. Корневой сегмент резидентной находится в памяти, а оверлеи располагаются на дисках, и по мере необходимости загружаются с него в память. Последовательность  оверлеев загружается в оверлейную память, называемую оверлейной группой. Все сегменты этой группы имеют одинаковую длину. Характеристики оверлейной системы полностью определяются быстродействием НМД (накопитель на магнитном диске). Для работы с оверлеями в ОС используется оверлейный загрузчик. Он выполняется двумя способами:

1)  Делается как выполняемая система, в которой программа пользователя выдаёт запрос, обращаясь к менеджеру

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

2)  Каждая программа получает копию оверлейного загрузчика и работает только с ней. В этом случае несколько пользователей не могут использовать один и тот же оверлейный файл. Их программы задерживаются до окончания загрузки оверлея.

Классификация оверлейных систем.

1)  Автоматическая. Как делить программу на оверлеи решает ОС, при этом увеличивается сложность самой ОС, трансляторов и редактора связи.

2)  Полуавтоматическая. Как делить программу на оверлеи решает пользователь. Для этого используется специальный язык описания оверлеев. В этом случае пользователь «априори» имеет информацию о структуре программы (эффективность выше).

3)  Программная. Пользователь не только определяет, как разделить программу на оверлеи, но и выдаёт запрос на загрузку нужного оверлея. Память под оверлейную обработку

может выделяться статически или динамически. В памяти ОС     организует глобальный пул оверлейной загрузки.

Концепция оверлейного управления.

                                                                                                                                                                                                                                                                                Уровень 0                 

Уровень 1

Уровень 2

Выполнить главное:  Загрузить А 1 ;Выполнить А 1;

  Загрузить В 1; Выполнить В1.

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

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

Менеджер оверлеев.

Редактор связи создаёт файл оверлеев, основной частью которого является оверлейная таблица, которая отражает дерево (в примере). Менеджер оверлея контролирует доступ к оверлейным областям, используя два семафора ресурсов:

1)  ОВЕРЛЕЙ – РЕС;

2)  ЗАГРУЗИТЬ – ОВЕРЛЕЙ – РЕС.

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

Каждая программа, создавшая оверлеи, имеет связанную с ними оверлейную таблицу.

Поля таблицы:

число оверлейных групп;

адрес файла оверлеев для первого файла в группе;

адрес памяти, куда загружается оверлей;

размер оверлейной группы;

число оверлеев в группе;

идентификатор оверлея, выдавшего запрос на загрузку другого оверлея;

информация о статусе группы;

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

Для каждой оверлейной группы создаётся своя таблица. Совокупность этих таблиц – блок управления оверлеев (БУОВ).

Каждый оверлей в таблице организован как набор кластеров и оверлейная группа имеет следующую структуру:

                                             БУОВ

 


Оверлейная                         группа 3

                                                                                …

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

Статус оверлейной группы содержит два флага:

1)  флаг ПРОЦЕСС – ЗАГРУЗКА (указывает, что для данной области был выдан запрос на оверлей и этот оверлей загружается из системы);

2)  флаг ПОВТОР – ИСПОЛЬЗОВАНИЕ (указывает на то, что оверлей может многократно использоваться).

Статусное слово оверлея состоит из двух байтов.

Функции управления оверлеями.

1)  процедура подготовки к загрузке оверлея:

запрашивает идентификатор оверлея;

устанавливает режим оверлея;

осуществляет запрос карты оверлея;

передаёт БУОВ в запрос индекса оверлея.

2)  процедура загрузки оверлея: