Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лекции кошкин.doc
Скачиваний:
4
Добавлен:
01.03.2025
Размер:
667.65 Кб
Скачать
  1. Управление процессами загрузки.

Рассмотренные процедуры абсолютного загрузчика, перемещающего загрузчика ориентировались на «линейную» выполняющую программу. Т.е. все команды загружаются в память. Выполняются в последовательности согласно алгоритма самой программы. Как дано, так загружено, так и должно выполняться. Изменения в загруженной программе, выбор того или иного сегмента в ней не предусматривалось. Но это не удобно, поскольку не всякие сегменты, загруженной программы, могут выполняться по переменному алгоритму. В интерактивном режиме можно изменять параметры программ. Но неизменная загруженная программа все равно будет просматривать все загруженные файлы. Отсюда целесообразно исполнять не вес части программы, а только требуемые и перегружать только требуемые в ОЗУ. Эта процедура реализуется с помощью управляющих параметров. Т.е. используют для задания управляющих параметров специальные команды. Эти команды размещаются в отдельном входном файле, либо эти команды включаются в основной поток программы между объектными программами. Если управляющие команды включены в исходную программу, ассемблер переносит их в объектную. Одной из возможностей является выбор входного потока команд. Команды могут загрузчику приказать прочитать ту или иную подпрограмму. Например, из библиотеки или из внешних подпрограмм.

Второй подход. В управлении процесса загрузки исключить некоторые внешние имена, ссылки на подпрограммы и даже целые программы. Введенная команда запрещает обращение к той или иной метке, внешнему имени, тем самым не давая ее загружать. Эти команды особо полезны в интерактивном режиме. В частности команды могут вызывать те или иные библиотеки или их части. Если поиск библиотек автоматический, необходимо исключить те ссылки, которые могут вызвать загрузку того или иного содержимого библиотеки. В этом режиме лучше отказаться от библиотечного поиска. Причина. Если какая-то переменная или ссылка оставлена, эта подпрограмма автоматически разгрузиться. В процессе загрузки возможно управление дополнительными функциями. Например, печатью. Командой пользователь может определить, нужна или нет распечатка таблицы, степень детализации этой таблицы. Нужны ли имена внешних ссылок и перекрестные ссылки. Так же у загрузчика имеются некоторые дополнительные возможности. Например, определение стартовой точки программы, т.е. физический адрес. Либо разрешение или запрет выполнения текущей программы в которой в процессе загрузки обнаружена ошибка. Помимо отдельных команд, определяющих процедуры загрузки, применяют алгоритмы динамической загрузки, так называемую оверлейную структуру. Суть процесса загрузки выполняется по мере необходимости. Новая подпрограмма загружается на место обработанной, что позволяет сэкономить в памяти пространство. Однако такие процедуры имеют определенное ограничение. Например, головная программа А может вызвать подпрог раммы одного уровня В и С. В свою подпрограмма В обращается к двум дочерним Д и Е. Можно предположить, что при выполнении А возникнет пот

А

ребность в загрузке п одпрограмм следующего уровня В или С. Если необходимо з

Е

Д

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

С

В

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

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