Структура и функции MS DOS

Операционная система MSDOS имеет развитые средства доступа ко всем аппаратным компонентам, обладает достаточно гибкой файловой системой, основанной на иерархической структуре каталогов, удобным командным языком. Последнюю версию этой ОС представляет MSDOS 6.22. Средства, предоставляемые ОС этого класса, позволяют формировать удобную операционную среду для разработки программного обеспечения. С другой стороны, на их основе достаточно просто можно создавать автоматизированные рабочие места с простыми средствами доступа к прикладным пакетам и программам.

Основными компонентамиMSDOS являются:

Дбазовая система ввода-вывода — BIOS (BasicInput/OutputSystem);

Дсистемный загрузчик SB (SvstemBootstrap) — размещается в блоке начальной загрузки (BootRecord);

Дмодуль расширения BIOS — располагается в скрытом файле IO.sys;

Дмодуль обработки прерываний — скрытый файл MSDOS.sys;

Дкомандный процессор — файл command.com;

Дутилиты, реализующие выполнение внешних команд MSDOS — файлы с расширением СОМ, например format.com;

Ддрайверы устройств — размещаются в виде файлов на диске;

Динформация о желательных параметрах настройки MSDOS — при необходимости задается в файле конфигурации config.sys;

Дкомандный файл, при необходимости выполняемый для настройки параметров и конфигурирования MSDOS имеет имя autoexec.bat.

Рассмотрим функции некоторых из перечисленных компонентов MSDOS.

Базовая система ввода-вывода находится в ПЗУ компьютера и устанавливает связь между обладающими некоторыми фирменными особенностями техническими средствами и стандартизированным программным обеспечением, а именно с операционной системой. Ее назначение состоит в выполнении наиболее простых и универсальных функций операционной системы, связанных с вводом-выводом. BIOS в ПЗУ содержит также тест функционирования компьютера, проверяющий работу памяти и устройств при включении питания. Кроме того, он содержит программу вызова загрузчика ОС.

BIOS в ПЗУ является общей и неизменяемой частью всех возможных операционных систем для данной модели ПЭВМ.

Системный загрузчик предназначен для считывания в оперативную память модуля расширения BIOS и модуля обработки прерываний.

Модуль расширения BIOS (файл IO.SYS) придает гибкость операционной системе, позволяет управлять с ее помощью набором аппаратных средств ПЭВМ, наиболее точно удовлетворяющим замыслу разработчиков ОС. Этот модуль сравнительно легко можно модифицировать с учетом нужд конкретной версии MSDOS. Этот модуль позволяет перекрыть функции BIOS в ПЗУ и обеспечивает возможность подключения дополнительных драйверов (программ обслуживания внешних устройств).

Модуль обработки прерываний (файл MSDOS.SYS) образует верхний уровень операционной системы, с которым взаимодействует большинство прикладных программ. Компонентами данного модуля являются программы, обеспечивающие работу файловой системы, устройств ввода/вывода (клавиатуры, дисплея, принтера, портов), обслуживания некоторых ситуаций, связанных с завершением программ, их принудительным прерыванием и обработкой ошибок.

Командный процессор (файл command.com) на диске может занимать любое место и по сути представляет собой выполнимую программу. Командный процессор выполняет следующие функции:

Дприем и разбор команд, полученных с клавиатуры или из командного файла;

Двыполнение встроенных команд MSDOS, находящихся внутри файла COMMAND.COM;

Дзагрузка и выполнение внешних команд MSDOS (утилит) и прикладных программ, хранящихся в виде файлов типа com и ехе.

Замечание. Исполняемые программы типа com не требуют настройки адресов после их загрузки в ОЗУ, программы типа ехе при загрузке в ОЗУ настраиваются по месту размещения — для них задаются соответствующие адреса сегментов.

При загрузке в ОЗУ командный процессор распадается на две части: резидентную (постоянно размещаемую в оперативной памяти) и нерезидентную (периодически изменяемую путем передачи данных между ОЗУ и диском). Резидентная часть содержит подпрограммы стандартной обработки прерываний с номерами 22h...24h. Здесь же находятся, программа подзагрузки нерезидентной части в ОЗУ и подпрограмма инициализации, обрабатывающая файл автозапуска autoexec.bat при запуске машины.

Утилиты, или внешние командыMSDOS, представляют собой программы, поставляемые вместе с операционной системой в виде файлов. Они выполняют различные обслуживающие действия, например, форматирование дискет, проверку дисков и т. д.

Драйверы устройств представляют собой программы, дополняющие систему ввода вывода MSDOS и обеспечивающие обслуживание новых устройств или нестандартное использование имеющихся устройств. В частности, с помощью драйверов, например драйвера ansi.sys, обеспечивается требуемый способ формирования символов и вывода их на принтер. Драйверы загружаются в ОЗУ при загрузке операционной системы, а их имена указываются в файле конфигурации config.sys.
 

 


Загрузка и схема работы

 
 

Процесс запуска ПЭВМ и подготовки ОС к работе включает следующие шаги:

1.При включении ПЭВМ управление передается BIOS. Она выполняет тестирование памяти, проверку состояния аппаратуры и инициализирует устройства. Параметры конфигурации компьютера извлекаются из так называемой энергонезависимой памяти (CMOS). При необходимости перед началом инициализации устройств нажатием клавиши можно передать управление программе изменения параметров конфигурации.

2.Управление конфигурацией ПЭВМ (задание параметров жесткого диска, указание привода для системного диска, задание пароля и др.) выполняется с помощью программы Setup.

3.Вызов загрузчика и загрузка ОС с помощью системного загрузчика

4. Установка драйверов, задание окружения, путей поиска файлов, числа буферов, числа одновременно открываемых файлов, кодовой таблицы и т. п. выполняются с помощью файлов автозапуска autoexec.bat и конфигурации config.sys. Схематично взаимодействие прикладных программ с аппаратно-программным обеспечением ПЭВМ показано на рисунке.

Файловая система является одной из важнейших подсистем, поскольку вся информация на внешних носителях хранится в виде файлов. Обращения к файловой системе прикладные программы через функции прерываний MSDOS. С их помощью выполняются все файловые операции: создание и удаление файлов и каталогов, запись и чтение данных, получение справочной информации и другие. Файловая система работает с внешними накопителями с помощью драйверов, последние, в свою очередь, пользуются помощью BIOS.

Система управления памятью используется для распределения основной памяти выполняемым программам. Управление памятью MSDOS выполняет с помощью блоков управления памятью — МСВ (MemoryControlBlock). Память разбивается на блоки. Каждому блоку предшествует МСВ, в котором записываются характеристики этого блока. Для вновь запускаемой программы выделяется нужное количество блоков. При освобождении памяти и при выполнении новых запросов на выделение памяти также используются МСВ с проверкой правильности их содержимого.

Система управления программами при запуске обеспечивает выполнение нескольких операций. Сначала она обращается к системе управления памятью для подготовки нужного количества блоков. С помощью файловой системы файл с программой загружается в основную память. При необходимости (это касается только программ типа ехе) программа настраивается на физический адрес размещения, затем ей передается управление. С помощью системы управления программами решаются также задачи запуска оверлейных программ (программ с перекрытиями) и задачи обеспечения работы резидентных программ (постоянно присутствующих в основной памяти).

Система связи с драйверами устройств. В MSDOS предполагается, что прикладные программы не должны непосредственно вызывать драйверы устройств. По-видимому, такой запрет введен для обеспечения совместимости различных версий MSDOS. Поэтому операции ввода/вывода в прикладных программах, как правило, выполняются через обращения к MSDOS, которая при необходимости обращается за помощью к драйверам.

Харктеристика команд

Различают команды MSDOS двух типов: внутренние и внешние.
Внутренние команды содержатся внутри и выполняются командным процессором. Для примера отметим, что к основным внутренним командам можно отнести следующие команды для работы с файлами и каталогами:
CD— смена и показ имени текущего каталога;
COPYкопирование файлов;
DELудаление файлов;

DIRвыдача списка имен файлов и подкаталогов текущего каталога;

MDсоздание каталога.

Внешние команды (утилиты)MSDOS поставляются вместе с операционной системой в виде отдельных файлов. К ним, например, относятся такие важные команды:

DISKCOMPсравнение дискет;

DISKCOPYкопирование дискет;

FDISKразметка жесткого диска;

FORMATформатирование дисков и дискет;

SYSсоздание системной дискеты путем копирования системных файлов.

Справочная система

В MSDOS 6.2/6.22 вызов справки выполняется заданием в командной строке команды Help. В результате появляется диалоговое окно. В нем содержится полный список команд DOS.При выборе любой из команд (с помощью мыши или клавиш перемещения курсора) в окне появляется поясняющая информация. В ней содержится три раздела: <Notes> — описание команды, <Syntax> — синтаксис и <Example> — примеры применения.


Перемещение по справочной системе выполняется путем выбора нужных команд, в рамках справки для выбранной команды можно выбирать разделы для просмотра. Возврат на предыдущий уровень справочной системы выполняется с помощью клавиши <Esc>. Выход из справочной системы выполняется по команде FileExit (Файл | Выход).

Файловая организация данных

 
Долговременно информация хранится на внешних носителях в виде файлов. При хранении придерживаются определенной организации данных, под которой понимают совокупность правил, определяющих особенности размещения данных на внешних устройствах, методы доступа к ним, средства защиты данных от несанкционированного доступа и т. п. Совокупность средств ОС, обеспечивающих доступ к данным, называется файловой системой.

Файлы

Файлом называется логически связанная совокупность данных определенной длины, имеющая имя. Файл может хранить текст программы, документы, закодированные графические изображения и т. д. Длина файлов измеряется в байтах.
Имена файлов в MSDOS должны удовлетворять следующим требованиям:
Димя должно содержать от одного до восьми символов;
Димя файла может иметь расширение, отделяемое от имени точкой и содержащее не более трех символов;
Ддля записи имен файлов и расширений должны использоваться буквы латинского алфавита A...Z, цифры О...9 и специальные знаки: - (минус), _ (подчеркивание), $, @, %,(,),",',',{,},-,!, #;
Дв качестве имен файлов не должны использоваться следующие буквенные сочетания: AUX,CONPRN,NULCOM1, COM2, LPT1, LPT2, LPT3.

Имя файла подбирается таким образом, чтобы по нему можно было легко определить содержимое. Расширение имени, как правило, указывает на тип хранящихся в файле данных. Ниже представлены используемые MSDOSтиповые расширения имен файлов:
 
Типовоерасширение
Содержимое файла
arj
Архив, созданный архиватором ARJ
asm
Текст программы на языке Ассемблера
bak
Резервная копня файла
bat
Командный файл
bin
Двоичный фанл с машинной программой или драйвером
com
Выполнимая программа с абсолютным адресом загрузки
doc
Файл документа
dbf
Данные СУБД dBASEClipper
ехе
Выполнимая программа, требующая настройки
inf
Информационный файл
ini
Файл описания конфигурации программы
obj
Программа в объектном коде
pas
Исходный текст программы на Паскале
sys
Драйвер управления устройство7м

Типовые расширения имен удобны тем, что позволяют в ряде случаев обращаться к файлам только по имени. К примеру, при вызове программ и командных файлов для выполнения не требуется указывать типовые расширения ехе, сом и bat. С другой стороны, указав только расширение, можно выбрать все файлы определенного типа па диске с тем, чтобы выполнить некоторые действия над всей группой файлов, например скопировать на другой диск, распечатать содержимое на принтере, удалить и т.д.

Для обращения к группам файла применяются групповые имена, образуемые с использованием символов * и ?. Символ * в имени файла и его расширении трактуется операционной системой как любая последовательность символов, символ ? — как любой одиночный символ.
Имя файла с приставкой-указателем устройства и цепочки каталогов называется спецификацией файла. Полная спецификация файла (включающая имя привода и всю цепочку каталогов) определяет его местоположение в древовидной структуре каталогов Пример такой структуры представлен на рисунке

Отметим, что в среде MSDOS для любой выполняемой программы или отдельных ее компонентов (например, левой и правой панели оболочки NortonCommander) устанавливается текущий каталог. Если адресуемый файл находится в текущем каталоге, то достаточно указать только его имя. В противном случае необходимо указать его полную спецификацию или указать путь поиска данного файла по дереву каталогов в команде PATH в файле автозапуска autoexec.bat.

Файловая структура диска

Операционная система освобождает пользователя от необходимости иметь каталоги размещения файлов, требуемые для доступа к ним, и ведет их сама. При обращении к файлу пользователю достаточно указать его спецификацию (путь к файлу и имя). Операционная система сначала обращается к файлу-каталогу, находит в нем запись со сведениями о местоположении на диске файла, затем выполняются требуемые действия.
При доступе к данным на диске операционная система использует хранящиеся на нем таблицу размещения файлов — FAT (FileAllocationTable), корневой каталог (root) и подкаталоги. Стартовый сектор (загрузочная запись), таблица размещения файлов, корневой каталог и остающееся свободным пространство памяти диска, называемое областью данных, являются элементами файловой структуры диска. Они создаются операционной системой в процессе инициализации диска. Структура размещения данных на диске выглядит следующим образом:.
Стартовый сектор
FAT
Корневой каталог
Файлы, каталоги, свободное поле
CVF
 
В дополнение к перечисленным ранее элементам в MSDOS, начиная с версии 6.0, на диске размещается используемый программой сжатия данных DoubleSpace файл сжатого тома CVF (CompressedVolumeFile). Таких файлов в системе может быть до 255.

Жесткие диски характеризуются возможностью предварительного разбиения их на несколько разделов. Поэтому в начальных секторах жесткого диска содержится информация о количестве разделов, их местоположении и размерах. Разделы жесткого диска рассматриваются как автономные виртуальные диски. Каждый из них инициализируется отдельно, имеет собственное имя (C:,D:,E:...) и элементы файловой структуры, такие же, как у гибких дисков.

Таблица размещения файлов

В процессе работы компьютера содержимое диска меняется: добавляются новые файлы, удаляются ненужные, изменяется объем файлов и т. д. Для выполнения этих операций необходимо отслеживать распределение пространства диска между файлами. В MSDOS эта задача решается с помощью таблицы размещения файлов. Для каждого файла в FAT создается цепочка элементов, каждый из которых указывает область фиксированной длины (кластер), занимаемую частью файла на диске. В каталоге, содержащем имя файла, имеется указатель к началу цепочки. При стирании файла элементы FAT и адресуемые ими области данных освобождаются (помечаются как свободные) и могут быть использованы для другого файла.
Достоинством такой организации является возможность осуществления прямого доступа к данным файла. Недостатком является постепенное фрагментирование диска при активной работе с файловой системой по уничтожению, созданию и изменению объемов файлов. При этом занимаемое файлами пространство «разорвано» по всему диску. Фрагментирование значительно увеличивает время доступа к данным на диске.
Область данных занимает большую часть диска — от конца корневого каталога до последнего сектора. Участки памяти из области данных выделяются группами из одного или нескольких последовательных секторов, называемых кластерами. Размер сектора составляет 512 байтов.
Размеры кластера (число секторов) определяются операционной системой в зависимости от размера логического привода (размера раздела диска, если диск разбит на несколько разделов). Использование кластеров большой длины уменьшает фрагментирование диска. Кроме того, уменьшается размер FAT, что увеличивает быстродействие. С другой стороны, слишком большой размер кластера ведет к неэффективному использованию пространства диска при наличии большого числа файлов небольшой длины.
Потери дискового пространства:

 
Размер раздела диска, Мб
Размер кластера,Кб
Потери на 1000 файлов, Мб
16 - 127,9
2
1
128 - 255,9
4
2
256 - 511,9
8
4
512 - 999,9
16
8

Данные из таблицы целесообразно учитывать при принятии решения, стоит ли разбивать жесткий диск на несколько логических приводов.

Для повышения быстродействия при выполнении операций поиска в FAT последняя копируется в оперативную память. При большой FAT и относительно малой оперативной памяти возможны проблемы ее нехватки.
Для надежности сохраняются две копии FAT, расположенные одна за другой вслед за загрузочной записью. Однако MSDOS вторую копию FAT не использует. Элементы таблицы размещения файлов имеют длину 12 или 16 битов. Последний вариант используется в дисках с более чем 4080 кластерами, например в дисках емкостью 20 Мбайтов.

FAT содержит информацию о расположении файлов, свободном пространстве на диске и неисправных блоках, а также код формата диска. В первых двух элементах FAT первый байт задает код формата диска, остальные 2 или 3 байта всегда содержат FFh.

Примеры кодов, используемых для обозначения формата дисков:

ДF0hDS (DoubleSided — двухсторонняя) / HD (HighDensity — высокой плотности) — дискета 3.5 дюйма (18 секторов);

ДF8h — жесткий диск;

ДF9hDS/QD (QuadrapleDensity — учетверенной плотности)—дискеты 5.25 или 3.5 дюйма (9 секторов).

Каждому кластеру диска ставится в соответствие элемент FAT с тем же номером. Два элемента FAT (нулевой и первый) используются для задания кода формата диска, поэтому нумерация элементов таблицы начинается с 2. Для удобства нумерация кластеров при расчетах также начинается с 2.

Каждый элемент FAT представляет собой код из трех (12-битовая таблица) или четырех (16-битовая) шестнадцатеричных цифр. При этом используются следующие коды:

Д(0)000hкластер свободен;

Д(0)003h - (F)FEFhномера очередных кластеров файла;

Д(F)FF7hдефектный кластер;

Д(F)FF0h-(F)FF9hрезервные кластеры.

Пример цепочки FAT, описывающей расположение файла Ex.txtпоказан на рисунке

.

Как видно из рисунка, в каталоге для данного файла содержится номер первого кластера, занимаемого файлом.Этот номер одновременно определяет точку входа в FAT. Находящийся в ней элемент FAT указывает одновременно на очередной кластер файла и на очередной элемент FAT и т. д. до элемента таблицы, содержащего признак конца файла.

Каталоги

 
Каталог представляет собой справочник, содержащий сведения о местоположении, размере, дате и времени обновления файлов. Для каждого файла на диске имеется один элемент в определённом каталоге. Один элемент корневого каталога выделяется для метки диска. Для каждого каталога имеется элемент в его родительском каталоге. Кроме того, каждый каталог, за исключением корневого, содержит по одному элементу для специальных имен «.» и «..», Эти элементы указывают начало цепочки в FAT соответственно для самого каталога и для его родительского каталога. Такая система описания каталогов обеспечивает возможность сокращенного написания пути к данному файлу, когда он походит через родительский каталог. Здесь особенно важна возможность написания программ, просматривающих все дерево каталогов произвольной структуры.
Каждый элемент каталога имеет длину 32 байта и структуру, представленную в таблице:
Длина, байт
Содержимое поля
8 Имя файла, каталога или тома
3 Расширение имени файла
1 Байт атрибутов
10 Резервное поле
2 Код времени изменения файла
2 Код даты изменения файла
2 Номер первого кластера файла (подкаталога)
4 Размер файла
Полеимени. Если имя файла содержит меньше 8 символов, то справа оно дополняется пустыми позициями. Пробелы в записи имени файла недопустимы. Однако большинство системных функций позволяют создавать файлы с пробелами в поле имени, которые трудно удалить обычным способом.
Код 00 в первом байте поля имени показывает, что этот элемент каталога ранее не использовался. Так как каталог заполняется последовательно, это означает, что и следующие за ним элементы также не использовались. Это позволяет избежать лишних поисков в каталоге. При стирании файла в первом байте соответствующего элемента каталога записывается код Е5. Все остальные байты элемента не изменяются. Сохраняемая в каталоге и FAT информация после удаления файла позволяет выполнять его восстановление, если занимаемое им ранее дисковое пространство не было выделено другому файлу.
Код 2Е (символ «.») в первом байте показывает, что элемент описывает сам каталог. Если и во втором байте содержится код 2Е, то элемент описывает родительский каталог («..»).
Расширение имени. Если элемент каталога описывает файл, то это поле может быть и пустым. В противном случае это поле используется, когда в элементе корневого каталога указывается метка тома.
Атрибуты файла.Каждый бит этого поля задает определенный атрибут:
№ бита
Назначение
0 Защищенный
1 Скрытый
2 Системный
3 Метка тома
4 Каталог
5 Архивный
6 Не используется
7 Не используется
Поле «время». Его содержимое рассматривается как целое число без знака, полученное по следующей формуле: часы?2048 + минуты ? 32 + секунды / 2. Для выполнения обратного преобразования следует разделить содержимое поля времени на 2048, частное от деления даст нам часы. Деление остатка на 32 дает нам частное, равное числу минут, а полученный остаток при умножении его на 2 дает секунды.
Поле «дата». Содержимое его рассматривается как целое число без знака, полученное по следующей формуле: (год-1980)? 512 + месяц ? 32 + день.По этой формуле календарь поддерживается с 1980 года по 2108 год (из-за ограниченности ширины поля даты).
Номер первого кластера. Содержимое этого поля одновременно служит указателем к первому кластеру файла в поле данных и к первому элементу в цепочке FAT. Для файлов, которым не выделено места на диске, и для метки тома это поле содержит 0000h.