Une brève histoire d'Unix
Bien qu'alimentant plus de 90% des charges de travail cloud aujourd'hui, Unix (et Linux avec lui) a connu des débuts modestes. Jim Hall explique comment Unix de Bell Labs dans les années 1970 est devenu l'épine dorsale de nombreux systèmes d'exploitation modernes.
Sommaire
Les origines d'Unix
Aux débuts de l'informatique, les utilisateurs interagissaient avec l'ordinateur par divers moyens byzantins. L'ENIAC d'origine ne comportait même pas une «interface de programmation» comme nous le pensons aujourd'hui; au lieu de cela, les programmeurs ont connecté des «unités fonctionnelles» séparées ensemble à l'aide de fiches et de fils. Au fur et à mesure que les ordinateurs sont devenus plus pratiques, ils sont devenus une plate-forme pour les opérations par lots, par exemple via des piles de cartes de données perforées.
Dans les systèmes ultérieurs, plus «modernes» comme le mainframe, la gestion des systèmes est restée complexe. Création d'un fichier requis en spécifiant la quantité d'espace disque à allouer ainsi que d'autres attributs. Les opérateurs interagissaient généralement avec le système en utilisant des terminaux papier de type machine à écrire. Et à ces débuts, c'est ainsi que les gens s'attendaient à travailler avec des ordinateurs.
Du milieu à la fin des années 1960, le MIT, les Bell Labs et GE ont collaboré à un nouveau système appelé MULTICS, le service d'information et de calcul multiplexés. MULTICS devait être une révolution informatique. Mais à travers son développement, MULTICS est également devenu de plus en plus complexe. Frustré par le projet, Bell Labs s'est retiré, laissant d'autres personnes pour faire avancer le projet plus tard, bien que très tard.
Dans l'intervalle, Ken Thompson est revenu de MULTICS aux Bell Labs pour travailler sur d'autres projets. Un effort impliquait un lecteur de disque particulièrement rapide attaché à un mini-ordinateur DEC PDP-7. Thompson souhaitait optimiser le débit sur ce disque et, par extension, vers n'importe quel périphérique de stockage. Il a donc commencé à travailler sur un planificateur de disque.
En s'attaquant à ce projet, Thompson a réalisé que son projet de test entrait dans le territoire du «système d'exploitation». Au cours des trois semaines suivantes, alors que sa femme était en vacances pour rendre visite à ses parents, Thompson a rempli les pièces manquantes et a ajouté une interface d'appel exécutif, un assembleur et un éditeur, ainsi qu'un shell. Et de ces petits débuts, Unix est né.
Développement Unix
Tout au long de son développement chez Bell Labs, il n'y a pas eu de «conception maîtresse» définissant ce qu'Unix devrait faire ou devenir. Au lieu de cela, Unix s'est développé de manière organique car différents utilisateurs ont besoin de nouvelles fonctionnalités.
L'une de mes histoires préférées des premiers Unix est la façon dont les chercheurs d'Unix ont réussi à acheter un nouveau système informatique pour continuer leur travail, et ont créé une nouvelle commande Unix standard en même temps. Le service des brevets prévoyait d'acheter un nouveau système informatique dédié pour rédiger des demandes de brevet au nom de Bell Labs. L'équipe Unix a suggéré au département des brevets d'acheter un nouveau mini-ordinateur DEC PDP-11, et l'équipe Unix y mettrait Unix et rédigerait un logiciel personnalisé pour aider le département des brevets à rédiger des demandes de brevet. Ce nouveau logiciel pour écrire des brevets? Une nouvelle implémentation du système de formatage de documents Roff, lui-même dérivé d'un ancien programme CTSS appelé RUNOFF. Aujourd'hui, "New Roff" ou nroff
, fait partie intégrante d'Unix.
Les commandes Unix elles-mêmes ont reçu des noms très courts. le ls
, rm
, mv
, et d'autres commandes Unix standard étaient si courtes parce que les premiers terminaux de télétype modèle 33 utilisés aux Bell Labs nécessitaient un effort considérable pour taper chaque lettre. C'était plus facile à taper rm
qu'un nom de commande plus descriptif comme remove
, ou cp
que copy
.
L’une des caractéristiques déterminantes d’Unix, le «tube», qui permettait à une commande d’envoyer sa sortie à une autre commande pour un traitement supplémentaire, a également été ajoutée à la demande d’un autre chercheur de Bell Labs, Douglas McIlroy. Jusque-là, les commandes agissaient sur des fichiers uniques à la fois. Mais avec les tuyaux, vous pouvez enchaîner plusieurs commandes pour créer des résultats plus intéressants. Par exemple, le ls
la commande répertorie les fichiers dans un répertoire et la commande wc
La commande compte les lignes de son entrée. Si vous connectez les deux commandes ensemble comme ls|wc
, vous obtenez le nombre de fichiers dans un répertoire.
D'autres commandes ont été ajoutées de la même manière parce que quelqu'un les a demandées. Thompson a écrit le grep
commande basée sur une suggestion de McIlroy selon laquelle Unix devrait avoir un utilitaire pour trouver du texte dans les fichiers. Thompson a réutilisé le code d'Unix ed
éditeur pour créer un utilitaire pour effectuer une "impression d'expression régulière globale" de tout texte correspondant à celui de l'utilisateur expression régulière. Cette commande «d'impression d'expression régulière globale» a été nommée simplement grep
, maintenant une commande Unix standard.
Unix partout
Unix a continué à se développer, principalement en tant que recherche et en tant que plate-forme pour des projets au sein des Bell Labs jusqu'au milieu des années 1980. À cette époque, de nombreux fournisseurs ont commencé à vendre leurs propres versions d'Unix, notamment HP-UX de Hewlett Packard, AIX d'IBM, Xenix de Microsoft, SunOS de Sun (rebaptisé plus tard Solaris), entre autres. En 1983, Richard Stallman a lancé un nouveau projet pour créer une version de logiciel libre d'Unix, appelée GNU (un récursif acronyme, qui signifie «GNU n’est pas Unix»).
Chaque distribution d'Unix était légèrement différente et incompatible les unes avec les autres. Certains étaient dérivés de l'Unix original d'AT & T Bell Lab, comme HP-UX et AIX. D'autres versions d'Unix sont dérivées d'une variante universitaire populaire de l'Université de Californie à Berkeley, appelée BSD pour «Berkeley Software Distribution». Beaucoup de commandes étaient identiques ou similaires entre les différentes versions d'Unix, mais les détails sur la façon dont vous gériez le système différaient généralement considérablement. Une différence clé était la façon dont Unix a démarré lui-même: AT&T «System V» Unix utilise niveaux d'exécution contrôlé par une centrale /etc/inittab
fichier, tandis que BSD Unix démarre tout en utilisant contrôle de course scripts commençant par /etc/rc
scénario.
D'autres systèmes Unix sont venus et sont repartis au cours des années 1980 et 1990. Steve Jobs, après avoir été évincé du poste de PDG d’Apple en 1985, a fondé NeXT, qui a produit sa propre variante d’Unix, dérivée de BSD. NeXT a apporté plusieurs innovations à Unix, y compris un micro-noyau basé sur Mach. Le bureau graphique de NeXT, NeXTSTEP, a ajouté d'autres nouvelles idées, telles que Display PostScript pour créer des graphiques à l'écran, un «dock» d'applications disponibles et en cours d'exécution, et une couche d'application orientée objet avec des boîtes à outils.
En 1991, un étudiant finlandais nommé Linus Torvalds a commencé à travailler sur un projet qui est devenu plus tard le noyau Linux. Le 25 août 1991, Torvalds a posté une brève annonce à un groupe de discussion Usenet au sujet de son projet de passe-temps et a invité d'autres personnes à y contribuer. Torvalds a publié Linux sous la licence publique générale GNU, ce qui signifiait que n'importe qui pouvait modifier Linux pour corriger des bogues ou ajouter de nouvelles fonctionnalités. Ce modèle «open source» ou «logiciel libre» a rapidement conduit les nouveaux développements Linux.
Des communautés sont apparues autour de Linux, portant des outils GNU et d'autres commandes Unix à exécuter sous Linux. En 1992, les développeurs ont porté le système X Window, donnant à Linux sa première interface utilisateur graphique. Le résultat est ce à quoi la plupart des gens pensent quand on dit «Linux», bien que Linux est en fait juste le noyau qui exécute tout.
Unix moderne
Bien que les systèmes Unix propriétaires existent toujours, la plupart des systèmes Unix sont Linux. Au moins sur les serveurs Web, Linux domine. Linux est également courant pour de nombreuses charges de travail d'entreprise, y compris les serveurs d'applications et les serveurs de bases de données. Il est difficile de déterminer exactement combien de serveurs Linux exécutent des choses, mais de nombreuses estimations suggèrent que Linux exécute plus des deux tiers des serveurs Web et autres infrastructures Internet. Même Microsoft prend en charge Linux; sa plate-forme Azure exécute Linux, tout comme le sous-système Windows pour Linux sur les postes de travail Windows.
Sur le bureau, Linux n'a jamais pris pied de manière significative. Un gag courant dans la communauté Linux est «L'année prochaine sera le Année du bureau Linux. » Mais Windows règne en maître sur le bureau. Si vous recherchez Unix sur le bureau, pensez au macOS d’Apple. En 1996, dans le cadre du retour de Steve Jobs chez Apple en tant que PDG, Apple a acheté NeXT et a utilisé NeXT comme base du système d'exploitation de nouvelle génération sur les nouveaux Mac. MacOS est vraiment Unix sous le capot; ouvrez une fenêtre de terminal, et vous pouvez trouver un shell Unix avec les utilitaires Unix standard. En fait, macOS est un Unix officiel, reconnu par l'Open Group.
Où va Unix ensuite? Je ne sais plus si «Unix» est le bon label. À une époque où les systèmes Linux dépassent largement le nombre Unix serveurs, nous avons peut-être dépassé le point où «Unix» a beaucoup de sens. Il ne s’agit plus de «Unix en tant que plate-forme» mais de «Linux en tant que plate-forme». Et tout comme Unix a évolué au-delà de sa conception originale, ajoutant de nouvelles fonctionnalités là où c'est nécessaire, Linux continue d'évoluer pour répondre aux nouveaux besoins. Au moins dans un avenir prévisible, il s’agit de «Linux» et non de «Unix».