Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

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



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

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

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

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






Дата публикования: 2014-12-08; Прочитано: 542 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.007 с)...