Общая информация. Часть 3.

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

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

Система программирования

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

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

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

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

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