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

Связывающий загрузчик

Cтраница 1


Связывающие загрузчики являются наиболее развитыми.  [1]

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

Непосредственно связывающий загрузчик обладает тем преимуществом, что допускает использование большого числа как программных сегментов, так и сегментов данных и дает программисту полную свободу в обращении к данным или командам, содержащимся в других сегментах. Это обеспечивает гибкие перекрестные обращения между сегментами и возможности доступа, допуская в то же время независимую трансляцию-программ.  [3]

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

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

При использовании связывающего загрузчика для получения готовой к выполнению программы, всякий раз, когда программа запускается, применяются все четыре основные функции загрузчика. Однако при производственном счете программа может несколько раз выполняться в одном и том же виде, причем только ее начальный адрес может изменяться в зависимости - от различной обстановки в мультипрограммной среде ( разд. Это означает, что при связывании нет необходимости повторять несколько шагов. Чтобы сделать эту процедуру более экономичной и сохранить время вычислительной машины, во многих операционных системах функции непосредственно связывающих загрузчиков разделены. Загрузчик разбивается на две отдельные программы, редактор связей и загрузчик модулей.  [6]

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

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

9 Пример листинга программы LINK RT-11. [9]

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

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

12 Загрузка с использованием векторов передачи. [12]

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

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

В этом разделе рассматривался двупросмотровый непосредственно связывающий загрузчик.  [15]



Страницы:      1    2    3