mardi 2 septembre 2014

Il était une fois CP/M

Cet article concerne l'histoire de l'informatique, j'y parle du premier système d'exploitation pour micro-ordinateur, CP/M l'ancêtre du DOS.

Les premiers ordinateurs n'avaient pas de système d'exploitation et n'était pas interactif. Un programme était écris pour être ensuite chargé dans la machine pour exécution. Il y avait alors sur ces machines ce qui s’appelait un programme de contrôle. Ce programme présentait à l'opérateur une interface de commande simple lui permettant de charger et d'exécuter les programmes et autres tâches nécessaire à l'utilisation de la machine. Les programmes étaient souvent exécutés en lot (batch). Les programmes étaient fournis à la machine sous forme de ruban ou de carte perforées. Lors de mon premier cours d’informatique je programmais sur des cartes perforées dans un langage appelé FORTRAN IV. On écrivait notre programme à la main sur papier pour ensuite transcrire ce code source sur des cartes en utilisant la machine appelée justement perforatrice1. Nous déposions nos cartes sur une étagère à l'entrée d'un local et le lendemain nous allions chercher le résultat sur la même étagère. Tous les programmes étaient exécutés en lot pendant la nuit. Ce n'était pas vraiment excitant l'informatique à cette époque. C'était au début des années 70.

Control Program for Micro-computer

Donc au milieu des années 70 une compagnie du Nouveau Mexique appelée Micro Instrumentation and Telemetry Systems, MITS a mis sur le marché le premier micro-ordinateur digne de ce nom, l'Altair 8800 qui utilisait le microprocesseur 8080 d'Intel. C'est alors que Gary Kildall a décidé de créer un programme de contrôle pour cet ordinateur en s'inspirant de ce qui se faisait à l'époque sur les Mainframe. Sa femme et lui on créé une compagnie qui s’appelait Digital Research Inc dans le but de vendre ce programme baptisé CP/M, signifiant Control Programm for Micro-computer.

BIOS

C'est alors que de nombreuses compagnies sont entrées dans le marché des micro-ordinateurs en utilisant l'Intel 8080 ou sa version amélioré le Z80 fabriqué par Zilog2. Gary Kildall devait donc porté son CP/M pour ces différentes machines. C'est alors qu'il eu l'idée de séparer les fonctions de bases qui contrôle directement le matériel des fonctions de plus haut niveau. De cette façon pour modifier CP/M pour qu'il fonctionne sur une autre machine il n'avait qu'à modifier ces fonctions de bases sans avoir à modifier le reste du système. Il baptisa cette couche d'abstraction matérielle le Basic Input Output System, BIOS.

Évolution

MS-DOS de Microsoft a été directement inspiré par CP/M. Lorsque les PC sont sortie sur le marché avec leur processeur 16 bits Intel 8088 et 8086. Microsoft a créé MS-DOS en s'inspirant de CP/M. Les fabriquants de PC fournissaient la couche d'abstraction matérielle qui avait été standardisé en conservant le nom que lui avait donné Kildall, BIOS. Le BIOS interfaçait avec le DOS via les fonctions de l'interruption 13hex. Les applications interfaçaient DOS via les fonctions de l'interruption 21hex.

Système d'exploitation

Les interfaces utilisateurs graphiques apparues avec Apple MacIntosh et Microsoft Windows ont mis fin à l'évolution de CP/M et MS-DOS, DR-DOS3 et IBM-DOS4, quoiqu'il existe encore une version libre appelée FREEDOS ainsi que l'émulateur DOSBOX qui tournent sur les systèmes d'exploitation modernes tel que Linux,OSX et Windows.

Aujourd’hui tous les systèmes d'exploitations utilisent cette structure en multi-couches appelée en anglais software stack. Au plus bas niveau il y a la couche d'abstraction matérielle Hardware Abstraction Layer HAL. Au dessus de celle-ci il y a les pilotes de périphériques. Ensuite viens le noyaux du système d'exploitation qui dans un système moderne est le seul qui est autorisé à parler au pilotes de périphériques. Finalement il y a les applications dans la couche utilisateur. Chaque couche présente une interface standardisée à la couche supérieur ce qui a 2 avantages. Premièrement ça rends le système plus facilement transportable sur une autre machine ou architecture car les couches supérieures ne sont pas affectées par les détails de l'implémentation des couches inférieures et n'ont donc pas besoin d'être modifiées chaque fois qu'une couche inférieure l'est. Deuxièment ça facilite la création de programmes ou pilotes, le programmeur n'ayant qu'à connaître les fonctions de l'interface sans se soucier des détails sous-jacents.


1) Il existait aussi des trieuses de cartes pour venir au secours de ceux qui avaient le maleur de laissé tomber leur boite à chaussure remplie de cartes perforées. C'est peut-être pour ça qu'à l'époque il y avait une instruction par carte et que chaque carte débutait avec un numéro de ligne.
2) Zilog existe encore et est maintenant un fabriquant de Microcontroleurs. Ils vendent encore une version CMOS du Z80. L'original était en technologie NMOS. Le Z80 avec le 6502 est un des rares micro-processeur de cette époque qui est encore fabriqué.
3) Pour répondre à la concurrence de Microsoft, Digital Reseach inc. avait développé son propre système DR-DOS avant que la compagnie soit rachetée par Novell.
4) IBM-DOS était développé par Microsoft et c'est d'ailleurs ce contrat avec IBM qui a fait la fortune initiale de Microsoft.