Семейство СР/М
Родоначальником семейства является дисковая операционная система СР/М
(Control Program/Monitor) фирмы Digital Research. Первая версия системы
была разработана в 1974 г. для использования в инструментальных микропроцессорных
системах на основе микропроцессоров 18080 и 18085.
Инструментальные микрокомпьютеры, популярные в 70-е годы, использовались
как средство кросс-разработки и отладки программ для встраиваемых микропроцессорных
систем. Типичная система такого типа состояла из микропроцессорной платы,
устройства чтения/записи магнитных или перфолент, а позднее — накопителя
гибких дисков и, наконец, видеотерминала. Можно считать их предками персональных
компьютеров, но в описываемый период такие системы были слишком громоздки
и дороги для домашнего и офисного использования.
СР/М была первой ОС для машин такого рода, обеспечившей возможность использования
гибких дисков, поэтому она быстро приобрела огромную популярность и стала
стандартом де-факто для микрокомпьютеров [Дейтел 1987]. Система была перенесена
практически на все 8- и 16-разрядные и многие 32-разрядные микропроцессоры
манчестерской архитектуры. Появившиеся в конце 70-х персональные компьютеры
обычно также были ориентированы на использование СР/М. В начале 80-х были
реализованы многозадачная и сетевая версии СР/М. Появилось также немало
клонов системы, программно совместимых с ней и в целом аналогичных по
архитектуре.
С архитектурной точки зрения, СР/М представляет собой довольно типичную
однозадачную ДОС, предназначенную для работы на процессоре без диспетчера
памяти и средств базовой адресации. К отличительным особенностям СР/М
можно отнести следующие.
- Своеобразный командный язык, представляющий собой подмножество
DCL (DEC Command Language) — командного языка систем RT-11, RSX-11,
VAX/VMS . Так, в DCL команды являются полными словами английского языка,
но разрешено их сокращение: DIRECTORY, например, может быть сокращена
до DIR или даже до DI — в СР/М же команда называется DIR.
- Устройства последовательного ввода-вывода обозначаются
трехбуквенными аббревиатурами, например TTY: обозначает телетайп, a
LPT: — строчный принтер. Некоторые устройства, например, CON: (консоль),
LST: (устройство вывода листинга) могут динамически переназначаться.
- Диски обозначаются буквами латинского алфавита.
СР/М имеет модульную архитектуру и состоит из трех основных подсистем:
командного процессора ССР (Console Command Processor), базовой дисковой
операционной системы BDOS (Basic Disc Operating System) и базовой системы
ввода-вывода BIOS (Basic Input/Output System). ССР и BDOS представляют
собой неизменные компоненты системы, BIOS содержит драйверы физических
устройств и подлежит перекомпоновке при каждой перегенерации системы для
новой конфигурации аппаратуры. Память, не занятая компонентами системы
и таблицей векторов прерываний, называется ТРА (Transient Program Area
— область пользовательских [дословно — преходящих] программ).
В 1981 г. фирма IBM анонсировала персональный компьютер IBM PC на основе
16-разрядного процессора i8088. Первоначально предполагалось, что в качестве
ОС для этого компьютера будет использоваться СР/М, однако представителям
IBM не удалось достичь приемлемых условий соглашения с Digital Research.
Ни история, ни легенды не сообщают нам о том, что именно послужило причиной
разногласий.
Легенды, однако, сохранили для нас немало подробностей (к сожалению, не
очень достоверных) дальнейшего развития событий. Вместо того, чтобы пойти
на компромисс с Г. Кидалом, CEO Digital Research, представитель IBM обратился
к сыну одной из своих старых знакомых, Биллу Гейтсу. Билл Гейтс в это
время занимался продажей собственного интерпретатора языка BASIC для любительских
8-разрядных микрокомпьютеров. Билл не имел ни опыта разработки ОС или
ДОС, ни даже теоретической подготовки в этой области, поскольку был выгнан
из колледжа. Однако IBM обещала щедрую предоплату и вообще довольно выгодные
условия, поэтому Билл взялся за проект.
Примечание
Нужно отметить, что эта часть легенды несколько расходится с достоверными
историческими сведениями. В описываемый период Microsoft занимался не
только и даже не столько ВАЗЮ'ом, сколько собственной ОС, основанной на
Unix v.6 - Microsoft Xenix. Эта система была реализована для нескольких
микропроцессорных систем на 32-разрядных микропроцессорах, таких, как
MC68000, NS32032 и даже 18086/8086.
По другой версии легенды, Билл Гейтс первоначально предложил Xenix, но
представители IBM хотели что-нибудь похожее на СР/М.
Гейтс приобрел за 13 тысяч долларов лицензию на систему QDOS — клон
СР/М, разработанный компанией Seattle Computer Products. По легенде, QDOS
расшифровывается как Quick and Dirty Operating System - "Быстро [сделанная]
и Грязная Операционная Система".
Фирма Microsoft переделала загрузчик и дисковую подсистему QDOS для работы
с IBM PC и использования сервисов ПЗУ этого компьютера (эти сервисы также
называются BIOS, хотя имеют довольно мало общего с BIOS СР/М), и предложила
результат фирме IBM. Заказчики оказались довольны, и Билл быстро стал
миллионером.
К версии 3.30 MS DOS (такое название получила новая система) уже накопила
очень много отличий от оригинальной СР/М. В качестве файловой системы
была использована изобретенная лично Б. Гейтсом для применения в интерпретаторе
BASIC ФС FAT. Эта ФС была переделана так, чтобы в ней можно было создавать
вложенные каталоги. Был добавлен новый формат загрузочного модуля — вдобавок
к абсолютным загрузочным файлам формата СОМ (совместимых с СР/М]) были
реализованы относительные загрузочные файлы ЕХЕ (известные также как файлы
MZ). Были реализованы загружаемые драйверы внешних устройств. Динамическая
загрузка и выгрузка драйверов не поддерживалась, но, по крайней мере,
изменение номенклатуры драйверов теперь не требовало перегенерации системы.
Список загружаемых драйверов задавался текстовым файлом C:\CONFIG.SYS.
Позднее был даже реализован интерфейс для драйверов файловых систем.
Была разрешена загрузка нескольких программ в стековом порядке (впрочем,
не допускалось их параллельного исполнения). Система приобрела многие
черты, аналогичные примитивным версиям Unix — так, каждая загруженная
программа в MS DOS снабжается дополнительным сегментом памяти, так называемым
PSP (Program Segment Prefix — заголовок программного сегмента), который
аналогичен User area (пользовательской области, сегменту данных ядра ОС,
относящихся к конкретному процессу) в Unix. В некоторых документах сегментный
адрес PSP даже называют pid (Process Identifier, по аналогии с идентификатором
процесса в Unix). Как и в Unix, исполнение системного вызова сопровождалось
переустановкой стека. В состав системы были включены:
- файловый API, очень похожий на интерфейс файловых системных
вызовов в Unix;
- переменные среды;
- переназначение ввода-вывода;
- и даже конвейеры (последовательности задач, в которых
поток стандартного вывода предыдущей задачи является потоком стандартного
ввода следующей), реализуемые через промежуточный файл.
По одной из легенд, нежелание Microsoft реализовать в DOS вытесняющую
многозадачность обусловлено не столько технической некомпетентностью,
сколько соглашением с фирмой SCO — в соответствии с ним, передавая права
на торговую марку Xenix, Microsoft обязалась не разрабатывать и не продавать
функциональных эквивалентов UNIX. Такое соглашение существовало в действительности:
через много лет, в 1997 г., SCO отсудила у Microsoft принадлежавшую последней
долю своих акций и ряд других обязательств (упоминание Microsoft в списке
держателей авторских прав, поддержку бинарной совместимости с Xenix/286)
на том основании, что Microsoft рекламировала Windows NT как замену и
даже "убийцу" UNIX и, таким образом, нарушала соглашение.
Со времен DOS 3.30 архитектура системы не подверглась сколько-нибудь заметным
изменениям [Панкратов 2001]. Так, DOS 7, входящая в состав Windows 98/ME
в качестве вторичного загрузчика, отличается от 3.30 только поддержкой
файловой системы FAT32.
Digital Research не смотрела на это развитие безучастно. К концу 80-х
система DR DOS, основанная на исходных текстах оригинальной СР/М, обеспечивала
полную программную совместимость с MS DOS и включала в себя все новшества
не только версии 3.30, но и более поздних версий.
Ряд полезных идей, впервые реализованных в DR DOS, такие, как загрузка
в верхнюю память, условные операторы в CONFIG.SYS и упакованная файловая
система, появились в MS DOS лишь на одну или две версии позже, а некоторые
идеи — например, экранный редактор командной строки (возможность, знакомая
пользователям командных процессоров DCL, bash и 4DOS/4OS2/4NT) и загрузка
из расширенного раздела — не были реализованы в MS DOS и Windows 95/98/ME
никогда.
Ближе к середине 90-х стало очевидно, что дни DOS как платформы сочтены
(впрочем, мало кто ожидал в то время, что в той или иной форме эта платформа
сможет прожить до самого конца столетия). В 1993 г. Digital Research вместе
с авторскими правами на DR DOS была приобретена фирмой Novell. В 1995
г., вскоре после того, как собрание акционеров выгнало Р. Нурду с поста
СЕО, авторские права на этот продукт были переданы созданной им компании
Caldera. Несколько позднее Caldera опубликовала исходные тексты системы
на условиях GPL под называнием Caldera OpenDOS [www.caldera.com]. С тех
пор эта система широко используется в составе DOS-эмуляторов различных
дистрибутивов Linux. |