# DOS

On appelle généralement DOS (disk operating system) le système d'exploitation PC-DOS, ainsi que la variante MS-DOS vendue par Microsoft pour les compatibles PC. Il en existe des clones postérieurs, tels DR-DOS de Digital Research et FreeDOS. Jusqu'au début des années 1990, DOS était le type de système le plus utilisé sur compatibles PC. Ce système en ligne de commande était rudimentaire : pas de multitâche, pas de mémoire virtuelle, gestion du seul mode segmenté 16 bits du microprocesseur x86.
Il existe d'autres systèmes sans relation directe qui contiennent le mot DOS (AMSDOS, AmigaDOS, Apple DOS, ProDOS, DOS sur mainframe), mais leur nom est éclipsé.

## Histoire

L'origine de DOS remonte à février 1981, lors du lancement de l'IBM PC (Personal Computer) par IBM. La société avait demandé à Digital Research, créateur de CP/M qui dominait le marché à l'époque, de porter son système sur le PC, mais devant le peu d'empressement de son directeur Gary Kildall, elle s'était adressée également à Bill Gates, le fondateur de Microsoft.
Microsoft était réputé pour ses interpréteurs BASIC, mais n'avait rien dans ses cartons pour écrire rapidement un système d'exploitation. L'entreprise porte alors son choix sur le QDOS (pour Quick and Dirty Operating System) créé par une petite firme de Seattle, qu'elle lui rachète pour 50 000 $ et améliore petit à petit.
La version vendue à IBM s'appellera PC-DOS. Elle ne diffère de la version distribuée par Microsoft que par deux choses.
* Les fichiers IBMBIO.COM et IBMDOS.COM se nomment IO.SYS et MSDOS.SYS sur la version Microsoft. Par conséquent, la botte secrète d'IBM, le défragmenteur de disquette DVOO, ne marchera que sur les systèmes IBM : puisque IBMBIO.COM ou IO.SYS doivent être en première position sur la disquette pour que celle-ci soit amorçable, il suffit à IBM de vérifier la présence de son fichier IBMBIO.COM. Cependant, les disquettes (de 5"¼) sont si lentes que DVOO lui-même ne sera jamais commercialisé. Il y a cependant tout de même discrimination avec d'autres logiciels d'IBM qui furent commercialisés, notamment pour la version 7 de PC-DOS avec Stacker et une multitude d'utilitaires système qui vérifiaient la version (avec le message d’erreur « Mauvaise version du DOS »).
* L'interpréteur BASIC nommé simplement BASICA sur IBM se nomme GWBASIC sur la version Microsoft. Il peut exister un troisième interpréteur BASIC : celui qui se trouve en ROM sur certains modèles et qui prend automatiquement la main si le PC ne trouve pas de disquette sur laquelle démarrer.
IBM commercialisa le PC à parité avec trois systèmes d'exploitation (tous trois payants) au choix de l'utilisateur :
* PC-DOS ;
* CP/M 86 (qui restera toujours marginal sur le PC, comme sur le Visiotexte) ;
* PC/IX, une sorte de clone d'UNIX, trop exigeant en ressources pour le processeur Intel 8088.
Par la suite, PC-DOS faisant plus des deux tiers des ventes de système pour PC à lui seul, Microsoft demanda et obtint qu'il soit facturé d'emblée avec chaque PC vendu, une politique connue sous le nom de « taxe Windows ».
MS-DOS est longtemps resté la base des systèmes d'exploitation grand public de Microsoft, bien que l'installation de Windows en modifie in-situ des portions de plus en plus grandes. En 1995, date d'apparition de Windows 95, il devint invisible pour les utilisateurs car l'interface graphique était directement lancée au démarrage. MS-DOS est resté une sous-couche des versions grand-public de Windows (comme Windows 98 et Me) jusqu'à l'avènement de Windows XP qui marque son abandon réel par Microsoft au profit du système NT. MS-DOS en était alors à sa version 8.
Les versions récentes de Windows possèdent toujours un « interpréteur de commandes » (command prompt), dont les commandes sont héritées de celles de MS-DOS et qui permet d'exécuter des programmes Windows en mode texte, ainsi que des programmes MS-DOS grâce à un émulateur intégré (NTVDM). Cependant, cet interpréteur (cmd.exe) n'est pas celui de MS-DOS à proprement parler (command.com), et certains anciens programmes DOS ne peuvent s'exécuter dans cet interpréteur, car non pris en charge par NTVDM (notamment lorsqu'un programme a besoin d'accéder directement à un périphérique, ce qui est interdit par le mode protégé des Windows récents). Depuis Windows 8, cet émulateur n'est plus fourni.
MS-DOS n'étant plus maintenu par Microsoft, un autre DOS a été développé : FreeDOS, un logiciel libre. IBM, pour sa part, dispose d'un DOS 7, qui sait lire les systèmes de fichiers FAT32 et qui lui est utile pour certains travaux ponctuels.
Un autre DOS ayant existé est DR-DOS, l'héritier de CP/M distribué par Digital Research, qui fut ensuite racheté par Novell. Plusieurs versions de Windows étaient toutefois programmées pour détecter le DR-DOS et émettre un grand nombre de messages d'erreurs inquiétants (comme : « La table ... ne se trouve pas à la bonne place en mémoire ») qui finirent par atteindre leur but, qui était d'en détourner le possesseur de PC.

## Versions

Pour les versions de PC-DOS, voir : IBM PC-DOS (en)
* DOS 1.00 : 1981, il occupe 11 Ko en mémoire et ne gère que des disquettes à simple face de 160 Ko
** PC-DOS 1.10 : 1982, supporte les disquettes 5″¼ doubles faces (320 KiB). Version PC-DOS pour IBM uniquement.
** MS-DOS 1.25 : 1982, équivalent de PC-DOS 1.10 mais en version OEM. C'est la première version vendue par Microsoft (MS-DOS) à d'autres constructeurs.
* DOS 2.00 : 1983, version pour les PC XT, il occupe 40 Ko, et sait gérer les disquettes 5″¼ double face de 360 Ko et les disques durs de 15 Mo maximum. Il utilise un système de fichiers en FAT12
** DOS 2.01 : 1983, version internationale du 2.0 ; Support de paramètres localisés, Support du Kanji (caractères japonais).
** DOS 2.1 : 1983, version IBM uniquement. Équipe en particulier le nouveau PC-Jr.
** DOS 2.11 : 1983, support des jeux de caractères spécifiques aux différents pays. C'est une version OEM très largement utilisée par de nombreux constructeurs de compatibles PC.
** DOS 2.25 : 1983, support étendu pour les langues étrangères.
* DOS 3.00 : 1984, version pour le PC AT, occupe 60 Ko, il gère les disquettes 5″¼ de 1,2 Mo et disques durs de 32 Mo, FAT16, il supporte aussi une horloge CMOS.
** DOS 3.05 : 1984, première version OEM pour la version 3.x
** DOS 3.10 : version supportant le réseau
** DOS 3.20 : 1986, version supportant les disquettes 3″½ de 720 Ko, apparition de la commande Xcopy
** DOS 3.30 : 1987, version supportant les disquettes 3″½ de 1,44 Mo
** DOS 3.31 : 1987, supporte des partitions >32 Mo, nouveaux appels systèmes
* DOS 4.00 : 1988, il occupe 110 Ko de RAM, offre une interface graphique (le Shell) et gère les disques et fichiers supérieurs à 32 Mo grâce à la FAT16.
** MS-DOS 4.01 : version déboguée
* MS-DOS 5 : 1989, meilleure ergonomie (« doskey » pour rappeler/éditer les commandes en ligne voire gérer des « macros ») et gestion mémoire (chargement en mémoire haute pour contourner les limitations à $^{512}$⁄$_{640}$ Ko), interface graphique « DosShell » (apparue avec la version 4) pour une gestion basique des fichiers et répertoires, cache disque « SmartDrive » améliorant considérablement les performances disque.
* MS-DOS 6.00 : 1993, version intégrant un anti-virus, un outil de vérification de système de fichiers, ScanDisk, un logiciel de compression, DoubleSpace, et des menus de démarrage pour gérer plusieurs « configurations ».
** MS-DOS 6.20 : novembre 1993, version déboguée ; apparition de l'utilitaire Memmaker
** MS-DOS 6.21 : février 1994, suppression de DoubleSpace à la suite d'une plainte pour violation de brevet de la part de Stac Electronics, éditeur d'un logiciel concurrent, Stacker.
** MS-DOS 6.22 : juin 1994, DoubleSpace est remplacé par DriveSpace, logiciel compatible sans le problème de brevet. C'est la dernière version autonome de MS-DOS.
* MS-DOS 7 : 1995, le DOS de Windows 95.
** MS-DOS 7.1 : 1996, le DOS de Windows 95B/C, de Windows 98 et de 98SE.
* MS-DOS 8 : 2000, dernière version de MS-DOS. Il est intégré à Windows ME.
** PC-DOS 2000 : 2000, intègre de petits ajouts de fonctionnalités.
* Avec le déclin d'achat des licences des logiciels DOS commerciaux, une version a été développée et distribuée sous forme de logiciel libre, FreeDOS:
| Version | Status | Date |
| FreeDOS 1.0 | FINAL | 3 septembre 2006 | Multi-boot avec Windows (95 ; 2003; NT; XP; ME); lignes de commande avancées (FREECOM & 4DOS); compressions 7ZIP et InfoZip ZIP/UNZIP; lociciel internet ARACHNE web & courriel; prise en charge des cédéroms; pilote CUTEMOUSE avec prise en charge de la molette de la souris; éditeur de texte multi-fenêtre; système de fichier FAT32; power management FDAPM; antivirus FDAV; gestionnaire de paquets FDNPKG avec support réseau; gestion des imprimantes; aide en ligne hypertexte; gestionnaire de mémoire JEMM386 (XMS, EMS); support des disques LBA; lecteur multimedia MPXPLAY (mp3, ogg, wmv avec AC97 intégré et pilotes SB16); quelques utilitaires récupérés de Linux par DJGPP; pilotes UDMA pour disques durs et disques DVD: XDMA & XDVD |
| FreeDOS 1.1 | FINAL | 2 janvier 2012 | Support natif des noms de fichiers longs |
| FreeDOS 1.2 | FINAL | 25 décembre 2016 | |

## Architecture

Le DOS se compose notamment des éléments suivants:
* Principales commandes DOS (voir plus bas).
* Un vecteur d'interruption qui permet aux applications fonctionnant sous DOS d'appeler les services du DOS.

## Principales commandes DOS

Sur les autres projets Wikimedia :
* COMMAND.COM, sur Wikibooks
Il existe deux niveaux de commande dans MS/DOS :
* Le premier niveau est exécuté par le noyau MS/DOS lui-même (MSDOS.SYS)
* Le second niveau de commande est l'interpréteur de commande utilisé.
Les commandes par défaut dépendent de l'interpréteur de commande. L'interpréteur de commande par défaut est le programme COMMAND.COM. Celui-ci peut être remplacé par un autre interpréteur de commande dans le fichier CONFIG.SYS avec une ligne shell=.
Des interpréteurs de commandes alternatifs ont été développés :
* 4DOS (de l'éditeur JP Software)
* NDOS (version de 4DOS licenciée par l'éditeur Norton)
Les principales commandes utilisées sont :
* md (Make Directory, pour créer un répertoire)
* cd (Change Directory, pour changer de répertoire de travail)
* rd (Remove Directory, pour détruire un répertoire)
* copy (pour copier des fichiers)
* dir (pour lister les fichiers)
* cls (abréviation de CLear Screen pour effacer l'écran)
* del (pour détruire un fichier)