Перемещающий загрузчик
Абсолютный загрузчик
Виртуальная память
Виртуальная адресация предполагает страничную адресацию, при этом программа может иметь размер больше, чем оперативная память.
При использовании виртуальной памяти в оперативную память загружается только требуемые страницы программы. При этом загрузка осуществляется в свободные страницы оперативной памяти, т.е. адреса нала страницы в программе в большинстве случаев не совпадает с адресом оперативной памяти, куда помещается страница (с адресом начала страницы в оперативной памяти).
Для реализации обращения к реальным адресам в оперативной памяти используется специальная таблица, в которой хранятся соответствия адресов программы и адресов оперативной памяти (номера страниц, программ и оперативной памяти).
Впервые такой вариант был применен в машинах IBM.
Предназначен для загрузки в оперативную память абсолютного загрузочного модуля и передачи ему управления.
Абсолютный загрузочный модуль – это модуль, содержащий исполняемую программу, сгенерированную на конкретный адрес загрузки в оперативной памяти.
Абсолютный загрузочный модуль содержит три типа карт:
H<имя модуля><длина модуля><адрес загрузки>
Т<адрес данных><длина данных><данные>
Е<точка входа>
Алгоритм функционирования абсолютного загрузчика:
- Открытие файла с загрузочным модулем.
- Чтение и обработка карты Н.
- Заказать в операционной системе блок памяти заданной длины по адресу загрузки. Если память не выделена, то сообщение об ошибки и переход к п.7.
- Чтение очередной карты.
- Если карта Т, то определение адреса данных и длины данных и загрузка данных из карты в оперативную память. Переход к п.4.
- Если карта Е, то определение точки входа, передача управления на точку входа.
- Конец.
Преимущества загрузчика:
- Загрузчик простой, представляет программу из одного, максимум двух циклов.
- Маленький размер загрузчика.
Недостаток:
Программа загружается по конкретному адресу.
При одновременном выполнении нескольких программ распределение памяти выполняется пользованием и выполняется в момент создания загрузочного модуля, а не в момент их выполнения.
Абсолютные загрузчики используются в специализированных операционных системах (например, управление технологическими процессами).
Предназначен для загрузки в оперативную память перемещаемого загрузочного модуля и передачи ему управления.
Перемещаемый загрузочный модуль содержит программу в машинных кодах и дополнительную информацию, позволяющую загружать программу с любого адреса.
Содержит карты:
H<имя модуля><длина модуля>
Т<адрес данных><длина данных><данные>
M<адрес данных><длина данных>[<имя начала>]
Е<точка входа>
Загрузка программы в оперативную память обеспечивается с помощью карт М, в которых указываются места программы, где использованы значения перемещаемых выражений и которые нужно изменить при загрузке программы с ненулевого адреса. Изменение заключается в увеличении значения на адрес загрузки.
Алгоритм перемещающего загрузчика:
- Открытие файла с перемещаемым модулем.
- Чтение карты Н и ее обработка.
- Заказать в операционной системе блок памяти заданной длины. Если память не выделена, то сообщение об ошибке и переход к п.8. Иначе адресу загрузки присваивается значение адреса выделенной памяти.
- Чтение очередной карты.
- Если карта Т, то определение адреса данных и длины данных. Запись данных из карты по адресу <адрес_данных + адрес_загрузки> и переход к п.4.
- Если карта М, то определение адреса данных и длины данных. Увеличение на значение адреса загрузки данных заданной длины по адресу <адрес_данных + адрес_загрузки>. Переход к п.4.
- Если карта Е, то определение значения точки входа и передача управления по адресу <точка_входа + адрес_загрузки>.
- Конец.
Преимущество:
Программа может быть загружена с любого адреса, где имеется непрерывный участок памяти заданной длины.
Недостаток:
Загрузчик имеет более сложный алгоритм функционирования, требует больше места в ОП, загрузочный модуль имеет большую длину (т.к. есть карты М).