Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы СППО.docx
Скачиваний:
26
Добавлен:
25.12.2018
Размер:
71 Кб
Скачать
☆

25. Схема взаимодействия загрузчиков

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

на вход АЗ подается модуль в абсолютном формате(МАФ). На выходе – ничего. Функции – только загрузка.

Структура и алгоритм работы АЗ

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

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

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

27. Перемещаемый загрузчик. Структура и алгоритм работы.

Вход: 1 МПФ(модуль в перемещаемом формате)

Выход: -

Функции: перемещение и загрузка

Структура и алгоритм работы ПЗ

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

2. получаем адрес загрузки у ОП и заносим в какую-то специальную переменную

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

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

5. обрабатываем запись конец модуля: к относительному адресу точки входа прибавляем адрес загрузки и полученным значением инициализируем счетчик команд.

28. Связывающий загрузчик. Структура и алгоритм работы.

вход: 1 или несколько модулей в полном перемещаемом формате(МППФ)

выход:-

функции: связывание, перемещение, загрузка

Структура и алгоритм работы СЗ

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

2. получаем адрес загрузки у ОП и заносим в какую-то специальную переменную

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

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

5. обрабатываем запись конец модуля: к относительному адресу точки входа прибавляем адрес загрузки и полученным значением инициализируем счетчик команд.

29.Однопросмотровая схема работы связывающего загрузчика.

Однопросмотровая схема работы связывающего загрузчика

Табл 2

Алгоритм:

  1. переменной АЗМ присваиваем адрес загрузки (АЗМ = АдЗ)

  2. организуем цикл по обработке входного потока модулей -каждый модуль обрабатывается следующим образом:

    1. считывается заголовок модуля, имя модуля помещается в ТВИ и ему присваивается адрес из АЗМ

    2. обрабатываем раздев внешних имен модуля

    3. обрабатываем запись типа D следующим образом: если имя отсутствует и ???, при этом сопоставляем РАВИ = ОАВИ+АЗМ. Если имя присутствует и с ним сопоставлен адрес, то ошибка. Если имя присутствует но с ним не сопоставлен адрес, то назначаем ему адрес такого вида РАВИ = ОАВИ+АЗМ и организуем проход по дополнительному списку, каждый элемент которого обрабатывается следующим образом: извлекается реальный адрес модифицируемой команды(РАМК) и по этому адресу производим настройку операндной части. Помещается реальный адрес внешний ссылки из ТВИ. Потом элемент списка удаляется.

  3. обрабатываем раздел внешних ссылок: все внешние ссылки из этого раздела заносим в ТВИ с проверкой на уникальность. Если такое ВИ отсутствует, то помещаем внешнюю ссылку в ТВИ и помечаем ее как неопределенную. Если ВИ присутствует, то ничего не делаем.

  4. обрабатываем запись типа Т: к относительному адресу загрузки прибавляем АЗМ, получаем реальный адрес загрузки записи и по нему загружаем в память команду.

  5. обрабатываем раздел модификаторов: к относительному адресу модифицируемой команды прибавляем АЗМ, получаем реальный адрес команды. По этому адресу в команде производим настройку операндной части: к адресу в команде прибавляем АЗМ получаем реальный адрес операнда. Если встретилось использование внешней ссылки, то осуществляем ее поиск в ТВИ. Если поиск удачен и с внешним именем сопоставлен адрес, то заменяем внешнюю ссылку адресом из ТВИ. Если с ВИ не сопоставлен адрес, то в дополнительный список добавляем реальный адрес модифицируемой команды в операндной части которой встретилось использование этого ВИ.

  6. запись типа е таким же образом

  7. переменную АЗМ увеличиваем на длину модуля

Преимущества: все работает быстрее, недостаток – более сложная структура и более сложный алгоритм.