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

Переместимая загрузка



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

Для удовлетворения этого нового требования ассемблер или компилятор генерируют не абсолютные адреса, а адреса относительно некоторой известной точки, такой, как начало программы. Этот метод продемонстрирован на рис. 7.15,в. Началу загружаемого модуля назначается относительный адрес 0, и все прочие ссыл­ки внутри модуля выражаются относительно его начала.

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





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



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