Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Все лекции по ИТ / В принципе текстовые ред.doc
Скачиваний:
65
Добавлен:
02.05.2014
Размер:
197.12 Кб
Скачать

1.3.3. Функции загрузчика

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

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

Однако загрузчик не всегда является составной частью системы программирования, поскольку выполняемые им функции очень зависят от архитектуры целевой вычислительной системы, в которой выполняется результирующая программа, созданная системой программирования. На первых этапах развития ОС загрузчики существовали в виде отдельных модулей, которые выполняли трансляцию адресов и готовили программу к выполнению - создавали так называемый "образ задачи". Такая схема была характерна для многих ОС (например, для ОСРВ на ЭВМ типа СМ-1, ОС RSX/11 или RAFOS на ЭВМ типа СМ-4 и т. п.). Образ задачи можно было сохранить на внешнем носителе или же создавать его вновь всякий раз при подготовке программы к выполнению.

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

12

ный Гуманитарный Университе

13

Программирования ОТВенмВгПна юш.ю ы мыдмноику 1аС)ЛИЦЫ

трансляции адресов - эту функции, пмпоми-.пм компоновщик.

В современных ОС сущее туип . типы»! ыпюди преобразования адресов, которые работаю! тмим р.^н ничто у*<> но время выполнения программы. Эти методы о< помним h,i но «мо-мюешх, аппаратно заложенных в архитектуру ничи< лиммн.т.м комплексов. Методы трансляции адресов moi yi (жш. основаны n.i <.<ч мпшюй, страничной и сегментно-странимной opi анимации памупи. То1да для выполнения трансляции адресов в момпм аапуека про1раммы должны быть подготовлены соотвокавукнцие сисюмные шОлицы. Эти функции целиком ложатся на модули ос", по:ному они не выполняются в системах программирования.