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

Глава 22 Программный загрузчик

__________________________________________________________________________

Ц е л ь: Раскрыть особенности загрузки выполнимых модулей в память

для выполнения.

ВВЕДЕНИЕ

________________________________________________________________

В данной главе описана организация базовой версии DOS и операции,

которые выполняет DOS для загрузки выполнимых модулей в память для

выполнения. DOS состоит из четырех основных программ, которые обеспечивают

конкретные функции:

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

дорожки дискеты DOS, а также на любом диске, форматированном командой

FORMAT /S. Когда вы инициируете систему (предполагается, что DOS

расположен на дисководе A или C) происходит автоматическая загрузка с

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

программу, которая затем загружает с диска в память три программы,

описанные ниже.

2. Программа IBMBIO.COM обеспечивает интерфейс низкого уровня с

программами BIOS в ROM; она загружается в память, начиная с адреса

шест.00600. При инициализации программа IBMBIO.COM определяет

состояние всех устройств и оборудования, а затем загружает программу

COMMAND.COM. Программа IBMBIO.COM управляет операциями ввода-вывода

между памятью и внешними устройствами, такими как видеомонитор и

диск.

3. Программа IBMDOS.COM обеспечивает интерфейс высокого уровня с

программами и загружается в память, начиная с адреса шест.00B00. Эта

программа управляет оглавлениями и файлами на диске, блокированием и

деблокированием дисковых записей, функциями INT 21H, а также содержит

ряд других сервисных функций.

4. Программа COMMAND.COM выполняет различные команды DOS, такие

как DIR или CHKDSK, а также выполняет COM, EXE и BAT-программы. Она

состоит из трех частей: небольшая резидентная часть, часть

инициализации и транзитная часть. Программа COMMAND.COM, подробно

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

программ с диска в память.

На рис.22.1 показана карта распределения памяти. Некоторые элементы

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

__________________________________________________________________________

Начальный Программа

адрес

00000 Векторная таблица прерываний (см.гл.23)

00400 Область связи с ROM (ПЗУ)

00500 Область связи с DOS

00600 IBMBIO.COM

XXXX0 IBMDOS.COM

Буфер каталога

Дисковый буфер

Таблица параметров дисковода или таблица распределения файлов

(FAT, по одной для каждого дисковода)

XXXX0 Резидентная часть COMMAND.COM

XXXX0 Внешние команды или утилиты (COM или EXE-файлы)

XXXX0 Пользовательский стек для COM-файлов (256 байтов)

XXXX0 Транзитная часть COMMAND.COM, записывается в самые старшие

адреса памяти.

__________________________________________________________________________

Рис.22.1. Карта распределения DOS в памяти.

КОМАНДНЫЙ ПРОЦЕССОР COMMAND.COM

________________________________________________________________

Система загружает три части программы COMMAND.COM в память во время

сеанса работы постоянно или временно. Ниже описано назначение каждой из

трех частей COMMAND.COM:

1. Резидентная часть непосредственно следует за программой

IBMDOS.COM (и ее области данных), где она находится на протяжении

всего сеанса работы. Резидентная часть обрабатывает все ошибки

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

INT 22H Адрес программы обработки завершения задачи.

INT 23H Адрес программы реакции на Ctrl/Break.

INT 24H Адрес программы реакции на ошибки дисковых операций

чтения/записи или сбойный участок памяти в таблице

распределения файлов (FAT).

INT 27H Завершение работы, после которого программа остается

резидентной.

2. Часть инициализации непосредственно следует за резидентной

частью и содержит средства поддержки AUTOEXEC-файлов. В начале работы

системы данная часть первой получает управление. Она выдает запрос на

ввод даты и определяет сегментный адрес, куда система должна

загружать программы для выполнения. Ни одна из этих программ

инициализации не потребуются больше во время сеанса работы. Поэтому

первая же команда вводимая с клавиатуры и вызывающая загрузку

некоторой программы с диска перекрывают часть инициализации в памяти.