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


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


  1. 1-й проход Загрузчика.
  2. Начальные установки. Создание пустой Глобальной таблицы. Стартовый адрес=пусто. Относительный адрес 1-го сегмента - 0. Размер программы - 0.
  3. Выборка следующего имени из списка объектных модулей. Если весь список объектных модулей обработан - переход на окончание 1-го прохода.
  4. Чтение заголовка очередной записи объектного модуля, если объектный модуль обработан полностью - переход к следующему модулю.
  5. Чтение остальной части записи (размер записи содержится в ее заголовке).
  6. Разветвление в зависимости от типа записи.
  7. При обработке записи окончания проверяется, имеется ли в записи стартовый адрес. Если стартового адреса нет - никакая другая обработка записи не производится.
  8. Если в записи есть стартовый адрес, проверяется, не был ли он уже установлен.
  9. Если стартовый адрес не был установлен, он устанавливается.
  10. Если стартовый адрес был установлен, выдается сообщение об ошибке. (Ни эта, ни последующие рассмотренные ошибки не приводят к немедленному завершению 1-го прохода, однако, если на 1-ом проходе были ошибки, 2-й проход не выполняется).
  11. При обработке записи связывания выполняется перебор элементов Таблицы внешних символов...
  12. ... и разветвление - в зависимости от типа элемента.
  13. Для элемента - сегмента вычисляется начальный адрес следующего сегмента и длина сегмента прибавляется к общему размеру программы.
  14. Для элемента - входной точки ищется имя точки в Глобальной таблице .
  15. Если имя не найдено в Глобальной таблице, в таблицу добавляется новый элемент.
  16. Если имя найдено в Глобальной таблице, - ошибка, неуникальное внешнее имя.
  17. При окончании 1-го прохода проверяется, установился ли адрес стартовой точки программы.
  18. Если этот адрес не установлен - ошибка.
  19. Если этот адрес установлен и в ходе выполнения 1-го прохода не было других ошибок, Загрузчик продолжает работу.
  20. Выделяется память для программы в соответствии с ее размером.
  21. В Глобальную таблицу внешних символов записываются фактические адреса.
  22. Выполняется 2-й проход.
  23. Освобождается Глобальная таблица
  24. Если не было ошибок на 2-ом проходе
  25. ... управление передается на стартовый адрес программы
  26. Загрузчик завершает работу.




- Начало -  - Назад -  - Вперед -