Системное программирование. Конспект лекций



Алгоритм выполнения 1-го прохода - следующий:


  • 1-й проход Загрузчика.
  • Начальные установки. Создание пустой Глобальной таблицы. Стартовый адрес=пусто. Относительный адрес 1-го сегмента - 0. Размер программы - 0.
  • Выборка следующего имени из списка объектных модулей. Если весь список объектных модулей обработан - переход на окончание 1-го прохода.
  • Чтение заголовка очередной записи объектного модуля, если объектный модуль обработан полностью - переход к следующему модулю.
  • Чтение остальной части записи (размер записи содержится в ее заголовке).
  • Разветвление в зависимости от типа записи.
  • При обработке записи окончания проверяется, имеется ли в записи стартовый адрес. Если стартового адреса нет - никакая другая обработка записи не производится.
  • Если в записи есть стартовый адрес, проверяется, не был ли он уже установлен.
  • Если стартовый адрес не был установлен, он устанавливается.
  • Если стартовый адрес был установлен, выдается сообщение об ошибке. (Ни эта, ни последующие рассмотренные ошибки не приводят к немедленному завершению 1-го прохода, однако, если на 1-ом проходе были ошибки, 2-й проход не выполняется).
  • При обработке записи связывания выполняется перебор элементов Таблицы внешних символов...
  • ... и разветвление - в зависимости от типа элемента.
  • Для элемента - сегмента вычисляется начальный адрес следующего сегмента и длина сегмента прибавляется к общему размеру программы.
  • Для элемента - входной точки ищется имя точки в Глобальной таблице .
  • Если имя не найдено в Глобальной таблице, в таблицу добавляется новый элемент.
  • Если имя найдено в Глобальной таблице, - ошибка, неуникальное внешнее имя.
  • При окончании 1-го прохода проверяется, установился ли адрес стартовой точки программы.
  • Если этот адрес не установлен - ошибка.
  • Если этот адрес установлен и в ходе выполнения 1-го прохода не было других ошибок, Загрузчик продолжает работу.
  • Выделяется память для программы в соответствии с ее размером.
  • В Глобальную таблицу внешних символов записываются фактические адреса.
  • Выполняется 2-й проход.
  • Освобождается Глобальная таблица
  • Если не было ошибок на 2-ом проходе
  • ... управление передается на стартовый адрес программы
  • Загрузчик завершает работу.




  • Содержание  Назад  Вперед