Абсолютная загрузка


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

Назначение определенных адресов ссылкам к памяти в программе может быть выполнено либо программистом, либо автоматически в процессе компиляции или ассемблирования (табл. 7.2,а). У такого подхода имеется ряд серьезных недостатков. Во-первых, каждый программист должен знать стратегию размещения модулей в основной памяти. Во-вторых, при любых изменениях в программе, которые включают вставку или удаление кода или данных, требуется соответствующим образом изменить все адреса. Поэтому желательно, чтобы все адреса в памяти были выражены символьно, с тем чтобы в процессе компиляции или ассемблирования разрешить эти символьные ссылки (см. рис. 7.15). Каждая ссылка на команду или элемент данных изначально представлена символом. При подготовке модуля к абсолютной загрузке ассемблер или компилятор преобразуют все эти ссылки в конкретные адреса, как показано на рис. 7.15,в.

 

Таблица 7.2. Связывание адресов

 

а) Загрузчик Этап связывания Действия   Разработка Программист использует конкретные физические адреса непосредственно программы в программе   Компиляция Программа содержит ссылки на символьные адреса, которые преобразуются в реальные физические адреса компилятором или ас­семблером   Загрузка Компилятор или ассемблер генерируют относительные адреса, которые транслируются в абсолютные в процессе загрузки программы   Исполнение Загруженная программа использует относительные адреса, которые программы динамически конвертируются процессором в абсолютные
б) Компоновщик Этап компоновки Действия   Разработка Не разрешены никакие ссылки на внешний код или данные. Программист программы должен разместить в программе исходный код всех под­программ, на которые имеются ссылки   Компиляция Код каждой подпрограммы, к которой имеется обращение, должен быть ассемблирован в качестве модуля   Создание Все объектные модули ассемблируются с использованием относительных - загружаемого адресов. Эти модули связываются в одно целое, и все модуля ссылки пересчитываются относительно начала образующегося единого модуля   Загрузка Внешние ссылки не разрешаются до тех пор, пока модуль не будет размещен в основной памяти. В это время динамически связывае­мые модули, к которым имеются обращения, добавляются к основ­ному модулю, и в основной или виртуальной памяти размещается весь комплект целиком   Исполнение Внешние ссылки не разрешаются до тех пор, пока внешний вызов не программы будет выполнен процессором. В этот момент процесс прерывается и необходимый модуль связывается с вызывающей программой




Дата добавления: 2016-06-05; просмотров: 1769;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.007 сек.