Une histoire des principaux systèmes d'exploitation

ImprimanteSur le billet précédent où je décrivais les principes généraux de fonctionnement des ordinateurs, je m’étais arrêté au lancement du système d’exploitation.
Si en général dans l’histoire de l’informatique on se contente de décrire l’évolution des capacités physique des ordinateurs, nous verrons dans ce billet l’influence des choix effectués lors de la conception des systèmes d’exploitation sur les limites et capacités des principaux systèmes d’exploitation actuels.

Dans ce billet après avoir décrit rapidement l’essence du système d’exploitation nous verrons au travers de l’histoire de la création des principaux systèmes comment les choix stratégiques effectués au cours du temps influent encore sur les capacités et limites actuelles de ces systèmes.
 

Comme son nom l’indique, le système d’exploitation “exploite” les ressources de la machine. Nous avons vu que ces ressources se composent principalement du microprocesseur, de la mémoire (RAM) et du stockage.

Carte perforéeDans les années 50, la situation était assez simple. La suite d’instruction à effectuer par le processeur est un programme. Ce programme était injecté au processeur à partir de cartes perforées. Le programme gérait lui même l’accès à la mémoire RAM. L’utilisateur attendait l’impression du résultats des calculs. L’ordinateur effectuait un programme après l’autre. Les utilisateurs attendaient leur tour et espéraient qu’ils éviteraient les pannes mécaniques ou de tube à vide.
En 1955 il n’existait que 250 ordinateurs (dont 5 en France). Ils étaient utilisés pour traiter de grandes masses d’information comme des données de recensement, des données mesurés par les tunnels de simulation aérodynamique de Boeing, des calculs balistiques, des cassages de code secret ou encore pour valider des théories mathématiques.  

Tube à videAu début des années 60, avec l’apparition du transistor les ordinateurs deviennent plus faciles à construire et plus robustes. On atteint 6000 ordinateurs en 1960 et 30000 en 1965. Leur coût reste toujours extrêmement élevé. L’IBM 7090 (sur la photo ci-dessous) distribué en une douzaine d’exemplaires depuis 1959 est vendu 3 millions de $. En 1962, IBM en offre un exemplaire au MIT, en échange, un tiers du temps est réservé pour l’usage d’IBM, un tiers pour le MIT, le tiers restant pour d’autres universités.



IBM 7090

Tom Van Vleck nous raconte que le directeur général d’IBM avait régulièrement besoin du calcul de son handicap de yacht. Le programme des chercheurs qui s’exécutait à ce moment devait alors être arrêté pour être relancé plus tard. Il devient alors urgent de gérer le temps d’utilisation du processeur.

Les ingénieurs du MIT adaptent alors un programme qui permet l’arrêt d’un autre programme et la possibilité de traiter plusieurs programmes simultanément en partageant le temps du processeur : CTSS. Ce programme sera le premier système d’exploitation.

Multics TerminalUn autre projet plus ambitieux est ensuite lancé : MULTICS. Il s’agit de prendre en compte non seulement le partage du temps du processeur mais aussi l’utilisation de l’ordinateur par plusieurs utilisateurs à partir de multiples terminaux (comme sur la photo ci-contre), en partageant également la RAM, en conservant les programmes et les données sur un disque dur mais également le gestion de multiples processeurs pour éviter tout arrêt de la machine. Après quelques années de développements, les informaticiens constatent ou redécouvrent l’importance de la simplicité du programme (l’algorithme) plutôt que la gestion des cas particuliers, la complexité apportée par la prise en compte de fonctionnalités secondaires, la difficulté de la gestion des programmes composés de modules.

Ces difficultés retardent considérablement le développement de MULTICS. En 1969, l’équipe des laboratoires BELL d’ATT abandonne le projet MULTICS et démarre un nouveau système d’exploitation qui deviendra Unix.

UnixSi les objectifs de gestion du temps partagé (le multi-tâche), de multi-utisateurs, de terminaux, de console de lancement des programmes (processus) est conservé, Unix est dans un premier temps une simplification de MULTICS. Au lieu des multiples niveaux d’exécution de MULTICS, Unix proposera uniquement un espace noyau et un espace utilisateur. Unix se contentera de 2 niveaux d’utilisateurs : administrateur(root)/utilisateur. Le système d’exploitation est un programme comme un autre mais il bénéficie des droits privilégiés de l’administrateur.

Toujours dans un souci de simplification et de clarification une idée fondamentale d’Unix est que “tout est fichier”.
Les fichiers servaient déjà à l’enregistrement des programmes et des données, avec Unix des fichiers spéciaux permettent également d’accéder aux périphériques ou de communiquer entre les processus (les programmes en cours d’exécution). Ces capacités de communication entre processus permet d’utiliser des programmes élémentaires qui se spécialisent au traitement d’une seule tâche. Les principaux développeurs d’Unix mettent également au point un langage de programmation de haut niveau : le langage C, qui permet de rapidement compiler les éléments du système pour un autre ordinateur.

mini-ordinateurAu cours des années 70, le nombre d’ordinateurs continue de croitre. Alors que les performances continuent de s’améliorer, les constructeurs proposent également des ordinateurs moins puissants mais également moins encombrants et moins chers. Comme les lois anti-trust américaines interdisent à ATT qui est une société téléphonique de vendre des logiciels, celle-ci propose Unix avec son code source sous forme de licence d’utilisation. Unix va s’imposer sur ces “mini-ordinateurs”. La diffusion du code source va permettre aux constructeurs de matériel et aux ingénieurs de facilement adapter Unix à leurs besoins et aussi à l’améliorer. La rançon de ce succès est que de multiples variantes vont également naître. Les gros ordinateurs (mainframe) vont continuer à utiliser MULTICS ou leur propre système d’exploitation.



Il apparaît que, dès cette époque, les principales questions techniques de partage des ressources mais aussi de la gestion de la complexité des programmes sont déjà posées. La problématique de la diffusion de ces technologies est également naissante avec la diffusion des codes sources sous licence mais aussi les variations qui deviendront assez tôt incompatibles entre les divers matériels.

Micro processeurUne nouvelle évolution va naître avec les circuits intégrés : les transistors vont maintenant être directement inclus par milliers puis par millions dans des puces électroniques. Le processeur va devenir un microprocesseur. La diminution de la taille et du prix va permettre d’envisager de construire des ordinateurs personnels (PC).
Si les premiers ordinateurs personnels apparaissent dans les années 70 avec le Micral français en 1972 ou l’Apple II en 1977, c’est encore une fois IBM qui lancera les plus importants changements.

IBM PC 5150En 1981, IBM propose un ordinateur pour 4500$ avec un processeur Intel 8 bits à 4,5Mhz et 64K de RAM. L’IBM 7090 de 1959 avait 32K de RAM et était cadencé à 1Mhz mais manipulait des données de 36 bits. La puissance disponible au MIT ou à la NASA vingt ans plus tôt était désormais disponible pour (presque) tout le monde.
Ironiquement ces premiers micro-ordinateurs vont être confrontés aux mêmes choix technologiques que vingt ans plus tôt pour exploiter les faibles capacités de ces petites machines, d’autant plus que les résultats ne s’affichent pas seulement sur imprimante mais surtout sur écran. Le premier choix important d’IBM est de diminuer les coûts en se fournissant auprès de sous-traitants, aussi bien pour le matériel que pour les logiciels.
Si les premiers micro-ordinateurs se sont contentés d’utiliser uniquement le système d’exploitation de base en mémoire morte (BIOS) pour charger et exécuter un seul programme depuis une bande magnétique ou un lecteur de disquette, très vite des systèmes d’exploitation plus ambitieux ont vu le jour.
Les micro-ordinateurs des années 70 n’étaient pas encore assez puissants et les disques durs et la RAM encore trop chers pour envisager d’utiliser un système comme MULTICS ou Unix. Pour limiter la taille en RAM du système d’exploitation seules les fonctions de gestion de fichier et de gestion d’un faible nombre de processus étaient implémentées.

CP/MA la fin des années 70, le système CP/M de la société Digital Research était utilisé par 80% des micro-ordinateurs déjà existants. Une carte d’extension permettait même de l’utiliser sur Apple II. CP/M distinguait déjà les programmes de données par des extensions du nom de fichier, “.EXE” ou “.BAT” pour des programmes ou “.DAT” pour des données. Au lieu des super-dossiers de MULTICS ou des points de montage d’Unix pour intégrer les périphériques de stockage sans déranger l’utilisateur, CP/M proposait seulement l’usage de lettres pour identifier les périphériques de stockage : “A:”, “B:”, “C:”. CP/M prévoyait pourtant déjà l’usage par de multiples utilisateurs pour son futur système d’exploitation MP/M qui sera proposé à partir de 1979.
Naturellement IBM cherchera à utiliser CP/M pour son micro-ordinateur mais l’affaire échouera. IBM demandera alors à la jeune société Microsoft de Bill Gates qui lui fournit déjà un éditeur de texte et le compilateur BASIC, de lui fournir un système d’exploitation. Bill Gates achète alors 50 000$ QDOS (Quick and Dirty Operting System) qui est alors, comme son nom l’indique, une copie simplifiée des fonctionnalités de CP/M. Cette version rebaptisée MS-DOS sera distribuée sur tous les PC d’IBM puis les compatibles PC vendus par d’autres sociétés. C’est cette très large diffusion d’ordinateurs à petit prix qui sera le socle du succès de Microsoft alors que technologiquement les problèmes restaient ignorés.

Xerox 8010Au milieu des années 80, suite aux travaux de XEROX sur les interfaces graphiques, les systèmes d’exploitations peuvent proposer aux utilisateurs des interfaces composées de fenêtres (windows) où les programmes peuvent s’afficher et qui peuvent être contrôlés par une souris. Apple proposera cette interface graphique comme élément essentiel de son système d’exploitation dès 1984 avec le premier Macintosh. Microsoft proposera Windows 1.0 en 1986 mais seulement comme un programme complémentaire à MS-DOS, cela sera encore le cas pour Windows 2.x en 1987. C’est seulement à partir de 1990 avec Windows 3 que l’interface graphique apparaîtra comme l’élément principal du système d’exploitation même s’il s’agissait encore d’une application complémentaire à MS-DOS.

Bureau AppleMacintosh

Bureau Windows 3.11



Ces programmes qui gèrent les interfaces graphiques doivent pouvoir réagir rapidement aux commandes de l’utilisateur. Le noyau du système d’exploitation doit alors partager le temps du processeur entre le programme à exécuter et l’interface graphique. Comme les systèmes Windows ou MacOS ne sont pas multi-utilisateurs et ne prévoient pas d’utilisateur ou de processus privilégié, le multi-tâche est coopératif : il faut attendre que le programme rende la main au système pour prendre en compte les commandes d’un autre programme comme l’interface graphique. Si un programme se bloque, c’est tout le système qui se bloque. C’était particulièrement courant pour Windows qui devait intégrer les drivers de plus ou moins bonne qualité des multiples fabricants des composants des compatibles PC alors qu’Apple fabrique son propre matériel.
Malgré ses problèmes de stabilité Windows s’imposera, grâce au faible coût d’achat des PCs.
Les deux principaux systèmes d’exploitation grand public continueront à utiliser un système d’exploitation coopératif jusqu’en 2001 avec Windows XP (NT ne sera que peu utilisé par le grand public) et MacOS X pour Apple.

BSDNous allons faire un petit retour à la fin des années 70 pour voir l’évolution d’Unix sur les mini-ordinateurs puis les micro-ordinateurs.
On se rappelle qu’ATT avait dû distribuer les sources d’Unix sous forme de licence d’utilisation. Au milieu des années 80, l’université de Berkeley distribue sa version modifiée de l’Unix d’ATT (en particulier pour les machines VAX) sous une licence très permissive. Les sources de l’Unix BSD sont gratuites et leur usage impose uniquement d’inclure le nom de l’université de Berkeley. Des sociétés comme Sun ou même IBM vont pouvoir revendre leur propre système Unix adapté à leurs mini-ordinateurs. Lorsque Microsoft se résoudra à abandonner l’idée d’imposer son réseau privé et acceptera de se connecter à Internet, c’est du code de BSD qui sera utilisé.
GNUAu début des années 80, Richard Stallman, un ingénieur du MIT se rend compte lorsqu’il essaye de corriger un programme de gestion (driver) d’une imprimante Xerox que ce programme n’est distribué que sous forme binaire. Sans les sources du driver la correction n’est pas possible. Il lance alors le projet GNU : un système d’exploitation où tous les programmes sont distribués sous licence GPL. Celle-ci, plus contraignante que la licence BSD, impose que les modifications des sources des programmes soient redistribués sous la même licence GPL. L’objectif, plus ambitieux que la simple création d’un nouveau système d’exploitation, est de protéger la connaissance.
Très vite des outils indispensables comme le compilateur gcc qui permet de créer un programme à partir des sources vont être distribués et seront largement utilisés sur tous les systèmes d’exploitation.

TuxLe début des années 90 voit apparaître les premiers systèmes Unix sur PC. Alors que le développement de systèmes BSD est freiné par les recours en justice d’ATT, Linux, le noyau d’un jeune étudiant finlandais Linus Torvald, attire de plus en plus de contributeurs. Linux, accompagné des outils GNU est une système d’exploitation multi-tâches, mutli-utilisateurs complet dès la fin des années 90. Assez vite, des “distributions“ sélectionnent les programmes utilisables avec le noyau et les outils GNU. On peut citer par ordre d’apparition Slackware, Debian, Red Hat, Ubuntu. Tous les logiciels distribués sous licence GNU sont fournis avec les sources ce qui permet à chaque distribution de les reconstruire, de les tenir à jour ou de les améliorer en redistribuant ces améliorations. Les programmes inclus dans les distributions concernent aussi bien diverses interfaces graphiques que des logiciels de bureautique. Le choix de l’interface dépend de l’utilisateur. Voici ci-dessous quelques exemples de bureaux :



Bureautique Linux
Bureau Linux
Bureau KDE



Comme l’usage d’une interface graphique n’est pas nécessaire pour un serveur ou un système embarqué (télévision, téléphone, robot, box internet, …) et grâce à ses possibilités d’amélioration, Linux s’est très vite imposé pour gérer tous ces matériels. Le succès provient des principes de base d’Unix, associés aux licences qui protègent la connaissance.

En 2001, lorsque Apple abandonne son système multi-tâche coopératif MacOS 9, il choisira une système Unix à base de noyau BSD ainsi qu’un grand nombre d’outils GNU. Mais fidèle à sa politique de simplification pour l’utilisateur de base, les fonctionnalités d’Unix restent difficilement accessibles. Ainsi au lieu d’utiliser des fichiers de configuration en texte simple, MacOS utilise des fichiers de configuration XML. Windows suivra une autre voie qu’Unix. Microsoft choisira un micro-noyau et un modèle avec de multiples niveaux de sécurité très lié à l’interface graphique. Les configurations s’effectuant à partir de la “base de registre”. Windows rencontrera les mêmes problèmes de complexité que MULTICS et au final n’est toujours pas plus sûr, ni stable qu’Unix.

Android IphoneEn 2012 avec la multiplication des smartphones et tablettes graphiques nous retrouvons toujours les mêmes problématiques que dans les années 80 et les années 60. Ces appareils mobiles doivent limiter leur poids et taille et surtout économiser l’énergie consommée. Il faut alors utiliser des processeurs nettement moins puissant que sur les micro-ordinateurs. Mais ces processeurs doivent toujours gérer l’accès aux périphériques de stockage, de son, d’affichage, de saisie par écran tactile ou de GPS. La téléphonie est gérée en général par un processeur dédié. Il faut alors toujours répondre aux même questions : comment partager le temps du processeur avec quelle complexité et en fonction de quelle stratégie commerciale.

Actuellement les deux principaux fournisseurs d’appareils mobiles Apple et Google ont choisi des stratégies différentes. Apple a choisi, comme à son habitude, de contrôler le matériel (iPhone et iPad), le système d’exploitation est volontairement essentiellement mono-tâche et mono-utilisateur. Au contraire Android est utilisé sur de multiples matériels grâce aux possibilités d’adaptation du noyau Linux qui permet la gestion multi-tâche et multi-utilisateurs en particuliers pour les utilisateurs de tablettes. Si cette diversité ne permet pas de garantir la même version d’Android sur tous les matériels, elle permet par contre de diminuer les prix.

Il est plus que temps de conclure ce très long billet. Si vous cherchez des informations complémentaires vous verrez que pour limiter la taille de votre lecture j’ai volontairement passé sous silence un certain nombre de systèmes qui ont essayé encore d’autres voies mais avec très peu de succès. Pour raccourcir et simplifier mon propos j’ai également évité d’aborder les particularités des systèmes de fichiers, d’accès à la mémoire ou de temps réel. J’espère qu’il apparaît maintenant clairement que l’informatique n’a pas évolué uniquement grâce à l’amélioration des performances mais également par des choix technologiques et des stratégies commerciales ou de protection des connaissances.

Les photos pour illustrer ce billet ne sont pas de façon générale sous licence CC-by-SA. L’IBM de 1981 et les cartes perforées proviennent de wikipédia, d’autres des pages ci-dessous :

http://www.multicians.org/thvv/7094.html (ctss, ibm)

http://www.multicians.org/terminals.html (terminaux)

http://www.computer-history.info/page4.html (cycle vitesse)

http://www.computer-history.info/Page4.dir/pages/IBM.7090.dir/index.html (images)

http://ljkrakauer.com/LJK/60s/nerdpride.htm (bug)

http://web.mit.edu/Saltzer/www/publications/f7y/f7y.html 7 premières années de mutics 65-72