Индекс
НазадОглавлениеВперед


Глава 1. Операционная система MS DOS

1.1. История и архитектура

ОС MS DOS была разработана фирмой Microsoft по заказу IBM для недавно появившихся персональных компьютеров IBM PC. Первая версия ОС появилась в 1980 г. IBM PC и его программное обеспечение не рассматривались тогда фирмой IBM как возможное стратегическое направление, отсюда и MS DOS представляет собой ОС с минимальными возможностями. MS DOS прошла долгий путь развития, но это развитие заключалось прежде всего в приспосабливании ОС к опережающему росту возможностей аппаратуры и, в меньшей степени, - в совершенствовании структуры самой ОС и развитии ее принципиальных возможностей.

MS DOS в основе своей была и остается однозадачной, однопользовательской системой [3]. Ядро системы разработано для 16-разрядного процессора Intel 8086, следовательно, не использует защищенный режим и объем памяти свыше 1 Мбайт, ставшие доступными в следующих моделях.

Архитектура MS DOS показана на рисунке 1.1. Можно говорить о том, что системное программное обеспечение ПЭВМ состоит из двух уровней. Нижний уровень составляет Базовая Система Ввода-Вывода (BIOS), хранимая в ПЗУ. Второй уровень составляет собственно MS DOS. (Можно сказать, что BIOS является компонентом аппаратной части ПЭВМ, но последующие ОС на платформе Intel-Pentium почти не используют функции BIOS). Системные вызовы реализованы в программных прерываниях. Всего возможно 256 типов (кодов) прерываний. Из них прерывания с 16-ричными кодами от 0 до F зарезервированы за аппаратурой, прерывания с кодами от 10 до 1F - обращения к BIOS, прерывания с кодами от 20 до 3F - обращения к MS DOS. По-видимому, изначально предполагалось, что непосредственно работать с аппаратурой будет только BIOS, MS DOS будет обращаться к BIOS для выполнения операций на аппаратуре, а приложения - только к MS DOS. Однако в последующих версиях MS DOS перехватывает все больше функций BIOS. Приложениям доступны не только любые обращения к MS DOS и к BIOS, но и такие команды, которые в других системах являются привилегированными, например, команды ввода-вывода, следовательно, приложения имеют доступ к аппаратуре в обход ОС и BIOS.


Рисунок 1.1 Архитектура MS DOS

1.2. Управление программами

Как было сказано, MS DOS является однозадачной ОС. Роль блока контекста выполняемой программы играет структура данных, предваряющая программный сегмент и именуемая Префиксом Программного Сегмента (PSP). PSP формируется системой при загрузке программы, ОС сохраняет среди своих данных адрес PSP выполняемой программы, который играет роль системного идентификатора активного процесса.

Программы в MS DOS бывают двух видов: COM- и EXE-программы. COM-программа не может иметь размер более 64 Кбайт. Во всех программах адресация ведется относительно содержимого базовых регистров. В COM-программе содержимое всех базовых регистров одинаково и формируется Загрузчиком ОС. В EXE-программе содержимое базовых регистров может меняться, поэтому при загрузке такой программы происходит настройка адресов - модификация адресных полей тех команд программы, которые выполняют загрузку базовых регистров.

Поскольку программы пользователя имеют возможность перехватывать любые - программные и аппаратные - прерывания, пользователь имеет возможность создавать резидентные программы - программы, которые после завершения остаются в памяти. Резидентная программа обычно содержит в себе обработчик перехваченного прерывания (например, от таймера, от клавиатуры), который выполняет активизацию резидентной программы по этому прерыванию. И создание резидентных программ, и перехват прерываний поддерживаются системными вызовами MS DOS. После выполнения резидентной программой своих действий возобновляется выполнение прерванной программы. Таким образом, резидентные программы в MS DOS обеспечивают некоторое подобие многозадачности. Сохранение/восстановление контекста (регистров) прерванной программы отчасти выполняется механизмом команд INT (программное прерывание) и RET (возврат из прерывания), отчасти возлагается на резидентную программу. Для полного переключения контекста резидентная программа должна найти в системной области память адрес PSP прерванной программы и заменить его на адрес своего PSP, но многие резидентные программы этого не делают и выполняются в контексте прерванной программы. Отметим также, что все системные вызовы MS DOS совместно используют только два стека и, таким образом, являются нереентерабельными. Поэтому на применение системных вызовов в резидентных программах накладываются значительные ограничения.

1.3. Управление памятью

Управление памятью оперирует блоками переменной длины в реальной памяти. Виртуальная адресация в программе - относительно содержимого одного или нескольких сегментных регистров. Если вся программа (код, стек, данные) помещается в пределах одного 64-разрядного сегмента, то занесение реального адреса начала сегмента в сегментные регистры производится загрузчиком MS DOS. Если же программа многосегментная, она содержит команды загрузки сегментных регистров, загрузчик модифицирует эти команды реальными адресами сегментов.

Структура адресного пространства MS DOS показана на рисунке 1.2. Программы и пользовательские данные размещаются в области, обозначенной как "DOS и транзитные программы". При загрузке программы ей выделяются два блока памяти, называемые сегментом окружения и программным сегментом. Программа в ходе выполнения может запрашивать/освобождать любое количество дополнительных блоков памяти. Единицей распределения памяти является параграф (16 байт). Выделяемый блок памяти всегда состоит из целого числа параграфов. Первый параграф каждого блока содержит Блок Управления Памятью (MCB), в котором среди прочего содержится идентификатор программы - владельца блока или признак свободного блока. Поле размера является завуалированным указателем на следующий блок: адрес следующего блока можно определить, зная адрес текущего и его размер. В системе не предусмотрены никакие средства борьбы с фрагментацией памяти, так как в однозадачной ОС интенсивность запросов на выделение/освобождение памяти не может быть слишком большой.


Рисунок 1. 2 Распределение памяти в MS DOS

1.4. Ввод-вывод и файловая система

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

Логическая файловая система MS DOS обеспечивает иерархическую структуру хранения данных в виде "леса" - отдельного дерева каталогов на каждом логическом диске. Имя файла состоит из собственно имени (8 символов) и расширения (3 символа). Физическая структура хранения данных на жестком диске показана на рисунке 1.3. Структура информации на гибком диске соответствует структуре одного логического раздела.


Рисунок 1.3 Структура информации на диске файловой системы FAT

Первый сектор диска занимает Главная Загрузочная Запись (MBR - Master Boot Record), которая содержит программу начальной загрузки и таблицу разделов - информацию о разбиении физического диска на логические. В таблице разделов предусмотрены позиции для 4 разделов, но каждый раздел может содержать свое расширение MBR, то есть может быть разбит еще на 4 раздела и т.д. MBR не является структурой, относящейся к MS DOS, она загружается программой начальной загрузки BIOS и применяется со всеми ОС, работающими на платформе Intel-Pentium. Более того, разные логические диски могут содержать разные ОС. Программа начальной загрузки в MBR определяет, с какого логического диска должна загружаться ОС и считывает загрузочный сектор этого диска.

Загрузочный сектор содержит программу начальной загрузки ОС (если диск является загрузочным) и информацию о параметрах логического диска.

Центральной структурой файловой системы MS DOS является Таблица Размещения Файлов (FAT - File Allocation Table). FAT представляет собой "карту" дискового пространства области данных. Область данных условно разбивается на кластеры - участки из целого числа смежных секторов. Размер кластера фиксирован для данного логического диска и кластер является единицей распределения дисковой памяти. Каждому кластеру соответствует элемент FAT. Размер элемента - 12 или 16 бит, отсюда файловую систему часто называют FAT12 или FAT16. В каждом элементе каталога, описывающем файл или подкаталог, содержится номер первого кластера, выделенного файлу. В элементе FAT, соответствующем этому кластеру находится номер следующего кластера и т.д. Специальный код в элементе FAT индицирует последний кластер файла. Специальные коды элементов зарезервированы для описания свободных и сбойных кластеров. Поскольку FAT является ключевой структурой файловой системы, на диске для надежности хранятся две ее копии.

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

1.5. Другие свойства MS DOS

Поскольку MS DOS спроектирована как однозадачная система, средства взаимодействия процессов в ней почти не предусматриваются. Для взаимодействия резидентных программ применяются прерывания: резидентная программа перехватывает обработку прерывания с определенным номером. В спецификациях MS DOS предусмотрены два прерывания, которые можно использовать для этой цели (2D, 2F), однако, многие приложения используют для этого "незанятые" прерывания с номерами, большими 3F.

Командный процессор MS DOS - программа COMMAND.COM - обеспечивает выполнение команд и утилит, связанных с управлением файловой системой, выполнением программ, управлением параметрами окружения. Обеспечивается также перенаправление стандартного ввода-вывода и конвейерное выполнение команд. COMMAND.COM - процессор командной строки, повсеместно MS DOS используется с полноэкранными оболочками, наиболее популярная из которых - Norton Commander.

MS DOS послужила основой для целого ряда совместимых с ней ОС, наиболее развитая из которых - PC DOS фирмы IBM. Развитие самой MS DOS закончилось на версии 6, версия 7 существует только как встроенная в Windows 9x. PС DOS продолжает развиваться и сейчас существует в версии 8, в которую опционно включены, например, невытесняющая многозадачность и графический интерфейс. Несмотря на явную бесперспективность развития MS DOS, ее применение будет продолжаться, прежде всего, в качестве ОС клиентского рабочего места с минимальными вычислительными ресурсами. Огромное число приложений, существующих для MS DOS, диктует для других ОС необходимость обеспечивать ту или иную эмуляцию среды MS DOS для выполнения этих приложений.

Контрольные вопросы

  1. Обладает ли MS DOS какими-либо преимуществами перед персональными ОС следующего поколения?
  2. В чем состоит разница между COM- и EXE-программами?
  3. Каким образом в MS DOS может быть обеспечено подобие многозадачности?
  4. Какая из описанных в Части I моделей памяти применяется в MS DOS?
  5. Из каких соображений в MS DOS не включены средства борьбы с фрагментацией оперативной памяти?
  6. Почему память программы MS DOS ограничивается 640 Кбайтами?

НазадОглавлениеВперед
Индекс