
Un système d'exploitation de type Unix (en anglais : Unix-like), parfois désigné par *nix ou UN*X, est un système d’exploitation qui se comporte comme un Unix, bien que n’étant pas nécessairement conforme ou certifié par une version de la Single UNIX Specification. Le terme regroupe les systèmes d’exploitations libres ou open source inspirés par l'Unix d'AT&T créée par Ken Thompson aux laboratoires Bell tels que les Unix de la famille BSD : OpenBSD, FreeBSD et NetBSD ou bien Linux et ses dérivés.
Une application de type Unix est une application qui a le même comportement qu'une commande Unix ou un shell dérivé du shell sh, comme bash, Zsh, ksh ou csh.
Terminologie
La marque Unix appartient à l'Open Group qui gère la Single UNIX Specification, ainsi que la marque déposée « UNIX ». L'Open Group désapprouve l'usage du terme « Unix-like », qu'ils considèrent être un usage dévoyé de leur marque déposée. Le brevet préconise l'usage du terme « UNIX », en majuscules[1] et décourage son usage dans un mot composé à trait d'union.
Le système UNIX
Le système UNIX est multi-utilisateur et multitâche, il est composé d'un noyau (qui assure la gestion de la mémoire, des entrées/sorties de bas niveau et l'enchaînement des tâches), d'un Interpréteur de commandes (le shell) et de nombreux petits utilitaires, accomplissant chacun une action spécifique (« faire une seule chose, mais le faire bien »), commutables entre eux (mécanisme de « redirections ») et appelés depuis la CLI.
Contrairement aux systèmes antérieurs sur mainframes, l'utilisateur a seulement besoin de savoir manipuler deux concepts de base : celui des fichiers et celui des processus, autrement dit : les données et les traitements ; qui se complexifient cependant avec, entre autres, la gestion des droits d'accès ou la communication inter-processus (IPC).
Le système de fichiers
Le fichier, qui est l'unité élémentaire de stockage de l'information partout, est, sur unix, la ressource élémentaire : sous *nix, on peut dire que « tout est fichier ». il est accessible via le « système de fichiers »[2], une arborescence (appelée (Filesystem Hierarchy Standard ou FHS). Il existe des fichiers normaux et des fichiers spéciaux[3]. Ces derniers permettent d'accéder aux informations lues ou écrites dans des périphériques en « mode bloc » ou en « mode caractère », par exemple : les imprimantes, la mémoire, l'écran, une carte son, un disque dur ou une boucle (loop) ; dans l'arborescence, ils se trouvent sur /dev.
Un fichier sous UNIX n'est pas typé : le système ne connaît pas le format des données qu'il contient et peut donc représenter indifféremment des ressources telles qu'une suite de caractères stockée sur un support physique, un périphérique, tel que : disque dur, imprimante, dérouleur à bandes, mémoire, aussi bien que celles issues d'une carte son, une interface réseau ou une carte graphique. Le système d'exploitation gère 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, propriétaires et groupes possédant des droits particuliers) : les droits d'accès.
Processus
Le processus est l'unité élémentaire de gestion des traitements sous UNIX et la seule. Il s'agit d'une abstraction comprenant un espace d'adressage, supportant un ou plusieurs flux d'exécution de programmes ; et les threads noyaux, qui sont apparus plus tard. Chacun possède 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 (MAO par exemple), 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).
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 et en exécution) répartis en trois groupes :
- les droits du propriétaire ;
- les droits du groupe auquel appartient ce propriétaire ;
- 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 » (un équivalent du compte « Administrateur » sous Windows) 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 de sécurité, certains systèmes UNIX permettent de mieux nuancer l'acquisition de droits supplémentaires par les utilisateurs. Ainsi Linux propose les « capacités » (capabilities)[4] et MacOS 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 le fonctionnement de la mémoire virtuelle et, d'autre part, sur un modèle de protection à deux niveaux : le « mode superviseur » (le plus privilégié, réservé au fonctionnement du noyau) et le « mode utilisateur » (moins privilégié). Ce type de contrôle d'accès est possible sur la plupart des processeurs modernes. Certains processeurs fournissant des possibilités de protection plus étendues : ainsi, la famille Intel « x86 » comporte 4 niveaux (ou anneaux) de protection (mais seuls deux d’entre eux (ring0 et ring3) sont réellement exploités, hormis sur certains OS comme OS/2 notamment, qui en utilisait trois)[5], puis la famille AMD64, qui lui succède (support de registres généraux codés sur 64 bits (au lieu de 32 pour x86)) lui ajoute un niveau de protection : l'anneau -1, très utilisé dans le domaine de la virtualisation[5].
Histoire
L'apparition des sytèmes « Unix-like » ou « de type Unix » date de la fin des années 1970. Les premières versions sont des systèmes propriétaires développés pour les entreprises afin qu'elle accèdent aux même fonctionnalités que les étudiants du milieu universitaire.
On peut citer Idris (1978), initialement développé pour le PDP-11 ; UNOS (1982), premier Unix-like 32 bits temps réel écrit pour utiliser le maximum des capacités du processeur Motorola 68k ; Coherent (1983), un clone d'Unix, développé pour l'IBM PC, les processeurs Zilog Z8000 et Motorola 68k ; et UniFlex (1985), développé par Technical Systems Consultants (TSC) pour les processeurs Motorola 6809.
Ces clones ont été supplantés par les systèmes AIX, HP-UX, IRIX, SunOS, Tru64 UNIX, ULTRIX, et Xenix également propriétaires, mais ayant bénéficié de la sous-licence d'Unix cédée (à faible coût) par AT&T.
Cette multiplication des Unix-like, incompatibles entre eux, a mené à la création de la norme POSIX et de la SUS, apportant une plus grande interopérabilité entre tous les *nix.
Enfin, dans les années 80 et 90, on voit l'apparition des Unix libres, à très faible coût, voire gratuits tels 4.4 BSD, Minix Linux. Notons que Linux a été développé par Linus Torvalds pour s'affranchir de Minix (qu'il devait utiliser pendant ses études d'informatique et qui ne lui convenait pas)[6] et que 4.4 BSD a donné des Unix-like propriétaires comme BSD/OS (développé par Berkeley Software Design, Inc.) et MacOS (développé par Apple)[7]. Puis viennent les OS libres toujours utilisés à la fin du 1er quart du XXIe siècle : NetBSD et FreeBSD, au début des années 1990, suivis par FreeBSD et OpenBSD. Notons également qu'en 2005, Sun Microsystems décide de publier la version Solaris 10 sous licence libre CDDL[8] sous le nom d'OpenSolaris qui, au rachat de Sun par Oracle en 2010, redevient propriétaire ; et l'organe de gouvernance d'OpenSolaris (OpenSolaris Governing Board) annonce sa dissolution le [9].
Tentative de catégorisation
Eric S. Raymond et Rob Landley ont proposé trois types de systèmes de type Unix : les « Unix génétiques », dérivés de l'Unix original des Laboratoires Bell, les « Unix de marque » (ou « Unix déposés ») pour lesquels l'Open Group a obtenu une licence de marque Unix©, enfin, une troisième catégorie d'OS qui n'appartiennent à aucune des deux catégories précédentes, mais qui s'inspirent quand même de l'Unix original des Bell Labs : les « autres Unix »[10].
Unix « génétiques »
Ce sont les systèmes qui ont un lien historique avec le code source d'AT&T. La plupart des systèmes Unix commerciaux entrent dans cette catégorie. Comme pour les systèmes BSD, issus des travaux de l'Université de Californie à Berkeley à la fin des années 1970 et au début des années 1980. Certains de ces systèmes n'ont pas de code AT&T original, mais peuvent cependant revendiquer une ascendance « génétique » qui lui est liée.
Unix « de marque »
Ces systèmes, essentiellement propriétaires, ont été jugés conformes à la Single UNIX Specification par l'Open Group et sont autorisés à porter le nom « Unix ». La plupart de ces systèmes sont des dérivés commerciaux du code de System V, sous une forme ou sous une autre. MacOS 10.5 d'Apple et les versions ultérieures sont des variantes certifiées de BSD ; EulerOS[11] (une distribution CentOS modifiée par Huawei[12]) et Inspur K-UX[16][13] (dérivée de RHEL) sont des distributions Linux certifiées. Quelques autres systèmes (comme IBM z/OS[14]) ont obtenu la marque déposée grâce à une couche de compatibilité POSIX mais ne sont pas intrinsèquement des systèmes Unix.
Autres Unix
Notes et références
- ↑ (en) The Open Group, « Trademark Guidelines », sur opengroup.org (consulté le ).
- ↑ Marc Buffat, « Unix - Système de fichiers », sur Université Lyon I (consulté le ).
- ↑ Michel Dutreix, « UnixLes bases indispensables (avec exercices pratiques et corrigés) (3ième édition) », sur Éditions ENI, (consulté le ).
- ↑ (en) W3C, « Introduction to Composite Capabilities / Preferences Profile (CC/PP) », sur webstandards.org (consulté le ).
- Lionel Berger (sous la direction de Peter Daehne, professeur HES, « La virtualisation des systèmes d'information », sur Swiss Open Access Repository, (consulté le ).
- ↑ kikinovak, « Linus Torvalds et Minix », (consulté le ).
- ↑ SANS Institute, « Global Information Assurance Certification Paper », sur giac.org, 2000-2002 (consulté le ).
- ↑ (en) Sun Microsystems, « Open Source Initiative : CDDL] », sur Open Source Initiative, (consulté le ).
- ↑ (en) « ★ OpenSolaris Governing Board Resigns », sur Wild Webmink, (consulté le ).
- ↑ (en) Eric Raymond, « OSI Position Paper on the SCO-vs.-IBM Complaint - The meaning of ‘Unix’ », (consulté le ).
- ↑ (en) The Open Brand Register, « Unix 03 - Huawei Technology Co., Ltd. », sur opengroup.org, (consulté le ).
- ↑ (en) « EulerOS Overview », sur forum.huawei.com, (consulté le ).
- ↑ (en) The Open Brand Register, « Unix 03 - Inspur Co., Ltd », sur opengroup.org, (consulté le ).
- ↑ (en) « IBM z/OS », sur ibm.com (consulté le ).
Liens externes