Stéphane FOSSE

MS-DOS : le système d'exploitation qui transforma l'informatique personnelle


2025 - - Copyleft : cette œuvre est libre, vous pouvez la copier, la diffuser et la modifier selon les termes de la Licence Art Libre 1.3
[PDF]

En mai 1979, Seattle Computer Products acheva le premier prototype de sa carte microprocesseur 8086 pour bus S-100. L'entreprise envisageait d'utiliser CP/M-86 de Digital Research, attendu pour la fin de l'année. Des discussions brèves eurent lieu avec Digital Research pour prêter un prototype, mais Seattle Computer décida de garder ses deux cartes fonctionnelles en interne. CP/M-86 devait arriver « bientôt ».

Microsoft avait déjà lancé un programme de développement logiciel 8086 ambitieux. Durant les deux dernières semaines de mai 1979, la version 8086 du Stand-Alone Disk BASIC, un interpréteur BASIC avec système d'exploitation intégré, fut rendue totalement fonctionnelle sur le matériel fourni par Seattle Computer. Le package complet (8086 exécutant le disk BASIC) fut présenté à New York début juin lors de la National Computer Conference 1979. Cette présentation marqua la première démonstration publique d'un BASIC 8086 et d'une carte processeur 8086 pour bus S-100.

Seattle Computer expédia ses premières cartes 8086 en novembre 1979, avec le Stand-Alone Disk BASIC comme unique logiciel disponible. Les mois passèrent. CP/M-86 restait invisible. En avril 1980, Seattle Computer décida de créer son propre système d'exploitation. Cette décision résultait autant des inquiétudes concernant les lacunes de CP/M que du besoin urgent d'un système d'exploitation polyvalent. Les premières versions du système d'exploitation, baptisé QDOS 0.10, furent livrées en août 1980. QDOS signifiait Quick and Dirty Operating System, car le développement fut réalisé dans l'urgence avec deux mois-homme de travail. Le système fonctionnait remarquablement bien. Il proposait tous les utilitaires de base pour le développement en assembleur, excepté un éditeur. Une semaine plus tard, Seattle Computer ajouta un éditeur, une absurdité connue sous le nom d'EDLIN (editor of lines). Ce système primitif orienté ligne devait durer moins de six mois. Malheureusement, il persista bien plus longtemps comme composant de MS-DOS.

Fin 1980, une nouvelle version du système d'exploitation fut publiée sous le nom de 86-DOS 0.3. Seattle Computer transmit cette version à Microsoft, qui avait acheté des droits non exclusifs pour commercialiser 86-DOS et comptait alors un client. À cette période, Digital Research lança les premières copies de CP/M-86. En avril 1981, Seattle Computer Products diffusa 86-DOS 1.00, très similaire aux versions de MS-DOS largement distribuées par la suite.

En juillet 1981, Microsoft acheta tous les droits du système d'exploitation à Seattle Computer. Le nom MS-DOS fut adopté. Peu après, IBM annonça le Personal Computer, utilisant comme système d'exploitation ce qui correspondait essentiellement au 86-DOS 1.14 de Seattle Computer. Microsoft améliora continuellement le système, fournissant la version 1.24 à IBM (sous l'appellation PC-DOS 1.1) et MS-DOS 1.25 comme première diffusion générale aux clients MS-DOS en mars 1982.

Digital Research revint sur le marché des systèmes d'exploitation avec DR-DOS, basé sur CP/M-86 et leur propre code DOS. D'autres y virent une copie par rétro-ingénierie d'IBM PC-DOS. DR-DOS utilisait le style de nommage du noyau IBMDOS.SYS, un élément troublant. Digital Research développa aussi GEM, une interface utilisateur graphique, approximativement au moment où Microsoft travaillait sur Windows.

L'architecture de MS-DOS reposait sur une organisation tripartite. Le cœur du système consistait en un gestionnaire d'entrées/sorties indépendant du matériel, représenté sur le disque par le fichier caché MSDOS.SYS. Ce gestionnaire acceptait les requêtes des programmes applicatifs pour les opérations d'entrées/sorties de haut niveau : accès séquentiel ou aléatoire aux fichiers nommés sur disque, communication avec les périphériques caractères comme la console. Le gestionnaire traitait ces requêtes et les convertissait en opérations de très bas niveau exploitables par le système d'entrées/sorties. La relative indépendance matérielle de MSDOS.SYS explique son identité quasi parfaite dans toutes les versions MS-DOS fournies par les constructeurs avec leurs équipements.

Le système d'entrées/sorties, totalement dépendant du matériel, était représenté sur disque par le fichier caché IO.SYS. Les constructeurs matériels l'écrivaient normalement, à l'exception notable d'IBM dont le système fut écrit par Microsoft selon les spécifications IBM. Les tâches requises du système d'entrées/sorties, comme l'envoi d'un octet unique vers un périphérique caractère ou la lecture d'un groupe contigu de secteurs physiques en mémoire, étaient aussi simples que possible.

Le processeur de commandes, contenu dans le fichier visible COMMAND.COM, fournissait l'interface standard entre l'utilisateur et MS-DOS. Son rôle consistait à accepter les commandes depuis la console, déterminer leur signification et exécuter la séquence correcte de fonctions pour accomplir la tâche. Ce processeur n'était qu'un programme applicatif ordinaire effectuant son travail uniquement via les requêtes de fonctions MS-DOS standard.

La structure de fichiers MS-DOS révélait une conception centrée sur l'efficacité. Les disques étaient divisés en pistes et secteurs, mais MS-DOS adoptait une vision abstraite : un tableau continu de n secteurs logiques, numérotés de 0 à n-1. Cette abstraction transparente masquait la correspondance entre secteurs logiques et secteurs physiques, gérée par le système d'entrées/sorties dépendant du matériel.

Le système de fichiers MS-DOS divisait ce tableau linéaire de secteurs logiques en quatre groupes. D'abord la zone réservée pour le chargeur d'amorçage, généralement un seul secteur. Ensuite la FAT (file allocation table), carte de distribution de l'espace entre tous les fichiers du disque. Deux copies étaient conservées côte à côte : si une copie devenait illisible suite à une défaillance du support, la seconde prenait le relais. Le répertoire suivait la FAT. Chaque fichier disposait d'une entrée de 32 octets incluant le nom, la taille, la date et l'heure de dernière écriture, et des attributs spéciaux. Chaque entrée contenait aussi un pointeur vers un emplacement dans la FAT indiquant où trouver les données du fichier.

Le reste du disque constituait la zone de données, divisée en unités d'allocation de taille égale. Chaque unité pouvait comporter 1, 2, 4, 8, 16, 32, 64 ou 128 secteurs logiques, le nombre étant fixe pour un format de disque donné. Les unités d'allocation étaient numérotées séquentiellement à partir de 2, les numéros 0 et 1 étant réservés. L'unité d'allocation représentait la plus petite portion d'espace que MS-DOS pouvait gérer. L'espace disque utilisé par chaque fichier correspondait à un nombre entier d'unités d'allocation. Un fichier d'un octet monopolisait une unité complète.

La FAT fonctionnait comme un tableau unidimensionnel de numéros d'unités d'allocation. Les numéros utilisés comme indices dans la FAT étaient également des numéros d'unités d'allocation. La FAT traduisait un numéro d'unité d'allocation en entrée pour retourner un numéro d'unité différent en sortie. L'entrée pouvait être n'importe quelle unité faisant partie d'un fichier ; le numéro retourné désignait l'unité séquentielle suivante de ce fichier. Cette structure en chaîne permettait d'étendre n'importe quel fichier à volonté et d'utiliser tout espace libre sur le disque sans considération de son emplacement physique.

Le choix de la taille des unités d'allocation résultait d'un compromis. Des unités plus petites minimisaient la fragmentation interne, l'espace gaspillé dans la dernière unité d'allocation d'un fichier, mais nécessitaient une FAT plus volumineuse. Pour un disque 8 pouces simple densité de 2002 secteurs de 128 octets, une unité d'allocation d'un secteur aurait nécessité 48 secteurs pour deux FAT, alors que l'espace perdu par fragmentation interne avec une taille de fichier moyenne de 16 Ko représenterait seulement 8 secteurs. Le format MS-DOS standard pour disques 8 pouces simple densité adopta quatre secteurs par unité d'allocation, équilibrant fragmentation interne et taille de FAT.

La conservation de la FAT entière en mémoire centrale constituait une décision d'architecture majeure. Cette approche permettait d'accéder à n'importe quel fichier, séquentiellement ou aléatoirement, sans lecture disque autre que l'accès aux données proprement dites. Les schémas utilisés dans d'autres systèmes d'exploitation, incluant CP/M et Unix, pouvaient nécessiter une ou plusieurs lectures disque simplement pour localiser les données, particulièrement lors d'accès aléatoires. Dans les applications telles que les requêtes de bases de données, où l'accès aléatoire fréquent constituait la règle, cette différence pouvait facilement doubler les performances.

MS-DOS version 2.0, publié en février 1983, apporta des améliorations substantielles. Le système autorisa des tampons multi-secteurs dont le nombre était déterminé par un fichier de configuration au chargement du système. Les tables d'allocation de fichiers ne résidaient plus en permanence en mémoire, partageant l'usage des tampons secteurs avec les transferts de données partiels. Le système conservait un répertoire principal de taille fixe, mais introduisit les fichiers comme sous-répertoires, créant un système de répertoires hiérarchique, structure arborescente, extensible à n'importe quelle profondeur. Cette approche devenait quasi indispensable pour les utilisateurs gérant tous les fichiers susceptibles de résider sur un disque dur.

Ce récit complète « EPOCH - une histoire de l'informatique », mon livre sous licence libre qui couvre 350 technologies. Télécharger ou commander

Références

  • "The Origins of MS-DOS" - Sol Libes, Micro/Systems Journal, July/August 1986
  • An Inside Look at MS-DOS - Tim Paterson, BYTE Magazine, June 1983