|
|
|
|
Структуры данных ввода/вывода DOS
DOS поддерживает много важных для TSR структур. Некоторые из них являются общими для всех резидентных программ. Например, DOS поддерживает две
системные таблицы файлов, одна для обработчика доступа, другая для функционирования блока управления файлом (FCB). Все программы имеют доступ к
одним и тем же системным таблицам. Другие структуры данных индивидуальны для каждой программы. Например, каждая программа имеет свой сегмент
программного префикса (PSP).
Когда DOS загружает программу, она записывает PSP этой программы в общие переменные (В DOS 3.10 эти переменные размещены со смещением 02DEh в
сегменте DOS). Программа, чей PSP записан в сегменте DOS, становится текущей. Как только IBMBIO загрузила ядро системы, имеется всегда одна и
только одна текущая программа.
Когда программа делает запрос на ввод/вывод, она передает DOS описатель или блок управления файлом. Для обработки описателя файла DOS должен найти
структуру данных, известную как рабочая таблица файлов (JFT). Каждый PSP содержит адрес JFT на смещении 34h (Листинг 4-5 "Структура PSP"). Для
нахождения текущей JFT DOS проcматривает PSP текущей программ. Обычно JFT начинается со смещения 18h PSP (т.е. адрес JFT указывает другое смещение
внутри PSP). Для получения номера системного файла (SFN), который, в свою очередь, является индексом в системной таблице файлов, DOS использует
описатель как индекс в JFT. Одно из неописанных полей внутри FCB содержит номер системного файла(FSN); этот SFN является индексом системной таблицы
файлов FCB. Эта системная таблица указывает DOS, как найти устройство.
|
|