UNIX

Infos
filiation des systemes Unix. UNIX™ est le nom d'un système d'exploitation multitâche et multiutilisateur créé en 1969, à usage principalement professionnel, conceptuellement ouvert et fondé sur une approche par laquelle il offre de nombreux petits outils chacun dotés d'une mission spécifique. Il a donné naissance à une famille de systèmes, dont les plus populaires en 2007 sont Linux et Mac OS X. On nomme famille Unix l'ensemble de ces systèmes. On dit encor
UNIX

filiation des systemes Unix. UNIX™ est le nom d'un système d'exploitation multitâche et multiutilisateur créé en 1969, à usage principalement professionnel, conceptuellement ouvert et fondé sur une approche par laquelle il offre de nombreux petits outils chacun dotés d'une mission spécifique. Il a donné naissance à une famille de systèmes, dont les plus populaires en 2007 sont Linux et Mac OS X. On nomme famille Unix l'ensemble de ces systèmes. On dit encore qu'ils sont de type Unix et on les qualifie d'Unices. Il existe aujourd'hui un ensemble de standards réunis sous la norme POSIX qui vise à unifier certains aspects de leur fonctionnement.

Stations de travail et serveurs Unix

Seuls quelques grands constructeurs de stations de travail et de serveurs développant des dérivés d'UNIX subsistent en 2007 :
- IBM : système AIX ;
- Sun : Solaris ;
- HP-Compaq : HP-UX ;
- SGI : IRIX ;
- SCO Group : UnixWare Microsoft a possédé quelque temps les droits d'une version d'UNIX qui se nommait XENIX. 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 à bricoler 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, si le noyau Linux est bien défini, le système Linux change sensiblement d'une distribution à l'autre, ce qui conduit à des dissemblances causant parfois des pertes de temps. Ce problème se posait déjà jadis avec l'opposition entre UNIX System V et UNIX BSD, en particulier sur des gestions sensiblement différentes de l'impression et des signaux.

Le système UNIX

Le système UNIX est multi-utilisateur et multitâche, il permet donc à un ordinateur mono ou multi-processeurs d'exécuter apparemment simultanément plusieurs programmes dans des zones protégées appartenant chacune à un utilisateur.

La genèse d'UNIX

En 1969, Ken Thompson développa la première version d'un système d'exploitation mono-utilisateur sous le nom de "New Ken's System". Il réalisa ce travail sur un mini-ordinateur PDP-7 (Programmed Data Processor) de marque DEC animé par GECOS et rédigea le nouveau logiciel en langage d'assemblage. Le nom Unics fut suggéré par Brian Kernighan suite à un jeu de mot "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 au final être déposé sous le nom UNIX par AT&T), cependant personne ne se souvient de qui est à l'origine de la modification du "cs" en "x". En 1971, conscient de la difficulté que représente la maintenance d'un système écrit en langage d'assemblage, Ken Thompson songea à réécrire UNIX en TMG; Cependant 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 (1969-1970), en s'inspirant du langage BCPL. Cependant UNIX ne fut jamais réécrit en B ; le B ne supportait pas de "types", toutes les variables étaient de la même taille que les mots (word) de l'architecture, l'arithmétique sur les flottants n'était pas vraiment implémentée ; de plus le compilateur B utilisait la technique du "threaded code". C'est pourquoi Dennis Ritchie entreprit en 1971 le NB (New B), qui fut renommé en C, en commençant par créer des types ; il fut rejoint par Alan Snyder, Steven C. Johnson, Michael Lesk et Ken Thompson afin de continuer les modifications jusqu'en 1977. Unix fut donc porté en C.

L'expansion

Un décret datant de 1956 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 1973 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 1975, à partir de la version 6 du système, UNIX fut diffusé hors des laboratoires Bell. Lorsqu'en 1979 il atteint sa version 7, l'évolution s'accompagna de nombreuses modifications notables telles que l'extension à 2 Go de la taille maximale d'un fichier, l'ajout de plusieurs utilitaires, et surtout la portabilité du système. C'est à cette époque que le premier grand portage d'UNIX, la version 32/V, fut réalisé, sur un VAX 11/780. Dès la fin de l'année 1977, 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 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, les 8, 9 et 10 é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).
- Berkeley Software Distribution développé par l'Université de Californie, jusqu'en 1994. On notera que ces branches se sont mutuellement empruntées du code et/ou des concepts. Ainsi :
- La 8e édition est issue de la version 4.1 BSD.
- La version SVR3 a emprunté le concept des STREAMS à la 8e édition.
- La version SVR4 a intégré beaucoup de code de la version 4.3 BSD.
- La version 4.4 BSD comporte une très petite quantité de code de la version SVR4. Image:Histoire d'UNIX.svg

Les UNIX propriétaires

Dès 1977, AT&T mit les sources d'UNIX à la disposition des autres entreprises, si bien qu'un grand nombre de dérivés d'UNIX furent développés :
- XENIX, fondé sur la 7 édition développé en 1980 par Microsoft.
- AIX, développé par IBM, dont la première version de 1986 fut basée sur System V release 2.
- Solaris, développé par Sun Microsystems, basé au départ sur BSD 4.1c, puis sur System V release 4 (SVR4).
- HP-UX, fondé sur System V, développé à partir de 1986 par Hewlett Packard
- Ultrix, développé par DEC. La version Ultrix-11, destinée aux machines de la famille PDP-11, est basée sur la 7 édition, avec des ajouts provenant de System V et de BSD. La version Ultrix-32, destinée aux machines de la famille VAX, est essentiellement fondée sur BSD.
- IRIX, développé par SGI.
- UnixWare, descendant de SVR4, développé par Novell puis revendu à SCO Group.
- SCO Group UNIX, fondé sur XENIX et System V développé dès 1979 par Santa Cruz Operations et Hewlett Packard.
- Tru64, fondé sur une version du micro-noyau Mach 2.5 réalisée par le consortium OSF (Open Software Foundation). Il a d'abord été développé sous le nom OSF/1 puis DEC UNIX par Digital Equipment Corporation, Compaq et enfin Hewlett Packard.
- A/UX, un UNIX développé par Apple, compatible avec Mac OS. En 1982, AT&T annonça le support de son produit, la version System III, qui constitue de ce fait sa première version commerciale d'UNIX. En 1983 suivit la version System V.

Minix, XINU et Linux

En 1985, un professeur américain domicilié aux Pays-Bas, Andrew S. Tanenbaum, développa un système d'exploitation minimal, baptisé Minix, afin d'enseigner les concepts des systèmes d'exploitation à ses étudiants. 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. En 1991 un étudiant finlandais, Linus Torvalds, décida 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. Linus baptisa son système Freax et posta le message suivant sur le groupe de discussion comp.os.minix : Hello everybody out there using minix - I'm doing a (free) operating system (just a hobby, won't be big and professional like gnu) for 386(486) AT clones. Le nom de « Linux » vient en fait de la personne qui hébergeait le projet pour sa diffusion (version 0.0.1) et non d'un choix égocentrique 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 pas de code provenant d'UNIX, mais c'est un système inspiré d'UNIX et complètement réécrit. D'autre part, Linux est un logiciel libre.

Mac OS X

Unix est à l'origine de Mac OS X, l'actuelle version du système d'exploitation d'Apple. Mac OS X est basé sur le même noyau que MkLinux, Darwin, et XNU: un micro-noyau Mach. Toutefois, la couche Unix de MacOSX (un FreeBSD modifié) n'est pas une personnalité du noyau Mach, l'intégration est plus subtile puisqu'elle s'apparente plutôt à une greffe de l'un sur l'autre.

À l'heure actuelle

Voici un schéma non exhaustif retraçant globalement l'apparition des principaux systèmes de type UNIX : Image:Unix history-simple.svg L'incompatibilité grandissante entre les nombreuses variantes d'UNIX proposées par les différents éditeurs pour les différentes machines a fini par porter atteinte à la popularité d'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 Mac OS X (basé sur Darwin), occupent une part de marché de plus en plus importante.

Le standard 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 1981 afin d'assurer une portabilité maximale entre les différents systèmes :
- en 1984 le groupe /usr/group publie POSIX, une série de standards développés sous couvert de l'IEEE (Institute of Electrical and Electronics Engineers). POSIX est ainsi également connu sous le nom IEEE P1003.
- en 1985, AT&T publie SVID (System V Interface Definition) décrivant le System V. 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.).

Aspects techniques

Le noyau d'UNIX repose sur quatre concepts élémentaires : les fichiers, les processus, les IPC (communications inter-processus), et les droits d'accès :

Fichiers

Le fichier est l'unité élémentaire de gestion de ressources sous UNIX. Un fichier sous UNIX n'est pas typé, ce qui veut dire que le système ne connaît pas le format des données qu'il contient, et peut représenter différentes ressources telles qu'une suite de caractères stockée sur un support physique, un périphérique (disque dur, imprimante, dérouleur à bandes, mémoire, interface réseau etc.), ou même des paramètres dynamiquement reconfigurables du noyau. Un fichier est un objet référencé dans un système de fichiers. Cette référence contient toutes les informations nécessaires au traitement de ce fichier : propriétaire, groupe (chaque fichier étant détenu par un propriétaire faisant partie d'un ou plusieurs groupes, le propriétaire et chaque groupe possèdent des droits particuliers), droits d'accès des différentes catégories d'utilisateurs, taille, date de dernière modification, date du dernier accès, références des blocs de données sur le disque s'il représente une suite de caractères.

Processus

Le processus est l'unité élémentaire de gestion des traitements sous UNIX. Il s'agit d'une abstraction comprenant un espace d'adressage et supportant un ou plusieurs flots d'exécution de programme, les threads, chacun possédant une pile et son propre contexte d'exécution. UNIX étant un système multitâche, il permet de partager les ressources de calcul entre les threads. D'autre part il est préemptif, ce qui implique que ce partage est effectué de manière transparente pour les threads. Ce partage transparent est réalisé grâce à un ordonnanceur adapté à l'usage auquel est destiné le système. Dans un système à temps partagé, l'ordonnanceur tente de répartir les ressources de calcul de manière équitable entre les threads tout en privilégiant le temps de réponse des entrées/sorties. Dans un système temps-réel, les threads sont ordonnancés selon des contraintes temporelles qui doivent être garanties strictement (temps-réel dur) ou bien avec un certain taux d'échec (temps-réel souple).

Communications inter-processus (IPC)

Les communications inter-processus servent à arbitrer l'utilisation de ressources partagées entre différents processus ou threads par le biais d'objets de synchronisation tels que les sémaphores ou les mutex, à permettre le contrôle d'un processus par un autre ou bien par le noyau par le biais de signaux, et enfin à permettre à deux processus d'établir une communication : localement par le biais de pipes, de segments de mémoire partagée ou de files de messages, et de manière transparente (localement ou sur un réseau) par le biais de sockets.

Contrôle d'accès aux ressources

Au niveau logiciel, la politique de sécurité du système UNIX est fondée sur le principe que chaque ressource admet un identificateur, un propriétaire et un ensemble de droits d'accès (en lecture, en écriture, en exécution) répartis en trois groupes : 1) les droits du propriétaire; 2) les droits du groupe auquel appartient le propriétaire; 3) les droits des autres utilisateurs. La plupart des systèmes UNIX actuels proposent un modèle plus fin, celui des listes de contrôle d'accès (ACL - Access Control List). Un utilisateur spécial appelé root possède tous les droits sur toutes les ressources. Il est en général utilisé uniquement pour des tâches d'administration. Par souci d'une meilleure sécurité, certains systèmes UNIX permettent de mieux nuancer l'acquisition de droits supplémentaires par les utilisateurs. Ainsi Linux propose-t-il les « capacités » (capabilities) et Mac OS X permet d'installer des applications et d'intervenir sur la configuration du système au moyen d'un compte administrateur distinct de root (qui est d'ailleurs désactivé par défaut), en ce qu'il ne peut modifier les fichiers fondamentaux du système. Au niveau matériel, le contrôle d'accès aux ressources se base d'une part sur des mécanismes inhérents aux principes de fonctionnement de la mémoire virtuelle, et d'autre part sur un modèle de protection à 2 niveaux : le mode superviseur (le plus privilégié, réservé au fonctionnement du noyau) et le mode utilisateur (le moins privilégié). Ce type de contrôle d'accès est possible sur la plupart des processeurs modernes supportant un UNIX. Certains processeurs fournissent des possibilités de protection plus étendues. Ainsi les processeurs de la famille Intel ix86 comportent 4 niveaux (ou anneaux) de protection. Des systèmes d'exploitation (peu nombreux à l'heure actuelle), tels que OS/2, exploitent cette possibilité.

Sources de l'article

Certains passages de cet article, ou d'une version antérieure de cet article, sont basés sur l'article Introduction aux systèmes UNIX du site Web Comment ça marche ? . L'article d'origine porte la notice de copyright suivante : « © Copyright 2003 Jean-François Pillou - Hébergé par Web-solutions.fr. Ce document issu de CommentCaMarche.net est soumis à la licence GNU FDL. Vous pouvez copier, modifier des copies de cette page tant que cette note apparaît clairement. ».

Voir aussi

===
Sujets connexes
A/UX   Apple, Inc.   BCPL   B (langage)   Berkeley Software Distribution   Berkeley sockets   Brian Kernighan   C (langage)   Communication inter-processus   Compaq   Darwin (informatique)   Digital Equipment Corporation   Douglas Comer   FreeBSD   GNU   HP-UX   Hewlett-Packard   Impression   Institute of electrical and electronics engineers   Intel 80386   International Business Machines Corporation   Linus Torvalds   Linux   Logiciel libre   Logiciel propriétaire   Mac OS   Mac OS X   Mach   Mach (informatique)   Marshall Kirk McKusick   Microsoft   Minix   MkLinux   Multi-utilisateur   Multics   Multitâche   Mémoire virtuelle   NetBSD   Novell   OS/2   OpenBSD   OpenSolaris   PDP-7   POSIX   Pagination   Permissions Unix   Politique de sécurité   Préemptif   SCO Group   Serveur informatique   Silicon Graphics   Sun Microsystems   Système d'exploitation   Système de fichiers   Sémaphore (informatique)   TMG   Tru64   Type Unix   Université de Californie (Berkeley)   VAX   XENIX   XINU   XNU  
#
Accident de Beaune   Amélie Mauresmo   Anisocytose   C3H6O   CA Paris   Carole Richert   Catherinettes   Chaleur massique   Championnat de Tunisie de football D2   Classement mondial des entreprises leader par secteur   Col du Bonhomme (Vosges)   De viris illustribus (Lhomond)   Dolcett   EGP  
^