1. Основные компоненты ДОС
Всю систему можно разделить на шесть основных частей, функции каж-
дой мз которых мы кратко рассмотрим в этом разделе. Первая часть - это
система BIOS в ПЗУ. Это система поставляется вместе с IBM/PC и может
использоваться любой операционной системой. Функция BIOS в ПЗУ заключа-
ется в обслуживании основных и наиболее фундаментальных операций компь-
ютера. Поскольку система BIOS в ПЗУ для IBM/PC является "встроенной" в
комптютер, она является не только составной частью ДОС, но и составной
частью любой операционной системы IBM/PС.
Еще одна часть - "загрузочная запись" дискеты. Загрузочная запись
- это очень короткая и простая программа, находящаяся в первом секторе
каждой дискеты. Функция этой программы заключается в запуске процесса
загрузки операционной системы после включения компьютера или перезапус-
ка (нажатия клавиш CTRL-Alt-Del). Загрузочная запись считывает еще два
модуля операционной системы в память и они завершают процесс загрузки
ДОС.
Следующие две части ДОС представляют собой дисковые файлы
IBMBIO.COM и IBMDOS.COM. Обе эти части загружаются в память загрузочной
записью и остаются в памяти во время работы ДОС, так что провести между
ними различие довольно трудно. Файл IBMBIO.COM представляет собой изме-
няемое дополнение к системе BIOS в ПЗУ. Начиная с версии 2.00 файл
IBMBIO.COM может дополняться другими частями, называемыми независимыми
драйверами устройств, которые мы подробнее рассмотрим несколько позже.
Система BIOS в ПЗУ, IBMBIO.COM и драйверы устройств, вместе взятые об-
разуют "физический" уровень операционной системы.
Файл IBMDOS.COM реализует основные услуги ДОС. Это "логический"
уровень ввода/вывода операционной системы.
Оба эти файла являются "скрытыми" системными файлами. Имена этих
файлов не включаются в оглавление диска, вызываемое по команде DIR. Од-
на из функций IBMBIO.COM заключается в загрузке еще одного модуля опе-
рационой системы.
Пятая часть - это дисковый файл COMMAND.COM. Главная функция
COMMAND.COM заключается в обработке команд, вводимых пользователем. Ко-
манды ДОС, считающиеся внутренними, такие как TYPE, COPY и DIR факти-
чески реализуются программами COMMAND.COM. Собственно COMMAND.COM раз-
деляется на две части: одна становится частью IBMDOS.COM, а вторая -
процессором дополнительных команд.
Шестая и последняя часть ДОС состоит из всех внешних команд, таких
как FORMAT и DISKCOPY. Функции этих команд различны и реализующие их
программы загружаются в память только в случае необходимости. В отличие
от остальных пяти частей ДОС, все эти дополнительнве программы не явля-
ются интегральной составляющей ДОС, хотя они и поставляются вместе с
ней. Некоторые из этих дополнительных программ, например, FORMAT, нас-
только важны, что обойтись без них практически невозможно.
Внешние команды являются нерезидентными частями ДОС, поскольку они
не находятся в памяти постоянно. Файлы IBMBIO.COM, IBMDOS.COM и драйве-
ры устойств находятся в памяти постоянно и образуют резидентную часть
ДОС. Файл COMMAND.COM можно выделить в отдельную категорию как полу-ре-
зидентную составляющую ДОС, о чем речь пойдет ниже. Загрузочная запись
используется только временно и поэтому не является резидентной частью
ДОС. В следующих шести разделах мы более подробно рассмотрим каждую из
частей ДОС.
- 2 -
2. Система BIOS в ПЗУ
Первая часть в ДОС - это BIOS в ПЗУ или базовая система ввода/вы-
вода, размещающаяся в постоянной памяти. Эта система обеспечивает наи-
более простые и универсальные услуги операционной системы, связанные с
осуществлением ввода/вывода.
Система BIOS располагается в ПЗУ начиная с адреса FE00 и до FFFF,
сразу же после интепретатора БЕЙСИКа.
Поскольку BIOS в ПЗУ является частью IBM/PC, она может изменяться
только в том случае, когда изменениям подвергается аппаратная реализа-
ция системы. В качестве составной части IBM/PC, система BIOS в ПЗУ яв-
ляется не просто одной из частей ДОС, но частью любой операционной сис-
темы IBM/PC.
Система BIOS в ПЗУ состоит из нескольких частей, большинство из
которых представляет собой программы (остальные - это важные таблицы
данных, которые мы рассмотрим в последующих главах). Программа системы
BIOS, которая выполняется первой, представляет собой тест функциониова-
ния.
Эта программа поверяет память и внешние устройства, подключенные к
IBM/PC, как только будет включено питание компьютера. Работа этой прог-
раммы определяет ту задержку, которая имеет место между включением пи-
тания и загрузкой операционной системы. Чем больший объем памяти подк-
лючен к Вашему компьютеру, тем дольше выполняется тест, поскольку наи-
более длительной процедурой является процедура поверки памяти.
Следующая часть BIOS, которая должна выполняться как программа за-
пуска операционной системы, - это программа вызова загрузчика операци-
онной системы. Эта программа проверяет, подключен ли дисковод с гибкими
дисками и считывает с дискеты "загрузочную запись". После считывания
загрузочной записи программа запуска передает ей управление, чтобы она
считала оставшиеся части операционной системы.
Если в системе нет дисковода или при считывании загрузочной записи
произошла ошибка, то программа запуска BIOS передает управление кассет-
ной системе БЕЙСИК. Если Вы включите IBM/PC, не установив дискету в
дисковод, то Вы увидите, что начала работу программа системы БЕЙСИКа.
Помимо двух уже описанных частей - автономного теста функцонирова-
ния и программы запуска, система BIOS в ПЗУ содержит множество других
программ и они-то представляют для нас наибольший интерес. Сюда входят
программы обслуживания всего стандартного периферийного оборудования
IBM/PC. Эти программы выполняют основные функции управления клавиату-
рой, дисплеем, дискетами, асинхронным адаптером связи, устройством пе-
чати и кассетным интерфейсом. Работой с этими программами нам необходи-
мо овладеть, чтобы полностью использовать все возможности IBM/PC.
3. Начальная загрузка - загрузочная запись
Загрузочная запись необходима для запуска ДОС. Принцип использова-
ния загрузочной записи реализован практически на всех компьютерах. Заг-
рузочная запись содержит минимум необходимых команд для считывания и
запуска основных частей операционной системы.
При запуске IBM/PC либо включением питания, либо нажатием клавиш
Ctrl-Alt-Del, процедура запуска системы BIOS в ПЗУ считывает первую за-
пись дискеты, установленной в дисковод А и помещает ее в стандартную
область памяти, по адресу 31744 или 7С00 (шестнадцатиричное). После
считывания загрузочной записи BIOS передает ей управление, выполняя пе-
реход по адресу 31744. Далее загрузочная запись должна продолжить заг-
рузку операционной системы.
Основное назначение загрузочной записи для ДОС заключается просто
в загрузке файлов IBMBIO.COM и IBMDOS.COM. Загрузочная запись имет раз-
мер стандартного сектора на дискете, 512 байт, что недостаточно для
сложной программы. Для упрощения работы этой программы, оба файла,
- 3 -
IBMBIO.COM и IBMDOS.COM, размещаются в определенных постоянных местах
на дискете. Это избавляет программу загрузки от необходимости искать их
в справочнике дискеты.
Этим, кстати, "системная" дискета отличается от обычной - на ней,
в определенных местах, находятся два системных файла IBMDOS.COM и
IBMBIO.COM. Поэтому нельзя просто преобразовать обычную дискету в сис-
темную - места, зарезервированные для системных файлов, могут быть за-
няты другими файлами.
Хотя загрузочная программа не столь совершенна, чтобы осуществлять
поиск системных файлов, она все же способна проверить правильность их
включения в справочник. Поскольку оба системных файла включены в спра-
вочник дискеты, они защищены как от стирания, так и от любых других
способов доступа установлением атрибутов скрытого и системного файла.
(В следующей главе мы поясним, что такое скрытые и системные файлы).
В связи с простотой ее задачи, программа загрузки
является относительно стабильной составной частью ДОС. Ее
потребовалось изменить, когда изменялся размер или
местоположение системных файлов, а это произошло с введением
поддержки двухсторонних дискет в версии ДОС 1.10.
4. IBMBIO.COM
Первый из двух системных файлов, IBMBIO.COM, предназначен для до-
полнения функций системы BIOS в ПЗУ. Как BIOS в ПЗУ, так и IBMBIO.COM
занимаются обслуживанием операций ввода/вывода или обслуживанием уст-
ройств, что то же самое. Такая функция предполагает обработку различных
подробностей, связанных с функционированием устройств ввода/вывода. Сю-
да же включается обнаружение ошибок и их исправление, что для программ
еще сложнее.
Программы IBMBIO.COM отличаются тем, что их легко можно изменить,
чего нельзя сказать о программах BIOS в ПЗУ. Файл IBMBIO.COM предназна-
чен для решения трех задач, которые невозможно решить с помощью системы
BIOS в ПЗУ. Первая задача заключается в настройке на нужды конкретной
операционной системы, ДОС.
Вторая задача IBMBIO.COM заключается в исправлении любых ошибок в
BIOS в ПЗУ, если в этом возникнет необходимость. Программы, подобные
системе BIOS, проверяются очень тщательно, ведь их размещение в ПЗУ не
допускает исправлений. Если ошибки все же будут позднее обнаружены в
BIOS, их можно будет исправить путем внесения соответствующих изменений
в IBMBIO.COM. Это делается путем изменения векторов прерываний таким
образом, чтобы управление при обращении к операциям BIOS сначала попа-
дало в IBMBIO.COM, а уже затем в BIOS. Соглашения о вызовах процедур
системы BIOS в ПЗУ всегда предполагает использование прерываний, вместо
прямых переходов по адресам ПЗУ. Основная причина использования преры-
ваний как раз и состоит в обеспечении возможностей перехвата управления
у процедур BIOS, ведь, в противном случае, такой возможности просто не
существовало бы.
Третья задача, которую не позволяет решить BIOS, и, которую за нее
решает IBMBIO.COM, заключается в обслуживании новых периферийных уст-
ройств, таких как жесткие диски большой емкости, или восьмидюймовые
(203мм) дискеты, или плоттеры, или любые из сотен устройств, которые
могут быть подключены к IBM/PC. Когда новое устройство ввода/вывода
подключается к IBM/PC, обслуживающая его программа должна включаться в
файл IBMBIO.COM или его расширения, без необходимости замены микросхем
ПЗУ, в которых размещается система BIOS.
В наиболее ранних версиях ДОС задача включения нового устройства в
систему предполагала внесение изменений в IBMBIO.COM и, возможно, в
другие системные программы ДОС. Хотя это не слишком сложно для таких
фирм как "ИБМ" или "Майкрософт", такая задача может оказаться непосиль-
- 4 -
ной для пользователя, которому требуется включить дополнительное обору-
дование в свою систему.
Поскольку возможность добавления новых устройств к компьютеру сос-
тавляет немаловажное условие его успеха на рынке, процедура включения
обслуживающих программ в ДОС была упрощена, начиная с ДОС версии 2.00.
Когда управление впервые после запуска системы передается IBMBIO.COM,
он проверяет, находится ли на дискете файл конфигурации системы. Если
файл конфигурации найден, считываются его команды, часть которых опре-
деляет ряд параметров системы.
Команды файла конфигурации включают имена всех программ обслужива-
ния устройств, которые необходимо включить в BIOS. Каждая из этих прог-
рамм загружается в память как дополнение к IBMBIO.COM. Такая схема об-
легчает добавление новых устройств, позволяет делать это модульно, не
затрагивая системные файлы ДОС.
Как правило, любая программа, работающая на IBM/PC, будет исполь-
зовать обычную версию BIOS для ДОС. Однако, в некоторых случаях прог-
рамме необходимо бывает особое обслуживание операций ввода/вывода. Пос-
кольку IBMBIO.COM представляет собой дисковый файл, который можно изме-
нить, имеет смысл разработать версию IBMBIO.COM, настроенную на Ваши
конкретные нужды. Пример такой настройки Вы можете найти в диагности-
ческих программах.
5. IBMDOS.COM
Разделение операционной системы на два модуля, IBMBIO.COM и
IBMDOS.COM позволяет разделить те части, которые специфичны для конк-
ретного компьютера и те, которые являются общими для всех компьютеров,
работающих под управлением ДОС.
Служебные процедуры ДОС, в определенной степени произвольно, раз-
делены на те, которые вызываются с помощью собственных прерываний, и
те, которые разделяют общее прерывание (номер 33, шестнадцатиричное
значение 21). В терминологии ДОС, первая группа называется прерываниями
ДОС, а вторая - вызовами функций. В обоих случаях для их вызова исполь-
зуются программные прерывания, причем по той же причине, что и для вы-
зова программ BIOS: для обеспечения модульности.
Диапазон прерываний от 32 до 63 (шестнадцатиричные значения от 20
до 3F) зарезервированы для использования ДОС. Используется только часть
этих прерываний, а остальные обеспечивают возможность дальнейшего рас-
ширения. Программы обслуживания прерываний ДОС включают чтение и запись
секторов дискеты, доступ к контролю за ошибками ДОС и операциями клави-
атуры Ctrl-Break.
Вызовы функций ДОС обеспечивают, в основном, промежуточный уровень
обслуживания операций ввода/вывода. В качестве примеров можно упомянуть
ввод с клавиатуры, обычный вывод на экран дисплея, ввод/вывод по асинх-
ронной линии связи и вывод на печать. Предусмотрены также логические
операции для дискет - открытие и закрытие файлов, поиск в справочнике
файлов, удаление и создание файлов, чтение и запись данных. Эти проце-
дуры обеспечивают практически все элементарные операции, которые могут
потребоваться программе для работы с файлами и данными, хранящимися в
файле, так чтобы программе не приходилось самостоятельно расшифровывать
данные справочников, таблиц размещения файлов и т.п.
Большая часть этих служебных процедур ДОС интенсивно используется
программами более высокого уровня ДОС. Например, процедура поиска в
справочнике используется командами DIR и COPY. Кроме того, она исполь-
зуется интерпретатором команд для поиска программных файлов. В разделе
4.9 будет рассмотрен полный список служебных процедур ДОС.
6. Файл COMMAND.COM и внутренние команды
- 5 -
Следующая составная часть ДОС, файл COMMAND.COM, одна из наиболее
интересных частей, как с точки зрения тех услуг, которые она предостав-
ляет пользователю, так и с точки зрения принципов ее функционирования.
COMMAND.COM имеет несколько функций. Прежде всего, это "процессор ко-
манд", что означает возложенные на него функции ввода команды, набирае-
мой на клавиатуре, и определения дальнейших действий.
Когда вводится внутренняя команда, такая как DIR, COPY, TYPE, REM
или PAUSE, то запрашивается случайная процедура, "встроенная" в
COMMAND.COM, так что она может выполняться немедленно.
Чтобы распознавать внутренние команды, COMMAND.COM содержит табли-
цу имен команд. Если просмотреть файл COMMAND.COM, то можно увидеть эти
имена команд. Для просмотра файла COMMAND.COM можно воспользоваться
программой DEBUG или DiskLook. Там же Вы увидите сообщение, которое ДОС
выдает в начале работы. При желании эти сообщения можно изменить с по-
мощью команды DEBUG или SecMod, так чтобы ДОС начинала работу выдачей
Вашей фамилии или названия компании. Можно также изменить и имена внут-
ренних команд, причем сделать это просто, если не изменяется длина име-
ни.
Если команды нет в таблице внутренних команд, значит имеется в ви-
ду внешняя команда, которую COMMAND.COM будет искать во внешнем файле.
В ответ на наш запрос, COMMAND.COM осуществляет поиск файла обработки
команды на соответствующей дискете и запускает его выполнение.
Когда COMMAND.COM находит программный файл в любом
формате, он выполняет загрузку этого файла в память и
выполняет любое необходимое преобразование. После загрузки
файла и формирования приставки программного сегмента,
COMMAND.COM передает управление этой программе, так чтобы она
могла выполнить свою работу.
Если файл обработки команды относится к типу ".BAT", то есть явля-
ется файлом пакетной обработки, то он содержит в формате текстового
файла в коде ASCII последовательность команд, которые должны выполнять-
ся так, как будто они вводятся с клавиатуры. Одна из многих задач
COMMAND.COM заключается в отслеживании позиции в файле пакетной обра-
ботки, так чтобы после выполнения одной команды сразу переходить к дру-
гой. Если в процессе обработки одного пакетного файла будет вызван дру-
гой, то возврата к первому не произойдет, так как файлы пакетной обра-
ботки не могут быть вложенными, зато их можно объединять в цепочку.
В некоторых системах весь ввод команд может быть переназначен на
файл, причем это относится как к программам, вводящим данные с клавиа-
туры, так и к интерпретатору команд. К ДОС это не относится. Только ин-
терпретатор команд COMMAND.COM может автоматически выполнять чтение из
файлов пакетной обработки.
Кстати, программы могут вносить изменения в файл пакетной обработ-
ки и таким образом определять, какая команда будет выполнена следующей.
Это часто делается в сложных приложениях для замены последовательного
выполнения программ.
Командный процессор, COMMAND.COM состоит из трех отдельных частей:
1. Резидентной части, размещаемой в ОЗУ непосредственно за
IBMDOS.COM и ее рабочей областью. Эта часть содержит подпрограммы обра-
ботки прерываний 22H (адрес завершения), 23H (реакция на Ctrl-Break) и
24H (реакция на фатальную ошибку), а также подпрограмму подзагрузки не-
резидентных частей. (При завершении программы вычисляется контрольная
сумма области нерезидентной части командного процессора, и выясняется,
не затерта ли она. Если да, то нерезидентная часть подзагружается). За-
метим, что вся стандартная обработка ошибок производится этой частью
COMMAND.COM. Это включает выдачу сообщений об ошибках и обработку отве-
та на вопрос "Abort, Retry or Ignore".
- Часть инициализации располагается в памяти вслед за резидентом и
- 6 -
получает управление при запуске системы. Эта часть включает обработку
файла AUTOEXEC.BAT. Она также определяет адрес, начиная с которого мо-
гут загружаться программы. Эта часть перекрывается первой же програм-
мой, загружаемой COMMAND, так как не используется после выполнения ини-
циализации.
- Нерезидентые части загружаются в конец (старшие адреса) ОЗУ. Их
две: собственно командный процессор (часть 3), выполняющий обработку
диалогjds[ команд и из командных файлов, и (часть 4) загрузчик, загру-
жающий и выполняющий нерезидентные команды (т.е. файлы с расширениями
.COM или .EXE). Загрузчик располагается в самом конце ОЗУ и вызsвается
операцией вызова и загрузки прогамм (Exec).
Часть 3 COMMAND выдает приглашение (напр. A>), принимает команды с
клавиатуры (или из командного файла) и начинает их выполнение. Для не-
резидентных команд она формирует командную строку и выполняет операцию
Exec для загрузки и вызова соответствующей программы.
7. Внешние команды
Последнюю часть операционной системы ДОС составляют внешние коман-
ды. Они называются внешними, поскольку они не включены в состав ДОС, и
не являются резидентными в памяти IBM/PC. Вместо этого, внешние команды
хранятся в программных файлах на дискетах.
Как все программные файлы, все внешние команды имеют расширение
имени файла ".COM" или ".EXE", что указывает, в каком из форматов они
оформлены. Мы рассмотрим эти форматы, когда будем рассматривать струк-
туру дискет и файлов в следующей главе.
Примерами внешних команд могут служить DISKCOPY, COMP, FORMAT, а
такие программы как EDLIN, BASIC или BASICA тоже в определенном смысле
являются внешними командами, хотя их лучше все же считать языковыми
процессорами, такими как макроассемблер или Паскаль.
Внешние команды не отличаются от других программных файлов, кото-
рые Вы сами разрабатываете или покупаете. С одной точки зрения внешние
команды действительно являются частью операционной системы, особенно
те, без которых операционной системой нельзя воспользоваться, такие как
FORMAT. Однако, с другой точки зрения, внешние команды - это всего лишь
вспомогательные программы, утилиты, которые полезны, но которые не яв-
ляются операционной системой. Разница между внешней командой ДОС и
обычной программой заключается просто в Вашем отношении к ней - как к
части ДОС или как к чему-нибудь малосущественному.
8. Инициализация DOS
При запуске системы (либо операцией перезагрузки системы ), либо
при включении питания с системной дискетой в устройстве A:), блок на-
чальной загрузки считывается в память и получает управление. Он прос-
матривает каталог, чтобы убедиться, что первые два файла суть
IBMBIO.COM и IBMDOS.COM (в указанном порядке). Если эти файлы не обна-
ружены, на экран выдается сообщение об ошибке, иначе оба файла считыва-
ются в оперативную память. (IBMBIO.COM должен быть первым файлом в кор-
невом каталоге и располагаться на последовательных секторах).
Подпрограмма инициализации в IBMBIO.COM определяет состояние обру-
дования, инициализирует дисковую систему и подключенные устройства,
загружает драйверы устройств, и устанавливает значения младших вектров
прерываний. Затем она выполняет настройку адресов в IBMDOS.COM и пере-
дает управление на первый байт DOS.
Так же как и в IBMBIO.COM, первый байт DOS содержит переход на
подпрограмму инициализации, которая после выполнения перекрывается об-
ластью данных командного процессора. DOS инициализирует свои внутренние
- 7 -
рабочие таблицы, инициализирует вектора прерываний 20-27 и формирует
Префикс Программного Сегмента (См. Гл. 6) для COMMAND.COM в самом млад-
шем доступном сегменте; затем она возвращается в IBMBIO.COM.
Последнее инициализационное действие IBMBIO.COM заключается в заг-
рузке COMMAND.COM по адресу, установленному подпрограммой инициализации
DOS. Затем IBMBIO.COM передает управление на первый байт COMMAND.
|