| UNIX |
|
|
|
| Écrit par Administrator | |
| 04-05-2007 | |
{mosgoogle left}UNIX™ est le nom d'un système d'exploitation 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, multitâche et multiutilisateur. Il a donné naissance à une famille de systèmes, dont les plus populaires en 2006 sont GNU/Linux, *BSD 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 UnixSeuls quelques grands constructeurs de stations de travail et de serveurs développant des dérivés d'UNIX subsistent en 2005 :
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 UNIXLe 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'UNIXEn 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 Ken Thompson 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'expansionUn 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 :
On notera que ces branches se sont mutuellement empruntées du code et/ou des concepts. Ainsi :
Les UNIX propriétairesDè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 :
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 et LinuxEn 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. 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 80386 d'Intel. 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 : 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, le nom "Linux" s'était déjà imposé auprès des aficionados. Il est à noter que Linux ne contient pas de code provenant d'UNIX, mais que c'est un système inspiré d'UNIX et complètement réécrit. D'autre part, Linux est un logiciel libre. Mac OS XUnix 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 Darwin, XNU un micro-noyau Mach surmonté d'une couche FreeBSD. À l'heure actuelleL'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 UNIXLe 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 :
Aspects techniquesLe noyau d'UNIX repose sur quatre concepts élémentaires : les fichiers, les processus, les IPC (communications inter-processus), et les droits d'accès : FichiersLe 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. ProcessusLe 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
|
| < Précédent | Suivant > |
|---|
| Accueil |








