Управление процессом загрузки 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Управление процессом загрузки



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

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

Одной из типичных возможностей, предоставляемых пользователю, является определение альтернативного источника входного потока. Например, команда

INCLUDE имя - программы (имя - библиотеки)

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

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

DELETE имя - секции

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

CHANGE имя1,имя2

может использоваться для замены внешнего имени имя1 на имя2. Ниже приводится пример использования этих команд.

Рассмотрим исходную программу.изображеннуюнарис.2.15, и соответствующую ей объектную программу на рис. 2.17. Имеется главная программа (COPY), которая использует две подпрограммы (RDREC и WRREC). Каждая из программ оформлена в виде отдельной управляющей секции. Если RDREC и WRREC разработаны только для использования в программе COPY, то весьма вероятно, что все три управляющие секции будут ассемблироваться одновременно. Это означает, что все три управляющие секции будут расположены в одном файле или будут включены в одну и ту же библиотеку).

Предположим теперь, что в вычислительной системе появился набор сервисных подпрограмм. Две из них, READ и WRITE, предназначены для выполнения тех же самых функций, что и RDREC и WI*REC. Вероятно, желательно будет изменить неходкую программу COPY так, чтобы она могла использовать эти сервисные подпрограммы. В качестве временной меры можно использовать последовательность команд загрузчика, которые позволяют сделать эти изменения без переассемблирования программы. Например, это может быть полезно для того, чтобы протестировать сервисные подпрограммы прежде, чем делать окончательное преобразование COPY.

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

INCLUDE READ(UTLIB)

INCLUDE WRITE(UTLIB)

DELETE RDREC,WRREC

CHANGE RDREC,READ

CHANGE WRREC,WRITE

Эти команды предписывают загрузчику включить в рассмотрение управляющие секции READ и WRITE из библиотеки UTLIB и исключить из рассмотрения управляющие секции RDREC и WRREC. Первая команда CHANGE служит для замены всех ссылок к RDREC на READ. Аналогично ссылки к WRREC заменяются на WRITE. Результат будет в точности таким, как если бы исходная программа COPY была модифицирована для использования READ и WRITE. Вам предлагается самостоятельно подумать над тем, как загрузчик может осуществить обработку команд, обеспечивающих описанные действия.

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

LIBRARY MYLIB

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

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

NOCALL STDDEV,PLOT,CORREL

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

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

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

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

 

 



Поделиться:


Последнее изменение этой страницы: 2017-02-17; просмотров: 117; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.119.125.7 (0.008 с.)