Ken Thompson

Time Sharing et Unix

Histoire de l'Informatique

Je raconte ici l'histoire bien particulière des systèmes à "temps partagé" (Time Sharing) qui ont donné naissance à Unix.

Sur les premiers ordinateurs, le traitement se faisait en batch : on apportait son lot (batch) de cartes perforées contenant le programme, un opérateur insérait les lots de cartes en attente dans l'ordinateur qui alors faisait tourner le programme et donnait le résultat, le plus souvent sur imprimante. L'ordinateur était exploité au maximum de sa puissance car faisant tourner des programmes "utiles" en permanence. Par contre l'utilisateur ne récupérait souvent le résultat que le lendemain, le temps que son lot de cartes passe dans l'ordinateur, avec le risque de n'avoir qu'un message d'erreur sur l'imprimante en cas de faute de programmation !

C'est pour rendre l'utilisation de l'ordinateur plus "conviviale" qu'ont été développés les systèmes d'exploitation "temps partagé" permettant aux utilisateurs de se connecter à plusieurs sur un seul ordinateur tout en ayant l'impression de disposer d'un ordinateur personel interactif pour chacun.

C'est aussi chez les utilisateurs de ces machines que sont nées les idées de partage d'information et de communication électronique (email, chat).


1959 : L'ordinateur ATLAS I étudié par l'université de Manchester et Ferranti introduit deux nouvelles technologies fondamentales pour les ordinateurs modernes : la mémoire virtuelle et la multiprogrammation (on dirait aujourd'hui multi-tache).
L'execution des instructions s'effectuait en "pipeline" et la machine disposait d'une unité de calcul sur les entiers et une unité de calcul en virgule flottante. Elle développait une puissance de 200 kFLOPS.


Novembre 1961 : Fernando Corbato et Robert Fano du MIT font la demonstration de CTSS (Compatible Time Sharing System) le premier système d'exploitation multi-utilisateurs. Lors de cette démonstration, 3 utilisateurs se sont connecté simultanément sur un ordinateur pour y travailler comme si chacun disposait de sa propre machine.

CTSS sera utilisé en production au MIT entre 1963 et 1973.


1961 : Le projet MAC (Multi Access Computer) du MIT dirigé par John Mc Carthy a pour but de permettre à plusieurs personnes de travailler sur un même ordinateur en même temps pour éliminer les temps d'attente du traitement par lot.


1962 - Septembre 1964 : John Kemeny et Tom Kurtz du Dartmouth College développent le système d'exploitation DTSS (Dartmouth Time Sharing System) permettant à 32 personnes de se connecter simultanément sur un même ordinateur.

L'ensemble était utilisé pour donner des cours de langage BASIC aux étudiants.



1964 : Le MIT s'allie avec General Electric et les Bell Labs d'AT&T dans le projet MULTICS (Multiplexed Information and Computing Service) qui durera plusieurs années pour développer un prototype de nouvel ordinateur ainsi qu'un nouveau système d'exploitation temps partagé (time sharing). Le MIT et Bell Labs avaient déjà une expérience dans le domaine avec CTSS (MIT Compatible Time-Sharing System) et BESYS. Le but du projet était de créer un système d'exploitation pour ordinateur parfaitement fiable, capable de tourner 24H sur 24, 7 jours sur 7, utilisable par plusieurs personnes à la fois et capable en même temps de faire tourner des calculs en tâche de fond.


été 1969 Le Bell Lab d'AT&T se retire du projet MULTICS, considérant que celui-ci prendrait trop de temps pour arriver à un résultat concret.
Un groupe d'informaticiens mené par Ken Thompson et Dennis Ritchie avait commencé à réfléchir à la création d'un nouveau système d'exploitation temps partagé mais leur hiérarchie refusait d'en entendre parler.
Ils trouvèrent un Dec PDP 7 (ordinateur apparu en 1964, évolution du PDP-1) inutilisé (récupéré initialement par Thompson pour y faire tourner un jeu écrit par lui : Space Travel !) pour mettre leurs idées en pratique.
Certaines idées furent héritées du projet MULTICS : notion de process, système de fichiers arborescent, interpréteur ligne de commande tournant comme un simple programme utilisateur, représentation simple des fichiers texte et accès généralisé aux périphériques. D'autres nouvelles idées servirent de principe pour le développement : concevoir les outils comme un ensemble de petits programmes simples, faire en sorte que le résultat d'un programme puisse devenir l'entrée du programme suivant, etc...
Un noyau Unix primitif, un shell, quelques programmes utilitaires, un éditeur et un assembleur furent rapidement mis au point sur le PDP 7.
Ce n'est que par la suite qu'un nom fût trouvé par Brian Kernighan pour ce nouveau système d'exploitation : UNIX (par opposition au projet MULTICS).

Cette version est connue sous le nom "Unix Time-Sharing System V1".


Avril 1970 : Lancement de la ligne de mini-ordinateurs PDP-11 par Digital Equipment Corporation. Il s'agit d'une ligne de machines toutes compatibles entre elles basées sur un processeur 16 bits et qui rencontrera un grand succès.



1970 : Ken Thompson, pensant qu'UNIX ne serait pas complet sans un langage de programmation de haut niveau commence à porter le Fortran sur le PDP 7 mais change rapidement d'avis et crée en fait un nouveau langage, le B (en référence au BCPL dont il s'inspire).


Janvier à Mars 1971 : Portage du tout nouveau système d'exploitation UNIX sur PDP 11/20. Ken Thompson et Dennis Ritchie ont obtenu cette machine en prétextant le développement d'un logiciel de traitement de textes, les responsables du Bell Lab ne voulant plus entendre parler de systèmes d'exploitation suite à l'abandon du projet MULTICS.
Sur cette machine disposant de 24 Ko de mémoire, le noyau Unix occupait 16 Ko, 8 Ko restant disponibles pour les utilisateurs. Le disque dur avait une taille de 512 Ko et les fichiers une taille maximale de 64 Ko. Le formateur de texte roff fût porté sur cette machine, ce qui permit à trois personnes du service des brevets d'utiliser effectivement la machine comme traitement de textes et ce en même temps que Thompson et Ritchie qui continuaient le développement d'applications.
Le succès de cette expérience a prouvé l'utilité d'Unix et a rendu possible la poursuite du développement sur PDP 11/45

Cette version est connue sous le nom "Unix Time-Sharing System V2".



1971-1973 : Dennis Ritchie du Bell Lab d'ATT reprend le langage B écrit par Ken Thompson pour PDP/7 en 1970 pour mieux l'adapter au PDP/11 sur lequel UNIX vient juste d'être porté. Il fait évoluer le langage et le dote d'un vrai compilateur générant du code machine PDP/11 (le B était un langage interprété).
Le langage C est à la fois proche du matériel, permettant ainsi de réécrire le noyau UNIX en C (Cf. été 1973) et suffisament généraliste, le rendant ainsi facilement portable. Les développements et les succès du langage C et d'UNIX sont intimement liés.


été 1973 : Le noyau du système d'exploitation UNIX est entièrement réécrit en langage C par Ken Thompson. Au vu de la qualité du résultat, tous les autres outils utilisés sous Unix vont être réécrits en C.

Cette version est connue sous le nom "Unix Time-Sharing System V4".

L'Université de Californie à Berkeley sera la première à disposer d'Unix (sources y compris) en dehors d'AT&T.


Mai 1976 : Sortie de "Unix Time-Sharing System V6" aux Bell Labs d'AT&T qui sera plus généralement disponible pour les universités pour une somme symbolique et avec les sources.


1976 : Les laboratoires Bell d'AT&T développent UUCP (Unix to Unix Copy Program). Il s'agit du premier protocole d'échanges de données largement disponible et qui sera énormément utilisé avant l'avènement de TCP/IP et d'Internet.


1977 : Première expérience de portage d'UNIX sur un autre type d'ordinateur, l'Interdata 8/32, par Ken Thompson, Dennis Ritchie et Steve Johnson.

A cette date, environ 600 machines tournent déjà sous UNIX. Beaucoup sont des machines de recherche et de développement aux Bell Labs. Une partie est utilisée pour controller des autocommutateurs téléphoniques. Une dernière partie est utilisée dans les universités pour l'enseignement.


Mars 1978 : Apparition de 1BSD une nouvelle distribution d'UNIX réalisée à l'université de Berkeley principalement par Bill Joy et basée sur les sources d'Unix Time-Sharing System V6.


Janvier 1979 : Sortie de "Unix Time-Sharing System V7" aux Bell Labs d'AT&T.
Cette version est la première à disposer en standard d'UUCP. Elle tournait sur PDP/11 et VAX.


Août 1980 : Microsoft commercialise Xenix OS, un UNIX portable pour machines à base de Intel 8086, Zilog Z8000 et Motorola M68000.


1980 : Apollo lance une ligne de stations de travail hautes performances, basées sur le processeur Motorola 68000 et optimisées pour le travail graphique. Ce type de stations aura un grand succès dans le domaine de la CAO et du calcul numérique. La station représentée en photo est une Apollo DN100.



1980 : Onyx présente son ordinateur Onyx C 8002 équipé d'un processeur Z8000, de 256 Ko de Ram, d'un disque dur, d'un lecteur de bandes, de 8 ports série et tournant sous Unix pouvant accueillir 8 utilisateurs pour 20000 $. Il s'agit du premier micro ordinateur tournant sous Unix.


Novembre 1981 : Fondation de la société Silicon Graphics Incorporated par James Clark.


Novembre 1981 : L'Unix System Group (USG) d'AT&T publie Unix System III.


Janvier 1982 : Création de la société Sun Microsystems par Andy Bechtolsheim, Vinod Khosla et Scott Mc Neally, tous étudiants à Stanford, dans le but de commercialiser une station de travail.

Le matériel a été initialement développée par Andy Bechtolsheim à Stanford et connecté sur le réseau de l'université : le Stanford University Network ou SUN (mais le nom SUN se voulait aussi un clin d'oeil au premier fabricant de stations de travail : Apollo)

Rapidement, Bill Joy, développeur de l'Unix de l'Université de Berkeley, va rejoindre la société pour s'occuper de la partie logicielle et créer SunOS 1.O, dérivé de 4.1BSD.

La société commercialise la station de travail Sun 1 équipée d'un microprocesseur 68000, tournant sous Unix et munie d'origine d'une interface Ethernet et de TCP/IP.



Janvier 1983 : L'Unix System Development Lab d'AT&T publie Unix System V.


1983 : L'Université de Berkeley distribue une nouvelle version de son Unix BSD 4.2 incluant d'origine le protocole TCP/IP.


1983 : Silicon Graphics commercialise son premier terminal graphique IRIS 1000 basé sur un microprocesseur 68000 à 8 MHz, 4 Mo de Ram et sans disque dur.

SGI publie aussi la première version de sa librairie graphique dédiée au graphisme 3D : IRIS Graphics Library ou GL.



Avril 1984 : Silicon Graphics commercialise sa première station de travail Unix avec moteur 3D intégré.


1984 : Le MIT commence à développer le X Window System, un logiciel permettant de gérer l'affichage graphique des stations de travail Unix. Plus qu'une simple interface graphique, il s'agit d'un système client-serveur évolué capable par exemple de gérer plusieurs écrans sur une même machine ou d'afficher sur l'écran d'une machine distante.


1984 : Silicon Graphics commercialise sa première station de travail graphique SGI IRIS 1400 dotée d'un microprocesseur 68010 à 10 MHz, de 1.5 Mo de Ram, d'un disque dur de 72 Mo et tournant sous UNIX.


1985 : Commercialisation du CRAY 2, premier ordinateur à dépasser la puissance de 1 Gflop (1 Milliard de calculs en virgule flottante par seconde). La machine est équipée de 4 processeurs tournant à 250 MHz et peut adresser directement jusqu'à 4 Go de mémoire vive. Elle tourne sous Unix System V : UNICOS. Chaque processeur a une puissance de 488 Mflops. Un programme de multiplication de matrices utilisant les 4 processeurs dispose d'une puissance de 1.7 Gflops.

L'unité centrale (sur la droite) est entièrement immergée dans un liquide conducteur de chaleur et isolant électrique (fluorinert) pour assurer son refroidissement. Les colonnes transparentes visibles à gauche servent à évacuer les bulles se formant dans le liquide entrant partiellement à ébullition au contact des circuits de l'unité centrale.



1986 : Le MIT publie la première version de son environnement graphique pour station Unix : X v10.4.



Retour au Sommaire