Главная Обратная связь

Дисциплины:






Обобщенные этапы подготовки прогрыммы к выполнению. Функции связывающего загрузчика.



Этапы подготовки прогрыммы описаны в 2 вопросе.

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

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

1) определяются адреса всех меток.

2) а во время второго загрузка, перемещение и связывание.

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

Обобщенные этапы подготовки прогрыммы к выполнению. Функции загрузчика.

Этапы подготовки прогрыммы описаны в 2 вопросе.

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

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

Загрузчики, обеспечивающие перемещение программ называются перемещающими или относительными загрузчиками (relocating/relative loaders).

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

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





sdamzavas.net - 2019 год. Все права принадлежат их авторам! В случае нарушение авторского права, обращайтесь по форме обратной связи...