Файл: Система математического обеспечения ЕС ЭВМ..pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 17.10.2024

Просмотров: 81

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

и объединять модули, написанные на разных языках программи­ рования.

Редактор связей — одна из обрабатывающих программ ОС ЕС. Обработка редактором связей — обйзательный шаг, который следу­ ет после ассемблирования или трансляции любого исходного мо­ дуля. Редактор связи подготавливает результат трансляции — объектные модули для выполнения. Он редактирует модули и объ­ единяет их в единый загрузочный модуль, который может быть по­ мещен программой выборки в оперативную память для выполне­ ния. Загрузочный модуль может быть использован повторно редактором связей для объединения с другими объектами или за­ грузочными модулями. Кроме объединения модулей редактор свя­ зей выполняет ряд других функций: замену, исключение и пере­ группировку программных секций внутри модуля по указанию про­ граммиста, автоматический вызов подпрограмм из библиотеки, создание оверлейных структур программ, формирование характе­ ристик загрузочного модуля и запись их в оглавление библиотеки и т. п.

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

Общая библиотека — это библиотечный набор данных, имею­ щий имя SYS1.LINKLIB. В нем хранятся часто используемые про­ граммы, в том числе и системные обрабатывающие программы, такие, как трансляторы. Эта библиотека формируется при гене­ рации системы и всегда открыта для использования.

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

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

Так же как и объектный модуль, загрузочный модуль состоит из текста и управляющих словарей: словаря внешних символов и словаря перемещений. Словарь внешних символов нужен для тех загрузочных модулей, для которых не все внешние ссылки были разрешены. Он будет использован при повторной обработке дан­ ного загрузочного модуля редактором связей.

31


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

Программа выборки осуществляет поиск модуля в библиотеке по его имени, выделение свободного участка оперативной памяти, загрузку модуля в выделенный участок памяти и настройку мо­ дуля, которая заключается в вычислении абсолютных значений адресных величин, указанных в словаре перемещений. Информа­ ция, необходимая для выполнения указанных действий, находится в оглавлении библиотеки вместе с именем модуля. К этой информа­ ции относится объем памяти, требуемый для модуля, характерис­

тики модуля и т. д.

 

исходной

Объемный

модуль (

модуль А

 

Г ~ 1

 

а

 

0

входные

Машинный код * управ

Машинный код * уп-

маш инный

яэыки

ляющие словари

равлянкцие словари

нод

Организация

Организация

Организация

Программа _

последовательная

последовательная

библиотечная

настроена для

или библиотечная

или библиотечная

 

выполнения

Рис.

6. Разработка программ в ОС ЕС

 

32


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

На рис. 6 показан пример разработки загрузочного модуля Е, который получается путем объединения объектных модулей А и В и загрузочного модуля С. Модуль Е записывается в библиотеку. Программа выборки загружает его в оперативную память для вы­ полнения. Для исходных, объектных и загрузочных модулей на рисунке изображены носители, на которых они могут находиться.

2.3. МЕТОДЫ КОМБИНИРОВАНИЯ ПРОГРАММ

Существует несколько видов комбинирования программ в бо­ лее крупные. Два из них — комбинирование во время редактиро­ вания связей и комбинирование программ во время выполнения—■ мы уже упоминали. Возможно также комбинирование программ во время трансляции и комбинирование во время ввода задания. Рассмотрим возможности комбинирования более подробно.

Комбинирование программ во время трансляции — наиболее простой метод комбинирования. Две или более подпрограммы, со­ ставленные разными авторами, перфорируются и затем объединя­ ются в один массив перфокарт для совместной трансляции.

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

Задание может состоять из нескольких пунктов. Комбинирова­ ние программ во время ввода задания заключается в том, что при выполнении пунктов одного и того же задания, которое в ОС ЕС может быть только последовательным, результаты предыдущего пункта передаются следующему пункту задания. Предположим, что задание состоит из трех пунктов: трансляции, редактирования связей и выполнения. Результатом работы первого пункта (транс­ ляции) является объектный модуль. Он передается второму пунк­ ту, результатом выполнения которого является загрузочный мо­ дуль. Загрузочный модуль передается третьему пункту, где он за­ гружается в основную память и выполняется. В общем случае пункт задания может выполнять любую работу. Пункт задания может состоять из выполнения некоторой проблемной программы пользователя или программы операционной системы.

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

3 З а к а з 3414.

33


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

2.4. СТРУКТУРЫ ПРОГРАММ

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

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

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

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

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

34


восстанавливает

исходное зна­

 

Передачи управления

чение регистров

и

передает

 

 

 

 

управление

в программу, ис­

А SAVE . . .

из супервизора

пользующую данный

модуль.

 

 

 

Этой программой

может быть

 

 

 

либо программа более старше­

CALL В

 

 

го уровня, либо

 

управляющая

RETURN

 

 

программа.

 

 

 

 

 

 

■в супервизор

 

простой

струк­

 

 

Программа

В SAVE

 

 

туры может содержать под­

 

 

 

 

 

программы.

Обращение

к ним

 

 

 

производится без участия су­

 

 

 

первизора с

помощью

макро­

RETURN

 

 

команды CALL

или

с

помо­

 

 

 

щью команд перехода.

Пример

Р и с . 7.

П р и м ер

м о д у л я п р остой

программы

простой структуры

 

ст р ук т ур ы

показан на

рис.

7.

 

 

 

 

 

 

 

 

Так как загрузочный модуль простой структуры содержит все коды, необходимые для выполнения задачи, программа, имеющая простую структуру, не использует динамически другие загрузочные модули, а, следовательно, эта программа не выдает макрокоман­ ды LINK, LOAD, XCTL или ATTACH. Перечисленные макрокоман­ ды требуют вмешательства управляющей программы. Однако про­ граммы с простой структурой можно динамически вызывать из других (динамических) загрузочных модулей.

Загрузочный модуль может иметь несколько точек входа, т. е. адресов, по которым можно передать управление. Во время редак­ тирования связей для модуля может быть указано первичное имя программы и до 16 псевдонимов — альтернативных имен или то­ чек входа. Все имена и соответствующие точки входа содержатся в оглавлении той библиотеки, где хранится загрузочный модуль. Загрузочный модуль может динамически определять другие имена и другие точки входа. Однако они не сохраняются, когда основная память, используемая загрузочным модулем, освобождается.

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

поиск модуля в библиотеке; выделение для него места в оперативной памяти;

загрузку модуля полностью и его настройку по месту в опера­ тивной памяти;

передачу управления в точку входа модуля; наблюдение за выполнением модуля;

завершение выполнения модуля (возврат управления, восста­ новление содержимого регистров, освобождение занимаемой мо­ дулем оперативной памяти и т. д.).

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

3*

35