2 Векторная таблица связи MSDOS



2. Векторная таблица связи MS-DOS

Вслед за областью данных BIOS в оперативной памяти IBMPC располагается область данных DOS. Здесь располагаются внутренние переменные и структуры DOS. Основные структуры данных организованы в виде дерева. Корнем является векторная таблица связи, которая содержит адреса всех остальных структур: список блоков управления памятью (MCB), список блоков управления устройствами DOS, таблицу файлов, дисковые буфера.

Векторная таблица связи содержит и другую полезную информацию, открывающую доступ практически ко всем внутренним структурам данных операционной системы. Можно, например, получить доступ ко всем резидентным и загружаемым драйверам операционной системы. Можно узнать, какие дисковые устройства установлены в системе и каковы их характеристики. Зная форматы управляющих блоков операционной системы, можно анализировать ошибочные ситуации, возникающие при отладке программного обеспечения, разрабатывать программы, отображающие внутреннее состояние системы и конфигурацию устройств.

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

Многочисленные управляющие блоки, которые использует файловая система и BIOS при работе с дисковыми устройствами, будут описаны в книге 3, посвященной файловой системе.

Прикладная программа может пользоваться услугами DOS, вызывая прерывание INT 21H. Это прерывание имеет несколько десятков функций, которые и представляют собой интерфейс между DOS и прикладной программой. С помощью этих функций прикладная программа получает доступ к файловой системе, может обращаться к драйверам устройств, получать и устанавливать системные параметры, работать с дисплеем и клавиатурой и т.д.

Для полного использования возможностей прерываний DOS необходимы сведения о форматах различных управляющих блоков, используемых этими прерываниями.



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