Système unix informatique Patrick Magnaud Département Informatique IUT A Paul Sabatier Mise en forme : Antony Aldana Ce cours est rédigé selon mes notes de cours Cours Système 2° Année I.U.T. Informatique Chapitre 1. Survol de Unix 1. Survol de Unix En informatique, plusieurs concepts, façons de faire ou algorithmes s'expliquent bien par l'histoire qui entoure le sujet concerné. Unix ne fait pas exception à la règle et c'est pour cette raison que la première section de ce chapitre présente un résumé des évènements qui entourent sa création et son développement. On ne peut y lire que l'essentiel qui constitue une base pour la compréhension. Également, ce chapitre répond à des questions dont les réponses sont souvent ignorées même par des utilisateurs déjà habiles avec ce système d'exploitation. Il présente aussi la philosophie suivie par les gens qui ont développé des utilitaires pour Unix. 1.1 L'histoire de Unix Unix est né en 1969 dans les laboratoires d'AT&T Bell à Murray Hill au New Jersey. Avant sa création, principalement par Ken Thompson et Dennis Ritchie, les ordinateurs de l'époque exécutaient encore les programmes l'un après l'autre (« batch mode ») à l'aide de cartes perforées appelées « IBM punch cards ». Les trois améliorations majeures qu'apportait le système d'exploitation Unix étaient l'interactivité, l'échange des données et le multi-usagers. Unix n'était pas le seul système interactif de l'époque. Il y avait également CTSS (« Computer Time Sharing System ») du MIT (Massachusetts Institute of Technology), CMAS (« Cambridge Multi Access System ») et MULTICS (« MULTIplexed Information Computing Service ») dont on parle plus loin. Plusieurs fonctionnalités de Unix découlent de ces systèmes. 1.1.1 Hier Au début en 1965, AT&T, General Electric et le projet MAC du MIT se joignent dans un effort commun pour créer le système MULTICS. Le but de ce projet était de permettre l'accès simultané et le partage de données à un grand nombre de personnes. Quelques années plus tard, AT&T se retire du projet à cause de plusieurs buts encore non atteints et d'un pronostic sombre en ce qui concerne l'avenir de MULTICS. En effet, le système était supposé desservir jusqu'à 1000 usagers mais pouvait à peine suffir à la demande d'un seul. En 1969, Thompson, Ritchie et d'autres personnes d'AT&T, privés d'un environnement de travail adéquat, ont entrepris le design d'un nouveau système de fichiers. Ce système donnera lieu, après quelques raffinements, au premier système de fichiers Unix. Ken Thompson a ensuite écrit un certain nombre de programmes qui simulaient l'accès d'un tel système de fichiers. Pour vraiment évaluer la performance du nouveau design, Thompson et Ritchie l'ont implanté sur un ordinateur PDP-7. Ils ont ensuite écrit un noyau (« kernel ») simple ainsi qu'un petit ensemble d'utilitaires pour pouvoir l'utiliser et le tester. Rapidement, le nouveau système pouvait se supporter lui-même sans l'environnement de travail GECOS (« General Electric Comprehensive Operating System ») sous lequel se faisait le développement. Le nouveau design a été baptisé « Unix » par Brian Kernigham. Il s'agit de UNICS (« UNIplexed information Computing System ») qui est devenu Unix. En 1971, le temps était venu d'évaluer le potentiel de Unix. Il a été porté sur un PDP-11 et AT&T l'a employé pour des projets internes. Après un succès rapide, Thompson a décidé d'écrire un compilateur Fortran pour Unix. Cependant, à cause de certaines influences de l'époque, il a changé d'idée et a inventé le nouveau langage interprétatif B. Ritchie qui n'était pas en faveur de ce langage à cause de son type [Tapez un texte] interprétatif, a développé en quelques jours un nouveau langage et son compilateur. Ce nouveau langage permettait d'obtenir du code exécutable directement à partir du code source. C'était la naissance du « C ». En 1973, le système d'exploitation Unix est réécrit en C. Cette étape qui semblait anodine à ce moment est parmi celles qui ont contribués le plus à l'acceptation universelle de Unix. À l'époque, un décret datant de 1956 du gouvernement des États-Unis empêchait AT&T de publiciser, commercialiser ou supporter le nouveau système d'exploitation. Ce décret empêchait la compagnie de faire autre chose que de la téléphonie et du télégraphe. C'est alors qu'AT&T décide de fournir Unix à toutes les universités qui en faisaient la demande pour des fins éducationnelles. Étant donné sa popularité qui n'a cessé de croître, Thompson et Ritchie décident d'écrire un article sur le système exploitation Unix. Cet article a été publié dans la revue américaine « communications of the ACM » en juillet 1974. Le titre était « The UNIX Time-Sharing System ». En 1977, « Interactive System Corporation » devient la première compagnie à vendre des applications pour Unix. Ces compagnies sont appelées VAR (Value Added Resellers). Cette même année, Unix est porté sur plusieurs plateformes autres que PDP-11. Par la suite, la simplicité et la clarté du système ont encouragé plusieurs développeurs qui l'ont modifié pour créer plusieurs variantes. De 1977 à 1982, Bell Lab combine plusieurs de ces variantes (provenant de partout) pour créer « Unix System III ». Plus tard, AT&T ajoute plusieurs améliorations et utilitaires et appelle le nouveau Unix, « System V ». Enfin, en 1983, AT&T annonce officiellement le support de « System V ». Une bataille pour faire modifier le décret du gouvernement américain de 1956 avait porté ses fruits. Au même moment, des chercheurs de l'Université de Californie à Berkeley créent une variante de Unix pour leurs ordinateurs VAX et lui donnent le nom de BSD (« Berkeley Software Distribution »). La grande majorité des distributions Unix d'aujourd'hui viennent avec un « Kernel » de type System V ou BSD. Une des exceptions est Linux (Unix pour PC) qui est une combinaison du meilleur des deux et qui ne contient pas de code source originaire d'AT&T. 1.1.2 Aujourd'hui Plusieurs manufacturiers ont porté Unix pour leurs machines et lui ont donné un nom particulier, par exemple, SunOS pour machines SUN, HP-UX pour HP, AIX pour IBM, etc. La très grande majorité de ces Unix commerciaux descend du code source original d'AT&T et nécessite l'achat d'une licence. Même ceux qui se sont inspirés du code source de BSD nécessitent la même licence car le code de l'université de Californie descend du même Unix inventé par Thompson et Ritchie. En 1993, Novell a acheté Unix (le code source et le nom commercial) directement d'AT&T. Novell a ensuite légué le nom “Unix” à X/Open qui est un consortium de compagnies impliquées dans le développement de Unix sous plusieurs variantes. À la fin de 1995, SCO (« Santa Cruz Operations ») et HP se sont emparés du code source, mais Novell demeure toujours présent dans le développement. La vitesse à laquelle Unix s'est développé et répandu est phénoménale. Ceci est dû en grande partie au fait que le monde entier s'est joint à l'effort collectif. La majorité des utilitaires et améliorations diverses proviennent d'utilisateurs, d'universités et de compagnies manufacturières de matériel. AT&T ne pouvait pas contrôler ce qui se passait et a été forcé d'intégrer toutes les améliorations qui étaient déjà répandues à l'extérieur de leur portes. « System V Release 4 » est un bon exemple d'intégration puisqu'il regroupe « System V » et BSD. [Tapez un texte] En 1994, on évaluait à plus de trois millions le nombre de systèmes Unix en opération. 1.2 Qu'est-ce qu'un système d'exploitation Unix? Pour qu'il puisse porter le nom de Unix, un système d'exploitation doit détenir une licence de X/Open. Cependant, il ne suffit pas de pouvoir se payer une telle licence car il faut également respecter les normes suivantes: IEEE Portable Operating System's Interface (POSIX) 1003.1 AT&T System V Interface Definition SVIDIII X/Open XPG-4 interface specification La conformité du système est vérifiée avec les Spec1170 qui est un ensemble de plus de mille API (« Application Programming Interface ») respectant les normes citées plus haut. 1.3 Pourquoi Unix est si populaire? Voici une liste non exhaustive des raisons pour lesquelles Unix est populaire dans le monde de l'informatique. Plusieurs d'entre elles pourraient ne pas sembler très évidentes à première vue pour le lecteur mais elles le seront davantage à mesure que la lecture, l'étude et la pratique guideront ce dernier. 1.Le système est facile à porter et à comprendre parce qu'il est écrit en langage de haut niveau (C). 2.Il y a une multitude de primitives qui permettent la construction de programmes complexes à l'aide de plus simples. 3.Il utilise un système de fichiers hiérarchiques dont l'implantation permet une maintenance facile et consistante. 4.Il utilise un format consistant pour tous ces fichiers donnant plus de flexibilité lors de l'écriture des programmes. 5.L'interface des périphériques est aussi simple et consistant. 6.Il est multi-usagers. 7.Le système permet la protection des ressources grâce à un système de sécurité et de permissions. 8.L'architecture est cachée facilitant l'écriture de programmes portables avec peu ou pas de modifications. 9.Tous les processus et leurs permissions sont contrôlés par le « kernel ». Le phénomene de virus n'existe presque pas sur Unix. 10.Il tire avantage de la puissance que les produits matériels de plus en plus sophistiqués peuvent fournir. 11.Avec le coût du matériel qui ne cesse de diminuer, les manufacturiers ne peuvent plus se permettre de développer leur système propriétaire s'il veulent rester compétitifs. 12.Unix est un environnement de travail idéal pour le développement de logiciels. 13.Le multitâche fonctionne selon un algorithme qui tient compte de la priorité des processus et qui utilise la réquisition au besoin. 1.4 La philosophie de Unix Les gens qui ont développé des utilitaires sur Unix se sont entendus sur une certaine philosophie de conception. Cette section vous présente trois items de cette philosophie pour vous permettre de mieux comprendre certaines façons de faire que les programmeurs utilisent. 1.Écrire des programmes qui font une seule chose mais qui la font bien. 2.Écrire des programmes qui travaillent bien ensemble. 3.Écrire des programmes qui manipulent des chaînes de caractères parce que c'est une interface universelle. [Tapez un texte] Ceci explique le comportement de certains programmes; cette philosophie permet une synergie qui est présente entre plusieurs utilitaires. Par exemple, un utilitaire produira des chaînes de caractères qui seront faciles à comprendre par un autre. Il ne produira pas de titres ni d'en-têtes pour éviter les confusions. De plus, il fera en sorte de faire sa seule tâche parfaitement pour qu'on puisse s'y fier. Ceci clarifie le point « 2. » de la section précédente. [Tapez un texte]