4.1. Для чего нужны операционные системы?
Чтобы полностью овладеть всеми возможностями своего компьютера,
необходимо понимать его операционную систему. Предлагаемый в этой главе
краткий обзор позволит Вам понять, что собой представляет ДОС. Слишком
подробных знаний Вы не приобретете, но ознакомление с этой главой позволит
Вам начать с ней работать.
Назначение операционной системы заключается в обеспечении удобства
управления компьютером. Операционная система, в полном смысле этого
термина, является первой и наиболее важной программой любого компьютера.
Как правило, она является и наиболее сложной. Паразительно, что наиболее
совершенные программы используются только для управления самим
компьютером. Ирония здесь заключается в том, что компьютеры и программы
для них разрабатывались для выполнения полезной работы, а не как самоцель.
Но с другой стороны, наиболее мощный инструмент, созданный человеком,
компьютер, имеет достаточно возможностей, чтобы работать сам по себе и
человек не смог бы управлять им, если бы не операционная система.
Большая часть работы операционной системы заключается в том, чтобы
скрыть от пользователей некоторые сложные и ненужные им детали. В качестве
иллюстрации рассмотрим работу команды COPY в ДОС. Предположим, что мы
используем ее для копирования с одной дискеты на другую. Вам может
показаться, что это не очень сложная процедура. Рассмотрим, однако, лишь
некоторые действия, которые должна выполнить операционная система:
- Проверить, имеется ли на исходной дискете файл с указанным именем.
- Проверить, должно ли копирование выполняться не в файл на дискете,
а на какое-нибудь устройство (например, на устройство печати).
- Проверить, нет ли файла с таким именем на целевой дискете.
- Проверить, достаточно ли места на целевой дискете для размещения
файла (учитывая все свободное место на дискете, а, если копия файла уже
есть на дискете, то еще и место, которое она занимает).
- Если на целевой дискете должен создаваться новый файл, то
необходимо проверить, имеется ли свободное место в справочнике или он уже
заполнен.
- Установить формат исходной дискеты: односторонний или
двухсторонний?
- Установить формат целевой дискеты: односторонний или двухсторонний?
- Проверить, не копируется ли файл сам в себя (что запрещено).
- Проверить наличие в системе двух дисководов, поскольку для систем с
одним дисководом необходимо имитировать диск В.
- Проверить, необходимо ли вычислять размер исходного файла по его
размеру, указанному в справочнике, или он будет определяться маркером
конца файла (как для текстовых файлов в коде ASCII).
- Проверить, находится ли таблица размещения файлов для исходной
дискеты в оперативной памяти.
- Проверить, находится ли таблица размещения файлов для целевой
дискеты в оперативной памяти.
- Проверить корректность размещения исходного файла на дискете по
соответствующей таблице размещения файлов.
- Проверить, совпадает ли размер файла, указаный в справочнике, с
действительным размером.
- Установить, какой обьем памяти можно использовать в качестве буфера
при перезаписи файла.
- Проверить, больше или меньше 64К размер буфера.
- Нужно ли удалять из памяти интерпретатор команд, чтобы увеличить
размер буфера?
Вы еще не устали от этого перечисления? А ведь это еще только начало!
Пока что рассмотрен только логический уровень задачи. Ниже приводится
физический уровень, причем при его изменении опущено значительно больше
подробностей:
- Запущен ли двигатель дисковода?
- Выведена ли головка чтения/записи на нужную дорожку?
- Сколько секторов данных нужно считать/записать на этой дорожке?
- Готов ли дисковод к выполнению команды?
- Работает ли дискета? Не требуется ли перезапуск, повторная попытка
выполнения операции или повторное позиционирование головки?
- Если уже выполнялась повторная попытка, достаточно ли было сделано
попыток, чтобы выдать запрос о дальнейших действиях?
- Каким был ответ на запрос? Повторить, игнорировать или аварийно
завершить работу?
- Ожидание готовности дисковода?
- Операция чтения/записи/поиска завершилась успешно?
- Целевая дискета защищена от записи?
Все описанное выше является лишь приблизительным перечислением
подробностей операции копирования файла. А это еще относительно простая
операция ДОС. Кстати, приведенное разделение на логический и физический
уровни очень важно для работы операционной системы.
Основная забота операционной системы, такой как ДОС, заключается в
том, чтобы скрыть от пользователя эти ненужные ему подробности.
Значительная часть функций операционной системы заключается в обслуживании
устройств ввода/вывода.
Помимо физического уровня обслуживания ДОС обеспечивает и услуги
более высокого уровня, такие как поиск в справочниках, копирование файлов
и загрузку программ.
Один из путей достижения эффективности операционных систем - это
модульность их разработки. Операционная система упрощается и становится
более эффективной, если ее разработчики разделят все ее функции на
отдельные части. Затем эти части должны быть организованы в тщательно
спланированную иерархическую систему, в которой каждый уровень иерархии
выполняет присущие ему функции, освобождая уровни, находящиеся выше по
иерархии, от их выполнения (и, в свою очередь, не занимаясь деталями
функций, присущих нижним уровням). Теперь мы перейдем к рассмотрению
отдельных частей ДОС.
4.2. Шесть основных модулей ДОС
Всю систему можно разделить на шесть основных частей, функции каждой
из которых мы кратко рассмотрим в этом разделе. Первая часть - это система
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 реализует основные услуги ДОС. Это "логический"
уровень ввода/вывода операционной системы.
Оба эти файла являются "скрытыми" системными файлами (о которых
подробнее будет сказано в главе 5). Имена этих файлов не включаются в
оглавление диска, вызываемое по команде DIR. Команда CHKDSK (для ДОС
версии 1.10 и последующих) укажет, что эти файлы находятся на дискете, но
не сообщит их имена. Если Вы воспользуетесь процедурой DiskLook для
просмотра содержимого дискеты, то оба имени, IBMBIO.COM и IBMDOS.COM,
будут присутствовать в списке и их можно просматривать так же, как все
остальные файлы. Одна из функций IBMBIO.COM заключается в загрузке еще
одного модуля операционной системы.
Пятая часть - это дисковый файл COMMAND.COM. Главная функция
COMMAND.COM заключается в обработке команд, вводимых пользователем.
Команды ДОС, считающиеся внутренними, такие как TYPE, COPY и DIR
фактически реализуются программами COMMAND.COM. Собственно COMMAND.COM
разделяется на две части: одна становится частью IBMDOS.COM, а вторая -
процессором дополнительных команд. Более подробно об этом сказано в
разделе 4.7.
Шестая и последняя часть ДОС состоит из всех внешних команд, таких
как FORMAT и DISKCOPY. Функции этих команд различны и реализующие их
программы загружаются в память только в случае необходимости. В отличие от
остальных пяти частей ДОС, все эти дополнительные программы не являются
интегральной составляющей ДОС, хотя они и поставляются вместе с ней.
Некоторые из этих дополнительных программ, например, FORMAT, настолько
важны, что обойтись без них практически невозможно.
Внешние команды являются нерезидентными частями ДОС, поскольку они не
находятся в памяти постоянно. Файлы IBMBIO.COM, IBMDOS.COM и драйверы
устройств находятся в памяти постоянно и образуют резидентную часть ДОС.
Файл COMMAND.COM можно выделить в отдельную категорию как полу-резидентную
составляющую ДОС, о чем речь пойдет ниже. Загрузочная запись используется
только временно и поэтому не является резидентной частью ДОС. В следующих
шести разделах мы более подробно рассмотрим каждую из частей ДОС.
4.3. Система BIOS в ПЗУ
Первая часть в ДОС - это BIOS в ПЗУ или базовая система ввода/вывода,
размещающаяся в постоянной памяти. Эта система обеспечивает наиболее
простые и универсальные услуги операционной системы, связанные с
осуществлением ввода/вывода.
Система BIOS располагается в ПЗУ начиная с адреса FE00 и до FFFF,
сразу же после интерпретатора БЕЙСИКа. Распределение памяти, приведенное в
главе 3, показывает и размещение системы BIOS.
Поскольку BIOS в ПЗУ является частью IBM/PC, она может изменяться
только в том случае, когда изменениям подвергается аппаратная реализация
системы. В качестве составной части IBM/PC, система BIOS в ПЗУ является не
просто одной из частей ДОС, но частью любой операционной системы IBM/PC.
Система BIOS в ПЗУ состоит из нескольких частей, большинство из
которых представляет собой программы (остальные - это важные таблицы
данных, которые мы рассмотрим в последующих главах). Программа системы
BIOS, которая выполняется первой, представляет собой тест
функционирования.
Эта программа поверяет память и внешние устройства, подключенные к
IBM/PC, как только будет включено питание компьютера. Работа этой
программы определяет ту задержку, которая имеет место между включением
питания и загрузкой операционной системы. Чем больший объем памяти
подключен к Вашему компьютеру, тем дольше выполняется тест, поскольку
наиболее длительной процедурой является процедура поверки памяти.
Следующая часть BIOS, которая должна выполняться как программа
запуска операционной системы, - это программа вызова загрузчика
операционной системы. Эта программа проверяет, подключен ли дисковод с
гибкими дисками и считывает с дискеты "загрузочную запись". После
считывания загрузочной записи программа запуска передает ей управление,
чтобы она считала оставшиеся части операционной системы.
Если в системе нет дисковода или при считывании загрузочной записи
произошла ошибка, то программа запуска BIOS передает управление кассетной
системе БЕЙСИК. Если Вы включите IBM/PC, не установив дискету в дисковод,
то Вы увидите, что начала работу программа кассетной системы БЕЙСИКа.