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. |