:: Обзоры | Семейство CP/M
Родоначальником семейства является дисковая операционная
система СР/М (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.
|