
- •1. Структура и принципы работы ms-dos
- •1.1. Основные компоненты операционной системы
- •Msdos.Sys
- •Command.Com
- •Config.Sys
- •Autoexec.Bat
- •Wina20.386
- •Драйверы
- •Внешние команды
- •Подготовка системной дискеты
- •Программа fdisk
- •Резидентные программы
- •1.2. Процесс загрузки операционной системы
- •1.3. Состав и общая схема работы ms-dos
- •Файловая система
- •Система управления памятью
- •Система управления программами
- •Система связи с драйверами устройств
- •Система обработки ошибок
- •Служба времени
- •Работа с консолью оператора
- •Другие системы ms-dos
- •1.4. Обзор прерываний bios
- •Определение конфигурации компьютера
- •Определение объема оперативной памяти
- •Работа с видеоконтроллером
- •Выбрать видеорежим (00h)
- •Установить размеры и форму курсора (01h)
- •Свернуть окно (06h, 07h)
- •Работа с клавиатурой
- •Обслуживание дисковой подсистемы
- •Перезагрузка операционной системы
- •Системный сервис для машин класса at
- •1.5. Обзор прерываний ms-dos
- •Получение системной информации
- •Символьный ввод и вывод
- •Работа с файловой системой
- •Управление программами
- •Управление памятью
- •Связь с драйверами устройств
- •Другие функции
- •1.6. Обработка ошибок
- •1.7. Вызов прерываний ms-dos
- •1.8. Программа errcode
- •1.9. Переменная errno
- •1.10. Программа errno
Резидентные программы
Обычные программы MS-DOS удаляются из оперативной памяти сразу после своего завершения. В отличие от них резидентные программы остаются в памяти и могут быть активизированы при помощи заранее заданной комбинации клавиш, по инициативе другой программы, либо как результат возникновения аппаратного прерывания.
В некоторых случаях резидентные программы выполняют функции драйвера устройства ввода/вывода. Однако чаще они используются, для того чтобы пользователь, работая с какой-либо программой, мог запустить другую, не прерывая работу с текущей программой.
Например, пользователь работает с текстовым процессором. И тут ему потребовалось поискать что-нибудь в справочной базе данных, сделать вычисления на калькуляторе и т. п. Для этого ему достаточно активизировать нужную резидентную программу, нажав соответствующую комбинацию клавиш. После завершения работы с резидентной программой пользователь может вернуться к редактированию текста или другой прерванной работе.
К сожалению, в документации для программиста нет четкого стандарта, регламентирующего поведение резидентных программ. Поэтому неизбежны конфликты между различными резидентными программами, а также несовместимость одних резидентных программ с другими. Ситуация усугубляется необходимостью применения недокументированных прерываний.
В качестве альтернативы пользователь MS-DOS версий от 5.0 и выше может использовать переключатель задач. Однако этот способ имеет свои недостатки.
1.2. Процесс загрузки операционной системы
При включении питания компьютера управление передается базовой системе ввода/вывода BIOS. Она выполняет проверку аппаратуры компьютера, формирует начальную часть таблицы векторов прерываний, инициализирует устройства и начинает процесс загрузки операционной системы.
Загрузка начинается с того, что BIOS делает попытку прочитать самый первый сектор дискеты, вставленной в дисковод А: (на системной дискете этот сектор содержит загрузчик операционной системы). Если в дисковод вставлена системная дискета, с ее самого первого сектора считывается загрузчик. Затем ему передается управление. Если дискета не системная, т. е. не содержит загрузочной записи, на экран выводится сообщение с просьбой заменить дискету.
Если же дискеты в дисководе А: вообще нет, то BIOS читает основную загрузочную запись (Master Boot Record), расположенную в начале диска С:. Обычно это самый первый сектор на диске. Управление передается загрузчику, который находится в этом секторе. Загрузчик анализирует содержимое таблицы разделов (она также находится в первом секторе), выбирает активный раздел и читает загрузочную запись этого раздела. Загрузочная запись активного раздела (Boot Record) аналогична загрузочной записи, расположенной в первом секторе системной дискеты.
Загрузочная запись активного раздела считывает с диска файлы io.sys и msdos.sys (именно в этом порядке). Затем считываются и загружаются драйверы, встроенные в MS-DOS. Анализируется содержимое файла config.sys, загружаются перечисленные в этом файле драйверы. Сначала загружаются драйверы, описанные операторами device, затем - резидентные программы, указанные оператором install. После этого считывается командный процессор command.com и ему передается управление.
Командный процессор состоит из трех частей - резидентной, инициализирующей и транзитной. Первой загружается резидентная часть. Она обрабатывает прерывания INT 22h, INT 23h, INT 24h, управляет загрузкой транзитной части. Эта часть командного процессора обрабатывает ошибки и выдает запрос пользователю о действиях при обнаружении ошибок.
Инициализирующая часть используется только в процессе загрузки операционной системы. Она определяет начальный адрес, по которому будут загружаться запускаемые программы и инициализирует выполнение файла autoexec.bat.
Транзитная часть командного процессора располагается в старших адресах памяти. В этой части находятся обработчики внутренних команд MS-DOS и интерпретатор пакетных файлов (с расширением имени .bat). Транзитная часть выдает системное приглашение (например, А:\>), ожидает ввода команды оператора с клавиатуры или из пакетного файла и организует их выполнение.
После загрузки командного процессора и выполнения начальных процедур, перечисленных в файле autoexec.bat, подготовка системы к работе завершена.