|
В целях повышения надежности
обработки прерываний ISR int 28h выполняет запросы BIOS, обслужи-
ваемые в стеке дискового в/в. Все прерывания функций int 21h, но-
мер которых больше номера 0Ch (за исключением функций, обрабаты-
ваемых без переключения стека), DOS обслуживает в стеке дискового
в/в.
Глобальные переменные DOS
Для сохранения информации о состоянии функционирования и для
поддержки контекста запросов BIOS операционная система DOS ис-
пользует многие глобальные переменные. DOS обеспечивает рабочую
область буферизованного ввода и для поддержки буферизованного ре-
дактирования входной строки сохраняет дорожку текущего столбца.
Одни переменные управляют протоколированием экрана, алгоритмом
распределения памяти и текущим переключением символов. Глобальные
переменные включают флажки критической ошибки и критической сек-
ции, текущую PSP и текущую дисковую область передачи (DTA - disk
transfer area). Другие глобальные переменные описывают операции
обработки в/в; они записывают адреса входов SFN, JFT и много дру-
гой важной и полезной информации о запросе.
DTA является "коварной" структурой данных, потому что DOS ис-
пользует ее в непредсказуемых случаях. Для грамматического разбо-
ра имен файлов и поиска каталогов DOS поддерживает свою собствен-
ную DTA, а результаты этих операций она копирует в DTA
пользователя. DOS замещает адрес DTA адресом буфера для чтения и
записи обрабатываемого файла. Такие операции как find first/find
next (найти первый/найти следующий) осуществляют запись непос-
редственно в текущий DTA.
Запросы, выполняемые с помощью TSR, как "побочный" эффект мо-
гут изменить глобальные переменные DOS. Операционная система DOS
не ожидает, что другая программа будет просматривать ее глобаль-
ные переменные, и, вероятно, придет в замешательство, если эти
глобальные переменные будут изменены.
Обработка break
DOS проверяет наличие break в двух случаях. Если запрос дол-
жен быть обработан в дисковом стеке и если проверка break разре-
шена, диспетчер прерывания int 21h вызывает подпрограмму проверки
break.
|