"Linux Is Not UniX."
Objectifs.
À la fin de ce chapitre, le lecteur sera en mesure :
Introduction.
Un système informatique moderne est composé d’un ou plusieurs processeurs, d’une mémoire principale, de disques durs, d’imprimantes, d’un clavier, d’une souris, d’un écran, d’une carte réseau et de beaucoup d’autres périphériques d’entrée/sortie. En un mot un système complexe. Dans ce contexte, développer des programmes d’application qui doivent tenir compte correctement de toutes ces entrées/sorties n’est pas une mince tâche. C’est pour cette raison que les ordinateurs modernes sont équipés d’un « système d’exploitation ». Une des tâches du système d’exploitation est donc d’offrir aux utilisateurs une interface simple et conviviale avec le matériel.
Dans ce chapitre, nous allons d’abord présenter une brève définition et description des systèmes d’exploitation. Par la suite, nous expliquons l’architecture et les fonctions d’un système d’exploitation. Puis finalement, les différentes versions de Unix et de Linux sont présentées.
Qu'est-ce qu'un système d'exploitation.
Un système d'exploitation effectue deux tâches bien distinctes : 
Machine virtuelle.
Être une machine virtuelle signifie transformer un ensemble de circuits électroniques en un outil moderne qui offre une abstraction simple au niveau des entrées/sorties, de l'utilisation de la mémoire, de la gestion des fichiers, de la protection et du contrôle des erreurs, de l'interaction des programmes entre eux et de leur contrôle. 
En deux mots : éviter au programmeur d’avoir à connaître les détails électroniques de tel ou tel microprocesseur et permettre à l'utilisateur de sauvegarder ses fichiers sans se soucier du type de disque utilisé pour stocker les informations.
Gestionnaire de ressources.
L'autre fonction du système d'exploitation est le partage des ressources. Le système d’exploitation joue un rôle de policier afin d'éviter les conflits d'utilisation de la mémoire, des périphériques d'entrée/sortie, des interfaces réseau, … On peut facilement imaginer ce qui arriverait si trois programmes essayaient d'imprimer en même temps sans que des priorités aient été préalablement établies.
De plus, lorsque l'ordinateur est utilisé par plusieurs usagers, le partage de la mémoire et surtout sa protection demeurent une priorité absolue. À tout moment, un bon système d'exploitation connaît l'utilisateur d'une ressource, ses droits d'accès et son niveau de priorité.
Architecture d’un système informatique.
Tous les systèmes informatiques sont segmentés en « couches » pour permettre un meilleur contrôle de l'ensemble de l'ordinateur. La Figure 1 illustre les différentes couches d’un tel système.
Figure 1 : Architecture d'un système informatique
Matériel.
Au plus bas niveau, on retrouve la première couche qui contient les composantes physiques constituées des circuits intégrés, des fils, des sources de courant, …
La couche suivante regroupe des outils logiciels primitifs qui permettent de contrôler directement les composantes physiques sous-jacentes, comme les registres internes du processeur et l’unité arithmétique et logique. Cette couche est appelée le microcode et réside bien souvent dans le processeur de l'ordinateur. 
L'autre couche est celle du langage machine qui est interprété par le microcode. Ce langage de bas niveau regroupe 50 à 300 instructions pour permettre de déplacer des bits, de calculer ou de comparer des valeurs à l'aide des registres internes du processeur.
Système d’exploitation.
Le système d'exploitation qui se trouve juste au-dessus, offre aux programmeurs et aux utilisateurs un ensemble de fonctions du genre « lire le fichier » ou « afficher à l’écran ». Il s'agit ici d'un niveau d'abstraction élevé qui évite ainsi au programmeur de devoir écrire, par exemple, du code pour déplacer les têtes de lecture d'un disque rigide. Il s'agit du niveau d'exécution des pilotes de périphériques (contrôleurs d'interruptions, de disques, de carte graphique, ...).
En haut de la hiérarchie, il y a la couche où l'on retrouve les interpréteurs de commandes, les compilateurs et les logiciels d’application. Il est clair que ces programmes ne font pas partie du système d'exploitation, même s'ils sont livrés avec celui-ci dans bien des cas.
Logiciels d’application.
Finalement, au-dessus de toutes ces couches se trouvent les logiciels d’application qui permettent à un utilisateur d’effectuer des tâches particulières sans qu'il ait à tenir compte des couches inférieures.
Fonctions d'un système d'exploitation.
Aujourd'hui, l'informatique, aussi bien dans les entreprises que dans l'enseignement, utilise des machines plus petites fonctionnant avec des systèmes d'exploitation à caractère universel. Parmi ces systèmes d'exploitation, deux se distinguent particulièrement, un système mono-utilisateur, Windows, et un autre multi-utilisateurs et multi-tâches, Unix. D'une manière contestable, on peut affirmer que le premier système est destiné à des ordinateurs individuels, tandis que l'autre est réservé au travail en groupe. 
Parmi les nombreux systèmes d’exploitation, Unix/Linux est celui qui offre le plus de richesse, le plus d'homogénéité et le plus de souplesse. Pour cette raison, dans ce livre, Linux a été choisi comme système d'exploitation pour illustrer les concepts théoriques. Par ailleurs, le système MS-DOS puis Windows, en évoluant, ont incorporé beaucoup de caractéristiques de Unix/Linux.
On peut diviser les fonctions des systèmes d'exploitation classiques en quatre parties principales : 
Les systèmes d'exploitation modernes intègrent par ailleurs d'autres caractéristiques. Ces dernières concernent notamment deux évolutions majeures des systèmes informatiques. La première est l'interconnexion des différentes machines et des différents systèmes par des réseaux locaux ou étendus. La seconde est la disparition des écrans de texte et leur remplacement par des dispositifs à fenêtres multiples disposant de propriétés graphiques.
Historique des systèmes d'exploitation.
L’histoire de l’informatique est très brève – les ordinateurs sont nés avec la seconde guerre mondiale – et pourtant, elle a connu de grandes évolutions. L'historique des systèmes d'exploitation est intimement liée à l'évolution de l’informatique. Cette évolution est séparée en 4 grandes étapes :
Première génération (1945-55) : les tubes à vide.
En 1946, le premier ordinateur ne comportant plus de pièces mécaniques est créé grâce à J. Mauchly et J. Presper Eckert : l’ENIAC (Electronic Numerical Integrator And Computer). Il est composé de 180 000 tubes à vide et occupe 1500 m². Son principal inconvénient est sa programmation : il était uniquement programmable manuellement avec des commutateurs ou des câbles à enficher.
Note : La première erreur informatique est due à un insecte qui, attiré par la chaleur, était venu se loger dans les tubes à vide et avait créé un court-circuit. Le mot « bug » (insecte en anglais), est resté pour nommer une erreur informatique.
Deuxième génération (1955-65) : les transistors et le traitement par lots.
En 1948, le transistor est créé par la firme Bell Labs grâce aux ingénieurs John Bardeen, Walter Brattain et William Shockley. Le transistor permet de rendre les ordinateurs moins encombrants et moins gourmands en énergie électrique : c’est la révolution dans l’histoire de l’informatique. Ce n’est qu’en 1960 qu’IBM commercialise l’un des premiers ordinateurs à base de transistors, l’IBM 7000.
C’est aussi à cette époque que les premiers systèmes d’exploitation sont apparus tel FMS (the Fortran Monitor System) et IBSYS (IBM’s operating System), utilisant le traitement par lots pour gérer l’exécution des programmes qui se fait maintenant de façon autonome.
Troisième génération (1965-80) : les circuits intégrés et la multiprogrammation.
Le circuit intégré est mis au point en 1958 par Texas Instrument. Il permet de réduire encore la taille des ordinateurs en intégrant plusieurs transistors dans le même composant électronique. Avec cette nouvelle génération d’ordinateurs, une nouvelle génération de systèmes d’exploitation mettant en application le concept de multiprogrammation fait son apparition.
Les premiers travaux sur MULTICS, l'ancêtre d'Unix, sont dus à Ken Thompson pour le compte de Bell Laboratories, AT&T, General Electric et le Massachusetts Institute for Technology. 
En 1970, une première version d'Unix voit le jour. Elle fonctionne sur une machine PDP-7 de Digital Equipment. Les principales caractéristiques de ce système sont les suivantes :
Une grande partie du système Unix fut réécrite en langage C. Le reste du système, en assembleur, dépend du type de machines sur lequel on installe le système. En 1976, la version 6 d'Unix, fut la première version complète. En 1979, ce fut le succès commercial avec la version 7. Cette version a été adoptée par Hewlett Packard et Digital Equipment. 
Chaque constructeur eut le droit d'adapter Unix à ses machines. De même, des universités pouvaient travailler à son amélioration. Mais comme le nom d'Unix lui-même était protégé, chacun dut aussi choisir un nom différent. L'Université de Berkeley en Californie proposa ainsi les versions BSD (Berkeley Software Distribution). Face à cette diversité des versions d'Unix, AT&T proposa, dès 1983, le standard System V. Aujourd'hui, l'X/OPEN group a obtenu le droit de diffuser la marque Unix à tous les systèmes qui se soumettent à un contrôle approprié. Aujourd'hui encore, HP propose HP-UX, IBM propose sa version d'Unix appelée AIX et Sun propose Solaris.
Quatrième génération (1980-aujourd’hui) : les micro-ordinateurs.
En 1979, Microsoft prend une licence Unix et développe le système d'exploitation XENIX, disponible jusqu'en 1984. Au moment où le PC fit son apparition, Unix était déjà un système mûr. En 1981, lorsque IBM lança le PC, il choisit le système d'exploitation MS-DOS de Microsoft. MS-DOS, inspiré d'Unix, comportait dès le départ des contraintes liées à son architecture : insuffisance de la mémoire adressable, pas de gestion multi-tâches ou multi-utilisateurs, pas de protection de la mémoire.
Des particuliers eux aussi se sont attelés aux développements d'une version d'Unix : Andrew Tanenbaum, professeur à l'Université d'Amsterdam, développa avec ses élèves une version d'Unix pour PC, appelée Minix, qui vit le jour en 1987. Partant de Minix, Linus Torvalds développa Linux, un Unix pour PC dont la première version, appelée version 0.99, sortit en 1991. Aujourd'hui, Linux est devenu un système d'exploitation stable pour PC. Ce système constitue un logiciel libre, dont chaque utilisateur a le droit de modifier le code source.