Перемещающий загрузчик

Абсолютный загрузчик

Виртуальная память

Виртуальная адресация предполагает страничную адресацию, при этом программа может иметь размер больше, чем оперативная память.

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

Для реализации обращения к реальным адресам в оперативной памяти используется специальная таблица, в которой хранятся соответствия адресов программы и адресов оперативной памяти (номера страниц, программ и оперативной памяти).

Впервые такой вариант был применен в машинах IBM.

Предназначен для загрузки в оперативную память абсолютного загрузочного модуля и передачи ему управления.

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

Абсолютный загрузочный модуль содержит три типа карт:

H<имя модуля><длина модуля><адрес загрузки>

Т<адрес данных><длина данных><данные>

Е<точка входа>

Алгоритм функционирования абсолютного загрузчика:

  1. Открытие файла с загрузочным модулем.
  2. Чтение и обработка карты Н.
  3. Заказать в операционной системе блок памяти заданной длины по адресу загрузки. Если память не выделена, то сообщение об ошибки и переход к п.7.
  4. Чтение очередной карты.
  5. Если карта Т, то определение адреса данных и длины данных и загрузка данных из карты в оперативную память. Переход к п.4.
  6. Если карта Е, то определение точки входа, передача управления на точку входа.
  7. Конец.

Преимущества загрузчика:

  1. Загрузчик простой, представляет программу из одного, максимум двух циклов.
  2. Маленький размер загрузчика.

Недостаток:

Программа загружается по конкретному адресу.

При одновременном выполнении нескольких программ распределение памяти выполняется пользованием и выполняется в момент создания загрузочного модуля, а не в момент их выполнения.

Абсолютные загрузчики используются в специализированных операционных системах (например, управление технологическими процессами).

Предназначен для загрузки в оперативную память перемещаемого загрузочного модуля и передачи ему управления.

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

Содержит карты:

H<имя модуля><длина модуля>

Т<адрес данных><длина данных><данные>

M<адрес данных><длина данных>[<имя начала>]

Е<точка входа>

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

Алгоритм перемещающего загрузчика:

  1. Открытие файла с перемещаемым модулем.
  2. Чтение карты Н и ее обработка.
  3. Заказать в операционной системе блок памяти заданной длины. Если память не выделена, то сообщение об ошибке и переход к п.8. Иначе адресу загрузки присваивается значение адреса выделенной памяти.
  4. Чтение очередной карты.
  5. Если карта Т, то определение адреса данных и длины данных. Запись данных из карты по адресу <адрес_данных + адрес_загрузки> и переход к п.4.
  6. Если карта М, то определение адреса данных и длины данных. Увеличение на значение адреса загрузки данных заданной длины по адресу <адрес_данных + адрес_загрузки>. Переход к п.4.
  7. Если карта Е, то определение значения точки входа и передача управления по адресу <точка_входа + адрес_загрузки>.
  8. Конец.

Преимущество:

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

Недостаток:

Загрузчик имеет более сложный алгоритм функционирования, требует больше места в ОП, загрузочный модуль имеет большую длину (т.к. есть карты М).