Particulièrement répandu dans les milieux universitaires au début des années 1980[2], il a été utilisé par beaucoup de start-ups fondées par des jeunes entrepreneurs à cette époque et a donné naissance à une famille de systèmes, dont les plus populaires à ce jour sont les variantes de BSD (notamment FreeBSD, NetBSD et OpenBSD), GNU/Linux, iOS et macOS. La quasi-totalité des systèmes d'exploitation PC ou mobile (à l'exception des Windows NT) est basée sur le noyau de Unix[3],[4]. On nomme « famille Unix », « systèmes de type Unix » ou simplement « systèmes Unix » l'ensemble de ces systèmes. Il existe un ensemble de standards réunis sous les normes POSIX et single UNIX specification qui visent à unifier certains aspects de leur fonctionnement.
Le nom « UNIX » est une marque déposée de l'Open Group, qui autorise son utilisation pour tous les systèmes certifiés conformes à la single UNIX specification ; cependant, il est courant d'appeler ainsi les systèmes de type Unix de façon générale. Il dérive de « Unics » (acronyme de « Uniplexed Information and Computing Service[5] »), et est un jeu de mots avec « Multics », car contrairement à ce dernier qui visait à offrir simultanément plusieurs services à un ensemble d'utilisateurs, le système initial de Kenneth Thompson se voulait moins ambitieux et utilisable par une seule personne à la fois avec des outils réalisant une seule tâche[6].
Histoire
La genèse d'Unix
En 1969, Ken Thompson et Dennis Ritchie qui travaillaient alors pour les laboratoires Bell développèrent la première version d'un système d'exploitation mono-utilisateur sous le nom de New Ken's System. Ils réalisèrent ce travail sur un mini-ordinateurPDP-7 (Programmed Data Processor) de marque DEC animé par General Comprehensive Operating System[7] et rédigèrent le nouveau logiciel en langage d'assemblage. Le nom Unics fut suggéré par Brian Kernighan à la suite d'un jeu de mots « latin » avec Multics ; « Multi- car Multics faisait la même chose de plusieurs façons alors qu'Unics faisait chaque chose d'une seule façon ». Ce nom fut par la suite contracté en Unix (pour être déposé finalement sous le nom UNIX par AT&T), à l'initiative de Brian Kernighan.
Un jugement d'expédient datant de 1956[8][précision nécessaire] interdisait à l'entreprise AT&T, dont dépendait Bell Labs, de commercialiser autre chose que des équipements téléphoniques ou télégraphiques. C'est la raison pour laquelle la décision fut prise en 1975[9] de distribuer le système Unix complet avec son code source dans les universités à des fins éducatives, moyennant l'acquisition d'une licence au prix très faible.
En 1971, conscient de la difficulté que représente la maintenance d'un système écrit en langage assembleur, Ken Thompson songea à réécrire Unix en TMG[10], mais il trouva que le TMG n'offrait pas ce dont il avait besoin. Pendant une courte période il songea à réécrire Unix en Fortran, mais finalement conçut le B avec l'aide de Dennis Ritchie dans les années 1969 et 1970, en s'inspirant du langage BCPL[11]. Cependant Unix ne fut jamais réécrit en B ; le B ne supportait pas les types, toutes les variables étaient de la même taille que les mots de l'architecture, l'arithmétique sur les flottants n'était pas implémentée ; de plus, le compilateur B utilisait la technique du threaded code(en). C'est pourquoi Dennis Ritchie entreprit en 1971 d'écrire le New B, qui fut renommé en C. Le langage C est toujours l'un des langages les plus utilisés aujourd'hui[12],[13].
Ken Thompson et Dennis Ritchie présentent le premier article sur Unix au Symposium on Operating Systems Principles à l'université Purdue en 1973[14]. Le professeur Bob Fabry de l'université de Californie Berkeley (UCB), alors dans l'auditoire, est immédiatement intéressé et en Keith Standiford, étudiant de 2e cycle, installe la Version 4 à l'UCB, distribuée sur bande magnétique[15].
Début 1975[16],[17], Ken Thompson passe une année comme professeur invité à son alma mater, l'UCB. Avec Jeff Schriebman et Bob Kridle, ils mettent sur pied la Version 6. C'est à ce moment qu'Unix commença à être diffusé hors des laboratoires Bell.
À l'automne 1975, Bill Joy et Chuck Haley, alors en second cycle, s'intéressent au nouveau système et implémentent l'éditeur en ligne ex en Pascal, et finissent par explorer le fonctionnement du noyau au moment du départ de Ken Thompson. Le développement fut également rejoint par Alan Snyder, Steven C. Johnson, Michael Lesk dans cette période allant de 1973 à 1977[18]. Au début de cette dernière année, Bill Joy réalise la première distribution dite Berkeley Software Distribution (BSD). Plus tard, avec l'arrivée de nouveaux terminaux, il écrit vi (l'éditeur visuel), une surcouche de ex. L'été 1978, la Second Berkeley Software Distribution ou 2BSD voit le jour[19].
Puis en , Bill Joy distribue 3BSD, la première distribution à supporter les ordinateurs VAX de DEC. C'est également cette année que sort la version 7, qui s'accompagne de nombreuses modifications notables telles que l'extension à 2 Go de la taille maximale d'un fichier, l'ajout de plusieurs utilitaires, et surtout une plus grande portabilité du système, c'est-à-dire qu’il devient plus facile de le modifier afin qu'il fonctionne sur d'autres plates-formes matérielles. C'est à cette époque que le premier grand portage d'Unix, la version 32/V, fut réalisé, sur un VAX 11/780.
L'expansion
Dès la fin de l'année 1977[20], des chercheurs de l'université de Californie apportèrent de nombreuses améliorations au système Unix fourni par AT&T et le distribuèrent sous le nom de Berkeley Software Distribution (ou BSD). Ainsi BSD fut par exemple le premier système Unix à exploiter pleinement le mécanisme de mémoire virtuelle paginée du VAX 11/780.
Trois branches principales de développement des sources virent le jour :
La branche de recherche d'AT&T qui développa, toujours aux laboratoires Bell, jusqu'en 1990[21], les 8e, 9e et 10e éditions du système Unix.
La branche commerciale d'AT&T qui développa System III, puis quatre éditions de System V (System V, SVR2, SVR3, SVR4).
En automne de cette même année, Bob Fabry propose à la DARPA une version augmentée de 3BSD pour répondre à leurs besoins.
Un contrat de 18 mois est signé en , et Bob Fabry rassemble une équipe[25]. Bill Joy, qui vient juste de soutenir sa thèse de doctorat, se propose d'y participer. Les versions se succèdent jusqu'à 4.1BSD.
Satisfaite, la DARPA signe pour deux ans supplémentaires et le budget est presque multiplié par cinq.
Le nombre de personnes impliquées croît vite. Le steering committee est formé pour aider à définir l'évolution du système.
Ce groupe se réunit deux fois par an entre et , et comprend en particulier Bob Fabry, Bill Joy et Sam Leffler de l'UCB, Dennis Ritchie des Bell Laboratories, Duane Adams et Bob Baker de la DARPA, ainsi que du personnel et des élèves de plusieurs autres universités, en particulier Stanford, Carnegie-Mellon et l’université de Californie à Los Angeles. À partir de 1984[réf. nécessaire], ce sont des ateliers réunissant bien plus de personnes qui prennent le relais.
C'est Rob Gurwitz qui publie la première implémentation des protocoles TCP/IP, les protocoles de l'Internet d'aujourd'hui. Bill Joy l'intègre au système et ajuste les performances. Cette implémentation est considérée par beaucoup comme l'implémentation de référence. Elle est reprise plus tard par Microsoft pour le système d'exploitation Windows, ce qui est possible grâce à la licence BSD très permissive sous laquelle BSD est publié. Vers la fin de l'été 1982, Bill Joy annonce qu'il rejoint Sun Microsystems[26], et Sam Leffler prend la suite du projet.
En , 4.2BSD est publié ; c'est la première version qui inclut la nouvelle pile TCP/IP[27]. Sam Leffler quitte l'UCB pour Lucasfilm et Mike Karels le remplace. 4.2BSD est alors très populaire et est plus vendue que toutes les autres distributions réunies, et que le System V d'AT&T[28], en particulier parce que ce dernier n'avait ni la communication par réseau ni le système de fichiers FFS (Berkeley Fast Filesystem).
À la conférence Usenix de 1985, 4.3BSD est annoncé[29]. De nouvelles architectures matérielles deviennent supportées, et, avec la version 4.3-Tahoe, le noyau est scindé en parties dépendantes et indépendantes du matériel.
Les procès et la libération de BSD
Début 1992, Unix System Laboratories (USL), composante d'AT&T chargée de développer et vendre Unix, commence à poursuivre Berkeley Software Design, Incorporated (BSDI), mise en place pour développer et vendre une version commerciale[30]. Le procès n'aboutit pas comme le souhaitait USL qui lance alors un autre procès contre BSDI et l'UCB.
USL est vendu par AT&T à Novell. En , un accord est trouvé :
2 fichiers sur 18 000 sont retirés de Net/2 ;
un certain nombre de changements mineurs sont faits sur d'autres fichiers ;
une notice de copyright est ajoutée à environ 70 fichiers (qui restent librement distribuables).
En , FreeBSD 2.0 sort avec les nouveaux fichiers de Net/2, alors appelée 4.4BSD-Lite, et des éléments de 386BSD.
Jusqu'à 4.3BSD-Tahoe, la licence AT&T s'applique toujours aux sources, qui sont toujours distribuées. Les utilisateurs ne sont pas des utilisateurs passifs, mais participent activement au développement et améliorent progressivement le code original d'AT&T. La licence d'AT&T sur les sources étant devenue excessivement chère, les dernières sources originales ont été nettoyées du code d'AT&T et en , la première BSD libre, la Networking Release 1 ou Net/1 est publiée.
La licence est volontairement très libérale : le logiciel peut être redistribué ou vendu, avec ou sans modification des sources, sous forme binaire (compilée) ou non. Les notices de copyright dans les sources doivent être laissées intactes, et la documentation doit mentionner l'origine du code (l'université de Californie à Berkeley, UCB).
Net/1 alors coûte 1 000 dollars à l'UCB pour la bande magnétique qui le transporte. Net/1 est mis à disposition par connexion FTP (file transfert protocol) anonyme (pas de mot de passe requis).
Le système de mémoire virtuelle du système d'exploitation MACH de l'université Carnegie-Mellon est importé et 4.3BSD-Reno sort début 1990[31].
De la fin des années 1990 à nos jours
Cette section est vide, insuffisamment détaillée ou incomplète. Votre aide est la bienvenue ! Comment faire ?
L'incompatibilité grandissante entre les nombreuses variantes d'Unix proposées par les différents éditeurs pour les différentes machines porte peu à peu atteinte à la popularité et à la diversité des systèmes Unix. De nos jours, les systèmes Unix propriétaires, longtemps majoritaires dans l'industrie et l'éducation, sont de moins en moins utilisés. En revanche, trois systèmes de type Unix basés sur BSD (FreeBSD, NetBSD et OpenBSD) d'une part, et le système GNU/Linux, compatible Unix, d'autre part, ainsi que macOS (anciennement OS X, basé sur Darwin), occupent une part de marché de plus en plus importante, permettant à Unix de concurrencer l'autre grande famille d'OS (propriétaire), Windows NT.
Bill Jolitz à partir de Networking Release 2 publie 386/BSD, destiné à une architecture PC (386), mais est vite débordé quant à sa maintenance. Quelques mois après sa publication, des utilisateurs de 386BSD forment le groupe NetBSD, et rassemblent leurs ressources pour maintenir et améliorer ce système. Leurs objectifs sont alors de faire en sorte que NetBSD fonctionne sous n'importe quel matériel. Le public cible de NetBSD est des développeurs-administrateurs de haute technicité.
Encore quelques mois plus tard, le groupe FreeBSD se forme et décide lui de se focaliser sur l'architecture PC. En , grâce au soutien de Walnut Creek CDROM, FreeBSD 1.0 est publié.
GNU est un système d'exploitation lancé en 1983 par Richard Stallman dans le but de fournir un équivalent d'Unix composé uniquement de logiciel libre[32]. Bien que compatible avec Unix, GNU s'en démarque notamment par sa grande utilisation du Lisp[33].
En 1991, alors que le Hurd (le noyau de GNU) traînait à être opérationnel, le noyau Linux(voir ci-dessous) fut créé, et il sortit en 1992[34]. Cela permit d'utiliser pour la première fois un système d'exploitation entièrement libre, une variante de GNU utilisant le noyau Linux connue sous le nom de GNU/Linux, ou plus couramment, simplement Linux[a],[34].
GNU et GNU/Linux sont utilisés sous la forme de distributions qui les accompagnent de logiciels supplémentaires. Parmi les distributions les plus populaires, on compte notamment Debian, Ubuntu, Linux Mint, Red Hat, Fedora et Arch. Parmi ces six distributions, seules deux proposent, à la place de Linux, l'utilisation du Hurd : Debian et Arch. De plus, Debian propose d'utiliser deux noyaux issus de la famille des BSD avec les distributions Debian GNU/kFreeBSD et Debian GNU/NetBSD.
En 1991, Linus Torvalds, un étudiant finlandais, décide de concevoir, sur le modèle de Minix, un système d'exploitation capable de fonctionner sur les architectures à base de processeur Intel 80386. Le noyau, qui était alors au stade expérimental, devait être généré sur un système Minix.
Le nom de Linux vient de la personne qui hébergeait le projet pour sa diffusion (version 0.0.1) et non d'un choix de Linus. Il voulut un temps rebaptiser son système Freax, mais il était trop tard, Linux s'était déjà imposé auprès des aficionados. Linux ne contient aucun code provenant de UNIX, il en est juste inspiré, et complètement réécrit. D'autre part, Linux est un logiciel libre.
Linux avec GNU
Linux lui-même n'étant qu'un noyau, il nécessite d'être accompagné d'autres logiciels pour former un système d'exploitation. Une des possibilités les plus populaires est l'utilisation de Linux en tant que noyau du système d'exploitation GNU pour constituer un système désigné sous le nom GNU/Linux ou simplement Linux[a]. Plusieurs entreprises ou associations distribuent Linux et GNU accompagnés d'un ensemble cohérent de logiciels ; on appelle distribution Linux un tel système.
Unix est à l'origine de macOS (précédemment Mac OS X), l'actuelle version du système d'exploitation d'Apple. macOS, comme Darwin est basé sur le noyau XNU, un dérivé du micro-noyau Mach.
En , la version 10.5 (Leopard) de Mac OS X sur Intel a reçu la certification UNIX 03 de l'Open Group[35].
Autres systèmes
System V et les Unix propriétaires
Dès 1977, AT&T mit les sources d'Unix version 6 à la disposition d'autres entreprises. Ainsi, tandis que l'opérateur téléphonique poursuivait ses développements avec la version 7 puis le System V, un grand nombre de dérivés d'Unix furent développés :
Solaris (appelé SunOS jusqu’en 1991), développé en 1981 par Sun Microsystems sur la base de BSD 4.1c[17] . En 1992 sort Solaris 2, nouvelle version basée sur la version 4 de System V (SVR4).
Ultrix, développé par DEC. La version Ultrix-11, destinée aux machines de la famille PDP-11 et sortie en 1991[17], est basée sur la 7e édition, avec des ajouts provenant de System V et de BSD[39]. La version Ultrix-32, destinée aux machines de la famille VAX, est essentiellement basée sur BSD.
Au milieu des années 1980, un professeur américain installé aux Pays-Bas, Andrew Tanenbaum, développa un système d'exploitation minimal, baptisé Minix, afin d'enseigner les concepts des systèmes d'exploitation à ses étudiants ; la première version fut publiée en 1987, et était accompagnée d'un livre détaillant la conception du système[40],[41]. Un projet similaire nommé XINU (pour Xinu Is Not Unix) fit aussi son apparition dans les années 1980 sous la direction de Douglas Comer[42].
Utilisations d'Unix
Le grand nombre de variantes d'Unix, chacune ayant ses spécificités, permet aux systèmes Unix d'être utilisés dans un grand nombre d'environnements différents.
Appareils mobiles
Plusieurs systèmes d'exploitation pour appareils mobiles (smartphones, tablettes, PDA…) sont des systèmes Unix. On peut citer en particulier iOS et Android, qui se partagent plus de 85 % du marché des smartphones[43],[44].
Supercalculateurs
Depuis , Linux est le seul système d'exploitation utilisé par les 500 supercalculateurs les plus puissants du monde. Les autres systèmes Unix équipaient encore quelques-uns de ces ordinateurs en 2016[45]. Entre 1995 et 2000, les systèmes Unix autres que Linux (notamment Berkeley Software Distribution, Solaris, AIX, UNICOS et HP-UX) équipaient plus de 90 % de ces ordinateurs[46].
Stations de travail et serveurs
Seules quelques versions d'Unix produites par de grands constructeurs de stations de travail et de serveurs subsistent aujourd'hui[47] :
La philosophie des constructeurs de stations et serveurs Unix a été au départ de développer un système d'exploitation pour pouvoir vendre leurs machines, en y ajoutant, si possible, un petit « plus » pour se démarquer de la concurrence. C'était oublier que les parcs Unix sont le plus souvent hétérogènes et que toute différence d'une machine à l'autre, même créée avec la meilleure intention du monde, menace l'interopérabilité donc constitue un risque réel de contre-productivité car contraignent les informaticiens à de nombreuses manipulations fastidieuses afin d'interconnecter les systèmes.
C'est une des raisons pour lesquelles nombre de ces constructeurs proposent désormais le système GNU/Linux avec leurs serveurs. Toutefois, les différences entre les différentes distributions Linux posent souvent les mêmes problèmes, quoiqu'à un niveau moindre.
Certains logiciels de conception assistée par ordinateur ont longtemps été disponibles pour des stations de travail Unix uniquement, mais, ce marché se réduisant, sont également devenus disponibles pour d'autres systèmes. C'est par exemple le cas de CATIA, utilisé notamment par de grands constructeurs industriels comme Dassault Aviation, PSA Peugeot Citroën[48] ou Boeing[49], qui fonctionne sous Microsoft Windows depuis la version 5[50] dont la version Unix a été abandonnée depuis la version 6[51].
Particularités des systèmes Unix
Les systèmes Unix ont en commun plusieurs concepts développés dès les premières versions d'Unix aux laboratoires Bell.
Utilitaires
Unix a initialement été conçu pour disposer de nombreux petits programmes, chacun effectuant un nombre limité de tâches, le plus souvent une seule, agissant le plus souvent sur des flux de texte et pouvant être interconnectés par le biais de pipes[52]. Cette idée était relativement novatrice au début des années 1970[53], et a contribué au succès rapide d'Unix chez les programmeurs.
Une autre particularité d'Unix est de considérer un grand nombre d'objets comme des fichiers : dès les premières versions d'Unix, les périphériques d'entrée-sortie sont gérés comme des fichiers d'un type spécial. Cela permet par exemple, au niveau applicatif, d'écrire sur une bande magnétique de la même façon que sur un fichier standard qui serait stocké sur le disque[54].
Unix dispose d'un système de fichiers hiérarchique, qui supporte certaines fonctionnalités comme les liens symboliques, permettant de rediriger un fichier vers un autre, et un système de permissions permettant de donner des autorisations différentes au propriétaire du fichier, aux utilisateurs de son groupe, et aux autres utilisateurs.
Au contraire de nombreux autres systèmes (comme Microsoft Windows ou Mac OS Classic par exemple), qui disposent d'une racine de système de fichiers indépendante par périphérique de stockage ou par partition, le système de fichiers d'Unix a une unique racine, et les autres périphériques de stockage sont accessibles par des points de montage dans le système de fichiers. Par exemple, le dossier /home, qui contient les fichiers personnels des utilisateurs, est fréquemment stocké sur un périphérique ou une partition différente de la racine ; une fois ce périphérique monté sur le dossier /home, les demandes de fichiers situés dans /home seront redirigées vers ce périphérique.
L'organisation de l'arborescence du système de fichiers est définie par certaines conventions qui existent depuis la version 7 d'Unix, où est apparue la page de manuel qui la décrit[55]. Le Filesystem Hierarchy Standard tente d'harmoniser les différences qui ont pu se développer, en particulier entre les différentes versions de Linux[56].
Les standards Unix
Le grand nombre de systèmes Unix développés sur la base du System V de AT&T ou bien de BSD conduisit des membres du groupe d'utilisateurs /usr/group, qui a pris depuis le nom de UniForum, à forger un standard UNIX dès 1980 afin d'assurer une portabilité maximale entre les différents systèmes[57] :
en 1984 ce groupe publie le standard /usr/group[57],[58].
En 1985, AT&T publie SVID (System V Interface Definition), qui décrit System V[60]. Cette première définition est différente de POSIX.
À la même époque, un consortium de constructeurs (Sun, IBM, HP, DEC, AT&T, Unisys, ICL, etc.) publie le standard X/Open Portability Guide Issue 3 (XPG3). Ce standard s'occupe tout particulièrement des différences issues de la localisation géographique (date, alphabet, etc.).
Aujourd'hui, la marque déposée UNIX est détenue par l'Open Group. Pour obtenir l'autorisation d'utiliser officiellement cette marque pour un système d'exploitation, il faut que celui-ci soit conforme à la Single UNIX Specification[61].
↑(en) « Unix: An Oral History » : « In 1980, a survey conducted by the Computer Science Research Network (CSNET) of academic institution revealed that over 90 percent of all departments were served by one or more Unix systems. ».
↑Marshall Kirk McKusick, « 43BSD-Reno », sur netbsd.org.
↑Sam Williams, Christophe Masutti et Richard Stallman (trad. de l'anglais), Richard Stallman et la révolution du logiciel libre : Une biographie autorisée, Paris, Eyrolles, , 2e éd., 340 p. (ISBN978-2-212-13635-7, lire en ligne), p. 117-118.
Cet article est partiellement ou en totalité issu de l'article intitulé « FreeBSD » (voir la liste des auteurs).
Certains passages de cet article, ou d'une version antérieure de cet article, sont basés sur l'article suivant : Introduction aux systèmes UNIX, Comment ça marche ?. L'article d'origine porte la mention suivante