DOS

У этого термина существуют и другие значения, см. DOS (значения).

FreeDOS. Показана начальная загрузка, инициализация драйвера мыши, вывод команд ver и dir

DOS (англ. Disk Operating System — «дисковая операционная система», ДОС) — семейство операционных систем для PC-совместимых компьютеров, происходящих от MS-DOS и PC DOS и совместимых с ними[1][2]. До появления Windows 95 системы класса DOS были наиболее популярными операционными системами для PC, несмотря на их ограничения. После широкого распространения Windows и других многозадачных ОС, DOS сохранили ограниченное распространение как системы для низкопроизводительных машин, а также как бесплатные предустановленные системы (обычно FreeDOS, из-за лицензии) для ноутбуков, рассчитанные на дальнейшую замену современной операционной системой. Для запуска программ, рассчитанных на работу с DOS под другими операционными системами существуют эмуляторы, такие как DOSBox.

Существовали другие операционные системы с аббревиатурой DOS в названии, например, Apple DOS, TR-DOS, но они несовместимы с MS-DOS и между собой, потому не относятся к данному понятию.

## Содержание

* 1 История
* 2 Описание
* 3 Составные части DOS
* 4 Особенности работы
* 4.1 Работа с файлами
* 4.2 Исполняемые файлы
* 4.3 Стандартный ввод-вывод
* 4.4 Резидентные программы
* 5 Критика
* 6 Примечания
* 7 Литература

## История

[править | править код]

Изначально аббревиатура DOS использовалась в названии операционной системы DOS/360 от компании IBM, точнее это было семейство операционных систем, в которую помимо DOS/360, включалась BOS/360 (базовая ОС), TOS/360 (ОС для магнитных лент) и BPS/360 (для перфокарт). Позже аббревиатура DOS стала использоваться в названии множества операционных систем от разных производителей, все они были несовместимы между собой и могли иметь различные реализации взаимодействия с пользователем — например, ProDOS для компьютеров Apple IIGS имела встроенную графическую оболочку.

SCP 86-DOS. Показан запуск ассемблера от Seattle Computer Product и утилиты HEX2BIN

В 1979 году компания SCP (Seattle Computer Products)[англ.] стала выпускать комплекты для сборки компьютеров на основе процессора Intel 8086. Не дождавшись, когда Digital Research, владевшая правами на CP/M, портирует эту систему на новый процессор, программисты компании написали собственную ОС. Она получила неофициальное название QDOS (англ. Quick and Dirty OS — быстрая и «сырая» ОС), и в дальнейшем стала продаваться как 86-DOS.

PC DOS версии 1.0. В приглашении — только буква диска, первая версия не поддерживала подкаталоги

При разработке IBM PC было необходимо быстро разработать для него операционную систему. Изначально предполагалось заказать порт CP/M у Digital Research, но компаниям не удалось договориться об условиях лицензирования. Задачу перепоручили компании Microsoft, где было решено купить права на 86-DOS и адаптировать её для новой машины[3]. Однако программисты Microsoft не справились с задачей в срок, из-за чего вмешались уже программисты компании IBM. Совместными усилиями компаний была рождена операционная система, которая первоначально получила название PC-DOS, однако сторонним клиентам она продавалась под названием MS-DOS[4]. В течение года Microsoft заключила множество договоров об OEM-поставке MS-DOS на компьютеры 70 различных компаний[5]. В основном это были OEM-версии DOS, адаптированные под конкретные машины, но с начала 90-х Microsoft начала продавать «коробочные» версии MS-DOS 5.0, то есть под своим брендом.

Когда в Digital Research осознали, что PC DOS во многом похожа на CP/M, они стали угрожать судебными исками. В IBM решили пойти на компромисс: покупателям разрешено будет выбирать между PC DOS и CP/M-86, однако из-за более высокой цены (на $200 больше, чем у PC DOS) покупатели предпочитали разработку IBM/Microsoft.

DR-DOS 8.0

Чтобы вернуть себе позиции на рынке, Digital Research выпустила несколько операционных систем, совместимых с MS-DOS и CP/M-86: Concurrent DOS, FlexOS, DOS Plus и Multiuser DOS, позже — DR-DOS, совместимую только с MS-DOS. В конце концов компанию Digital Research приобрела Novell и её продукты стали выпускаться от её имени.

В самой Microsoft MS-DOS не считали перспективным продуктом, планируя в будущем заменить DOS на более перспективную ОС Xenix[6][7]. В компании IBM долго не хотели ничем заменять DOS[8], но после того, как AT&T начала продавать свою версию Unix, было решено начать разработку OS/2[9]. Тем не менее, IBM и Microsoft не смогли договориться о том, будет ли наследником DOS Windows или OS/2[10], в результате чего пути компаний разошлись, MS-DOS и PC DOS в дальнейшем развивались независимо[11]. Последней версией MS-DOS стала 6.22, после чего она перестала продаваться как отдельный продукт, войдя в состав Windows 95 как её подсистема, в то время как компания IBM позже выпустила PC DOS 2000 (он же PC DOS 7.1), а в качестве OEM развивала её до версии 7.10.

После того, как Microsoft объявила о прекращении разработки MS-DOS, программисты Джим Холл, Пат Виллани и Тим Норман начали разработку аналога, который бы публиковался под свободной лицензией. Этот проект позже получил название FreeDOS.

Несмотря на выход Windows 95 и прекращение поддержки MS-DOS компанией Microsoft, программы под DOS продолжали выходить ещё какое-то время. В частности, это были компьютерные игры, которые под DOS могли более полно использовать ресурсы оборудования, а также прикладные программы для слабых машин.

## Описание

[править | править код]

DOS — семейство операционных систем с монолитным ядром, предназначенных для работы с PC-совместимыми компьютерами[2]. В системе отсутствует слой аппаратных абстракций. Поддержка большинства устройств, за исключением самых базовых функций, таких как вывод текста на экран, работа со стандартной клавиатурой и файловой системой FAT, возложена на пользовательское ПО[12].

DOS работают в режиме реальных адресов x86, что позволяет использовать для нужд операционной системы не более 1 МБ адресного пространства (точнее, 1 МБ + 64 КБ \- 16 байт), с учётом специальных областей памяти становится доступно не более 640 КБ ОЗУ. Доступ к остальной оперативной памяти осуществляется с помощью специальных драйверов, наподобие HIMEM.SYS. Как правило используются только 16-битные команды процессора для сохранения совместимости с 8088.

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

Основной способ взаимодействия с пользователем — через ввод команд. Возможно использование программ-оболочек, таких как Norton Commander, но они не являются частью ОС.

## Составные части DOS

[править | править код]

Модуль интерфейсов ввода-вывода
В MS-DOS он называется ``IO.SYS``[13], в других системах может называться иначе, например ``IBMBIO.SYS`` в PC DOS. Содержимое этого файла постоянно находится в оперативной памяти после загрузки DOS и предоставляет основные API системы. Этот файл не может быть просто скопирован на диск, так как должен находится в определённом его секторе, для этого используется специальная команда SYS.
Файл ядра операционной системы
В MS-DOS он называется ``MSDOS.SYS``[13]. Как и предыдущий файл, постоянно загружен в память и не может быть просто скопирован на диск. Windows 95 тоже содержит файл с таким названием, однако он содержит лишь параметры загрузки, а ядро DOS перенесено в ``IO.SYS``
Командный процессор
Обрабатывает команды, вводимые в командную строку. В MS-DOS называется ``COMMAND.COM``[13]. Умеет обрабатывать несколько базовых команд (Type, Dir, и т. д.), не найдя нужной команды пытается запустить ``.COM`` или ``.EXE`` файл с подходящим названием из текущего каталога, либо из прописанных в переменных окружения.
Файл конфигурации
Содержит данные о загружаемых драйверах и системные настройки. Типичное название: ``CONFIG.SYS``.
Сценарий запуска
Пакетный файл, запускающийся при старте системы. Типичное название ``AUTOEXEC.BAT``.
Встроенные утилиты
В DOS входят различные утилиты, например программы проверки и форматирования дисков. С точки зрения пользователя не отличаются от команд оболочки, но являются отдельными исполняемыми файлами, расположенными в каталоге, который задаётся переменными окружения, поэтому часто эти утилиты называют внешними командами DOS[13].
Драйверы устройств
DOS поддерживает довольно небольшое количество стандартных устройств, в основном это касается драйверов локализованной клавиатуры или нестандартных дисковых накопителей. Поддержка большинства прочих устройств, таких как мышь или звуковая карта возложена на конечное ПО.
Загрузочный сектор
не входит в файловую систему но располагается на диске в первом секторе. Его задача — найти системные файлы DOS, загрузить их в память и передать им управление[14].
BIOS
Несмотря на то, что BIOS не является строго говоря частью DOS, некоторые функции операционной системы, в частности API для основных устройств ввода-вывода: клавиатуры, текстового и основных графических режимов, выполняет именно она.

## Особенности работы

[править | править код]

### Работа с файлами

[править | править код]

За исключением первых версий, DOS умеет работать с иерархической файловой системой — без специальных драйверов поддерживаются системы типа FAT. Командная оболочка не различает регистр символов в именах файлов. Ранние версии DOS поддерживали не более 8 символов в имени файла и ещё 3 символа в расширении. В качестве разделителя пути используется символ обратного слеша (в отличие от прямого слеша в unix), так как прямой слеш используется для указания ключей запуска.

В отличие от unix, DOS не имеет системного корневого каталога, каждый примонтированный раздел файловой системы имеет свой корневой каталог. Разделы обозначаются буквами от A до Z, причём первые две буквы принято назначать дисководам гибких дисков. С помощью команды cd возможно переходить только между каталогами текущего раздела, переход на другой раздел осуществляется конструкцией ``<буква диска>:``, например ``C:``[15].

### Исполняемые файлы

[править | править код]

DOS поддерживает два вида бинарных исполняемых файлов — с расширением `.COM` и `.EXE`, а также один скриптовый (состоящий из команд оболочки) — с расширением `.BAT`.

Файлы типа `.COM` унаследованы от CP/M. Они представляют собой программу непосредственно в том виде, в каком она будет загружена в сегмент оперативной памяти. Длина `.COM`-файла не может превышать размер одного сегмента (64 К) за вычетом 256 байт.

Файл типа `.EXE` имеет более сложный формат и не ограничен по размеру. Этот файл должен начинаться с сигнатуры `MZ` (`0x4D`, `0x5A`), за которой следует 26-байтный заголовок, содержащий метаданные, включая необходимый объём памяти, начальное значение сегментного регистра и т.д. После заголовка идёт таблица расположения сегментов в формате «двухбайтное смещение/двухбайтный сегмент», и затем, после выравнивания на 512 байт, начинается сама программа.

### Стандартный ввод-вывод

[править | править код]

DOS включает гораздо более бедные возможности ввода-вывода, чем к примеру unix. В DOS имеется несколько стандартных устройств, имеющих зарезервированное имя: ``PRN`` (принтер), ``LPT1…4`` (параллельные порты), ``COM1…4`` (последовательные порты), ``CON`` (интерфейс консоли, при чтении он возвращает ввод с клавиатуры, при записи — выводит текст на экран) и ``NUL`` (пустое устройство). Файлы с такими именами, даже с указанием расширения, невозможно создать ни в одном каталоге[16]. Для перенаправления ввода-вывода в командной строке используются символы ``>`` (вывод в файл или на устройство), ``>>`` (вывод в конец файла), ``<`` (чтение из файла или устройства) и ``|`` (передача вывода из одной команды на вход другой)[17]. В отличие от unix, в программах для DOS эти средства ввода-вывода используются достаточно редко, в основном программы обращаются к более низкоуровневым API системы либо к оборудованию напрямую.

### Резидентные программы

[править | править код]

Основная статья: Резидентная программа

Одна из особенностей DOS — возможность программы стать резидентной. Для этого при завершении основной программы и передаче управления командному процессору DOS, программа сообщает, что всю её, или какую-то часть нужно оставить в памяти. Как правило, резидентные программы переводят на себя какой-либо вектор прерывания, с помощью которого и происходит взаимодействие между запущенной программой и резидентной. Похожим образом работают драйвера устройств в файлах с расширением SYS, однако последние загружаются при запуске ОС[18] (хотя существуют отдельные утилиты, позволяющие загружать драйвера и позже, например, DEVLOAD). DOS не имела штатных средств контроля запущенных резидентных программ и их принудительной выгрузки, а также не имела никакой защиты памяти. Этим пользовались многие ранние вирусы.

## Критика

[править | править код]

В компании Microsoft MS-DOS рассматривался как временное решение с дальнейшим переходом на более совершенную систему Xenix, однако данная система так и не стала популярной. Уже к концу 80-х архаичность DOS-систем, используемых на PC становилась объектом критики, так как конкурирующие платформы давно обзавелись многозадачными операционными системами с графическим интерфейсом. Первые версии Windows (до появления Windows 95) были не операционными системами, а операционными оболочками, и требовали для своей работы установленный DOS. С другой стороны, даже после появления Windows 95, DOS-подобные операционные системы продолжали использовать по причине их простоты и низких системных требований, возможности получать прямой доступ ко всему оборудованию компьютера, а также стабильности на фоне ранних Windows.

## Примечания

[править | править код]

1. ↑ Murdock, 2008, p. 1.
2. ↑ 1 2 Фигурнов, 1999, с. 112.
3. ↑ Таненбаум, 2010, с. 932.
4. ↑ Mary Bellis. The Unusual History of MS-DOS The Microsoft Operating System (неопр.). Дата обращения: 2 сентября 2008. Архивировано 31 октября 2022 года.
5. ↑ Freiberger, Paul (23 августа 1982). Bill Gates, Microsoft and the IBM Personal Computer. InfoWorld: 22. Архивировано 18 марта 2015. Дата обращения: 29 января 2015.
6. ↑ Morgan, Chris (January 1982). Of IBM, Operating Systems, and Rosetta Stones. BYTE: 6. Дата обращения: 19 октября 2013.
7. ↑ Fiedler, Ryan (October 1983). The Unix Tutorial / Part 3: Unix in the Microcomputer Marketplace. BYTE: 132. Дата обращения: 30 января 2015.
8. ↑ Howitt, Doran (10 декабря 1984). Unix and the Single User. InfoWorld: 28. Архивировано 29 января 2018. Дата обращения: 7 февраля 2015.
9. ↑ Letwin, Gordon (17 августа 1995). What's happening to OS/2. Newsgroup: comp.os.os2.advocacy. Usenet: DDFvKo.G4M@lab.lwpi.com. Архивировано 7 марта 2023. Дата обращения: 6 ноября 2013. Источник (неопр.). Дата обращения: 27 апреля 2022. Архивировано 30 января 2018 года.
10. ↑ Pollack, Andrew (27 июля 1991). Microsoft Widens Its Split With I.B.M. Over Software. The New York Times. Архивировано 2 ноября 2010. Дата обращения: 2 сентября 2008.
11. ↑ Brinkley, Joel (28 мая 1999). I.B.M. Executive Describes Price Pressure by Microsoft. New York Times. Архивировано 11 декабря 2008. Дата обращения: 2 сентября 2008.
12. ↑ Фигурнов, 1999, с. 114.
13. ↑ 1 2 3 4 Фигурнов, 1999, с. 115.
14. ↑ Фигурнов, 1999, с. 116.
15. ↑ Фигурнов, 1999, с. 141.
16. ↑ Фигурнов, 1999, с. 89.
17. ↑ Фигурнов, 1999, с. 131.
18. ↑ Фигурнов, 1999, с. 116−117.

## Литература

[править | править код]

* В.Э.Фигурнов. Часть 3. Основы работы в среде MS DOS // IBM PC для пользователя. — М.: Инфра-М, 1999. — ISBN 5-86225-471-4.
* Murdock, Everett. DOS the Easy Way. — EasyWay Downloadable Books, 2008. — С. 1. — ISBN 0923178023.
* Э. Таненбаум. Современные операционные системы = Modern operating systems. — 3-е издание. — Питер, 2010. — 1120 с. — (Классика Computer Science). — ISBN 978-5-49807-306-4.
* Васятко В.Н., Шелепова Е.Н., Панушкина О. В., Константинова С.С. и др. MS-DOS 6.0 Справочное руководство для пользователей компьютеров IBM PC. — ВА-Принт, 1994. — ISBN 5-85734-023-3.
* Гордеев А. В. Операционные системы: Учебник для вузов. — 2-е. — Санкт-Петербург, 2007. — ISBN 978-5-94723-632-3.
* Microsoft, Antitrust and the New Economy: Selected Essays / David S. Evans. — Springer US, 2002. — ISBN 9780792376675.
* А. В. Фролов, Г. В. Фролов. 1 // MS-DOS для программиста. — М.: Диалог-МИФИ, 1995. — 254 с. — (Библиотека системного программиста). — ISBN 5-86404-062-2.
* А. В. Фролов, Г. В. Фролов. 2 // MS-DOS для программиста. — М.: Диалог-МИФИ, 1995. — 253 с. — (Библиотека системного программиста). — ISBN ISBN 5-86404-063-0.

*[М.]: Москва