Posix

Est-ce que Linux est compatible POSIX?

Est-ce que Linux est compatible POSIX?

Le logiciel est écrit par de nombreux développeurs d'horizons divers. Les algorithmes généraux sont disponibles sous une licence gratuite ou ont été publiés scientifiquement, et ils peuvent également être disponibles gratuitement à des fins d'étude. Cela se traduit par différentes implémentations et versions logicielles qui répondent à une variété de besoins. Une standardisation des interfaces et des formats de données est nécessaire pour rendre ces différentes implémentations à la fois interchangeables et modulaires.

En bref, POSIX [1] fait exactement cela pour les systèmes UNIX et UNIX (voir l'article de Zak H [4] pour un historique plus détaillé sur ce sujet). Il définit les interfaces d'échange, les mécanismes d'appel et les données transférées pour le logiciel mais laisse la mise en œuvre interne au développeur ou au mainteneur du logiciel. L'objectif est d'unifier tous les différents forks UNIX et systèmes de type UNIX de manière à ce que différentes implémentations logicielles puissent interagir les unes avec les autres. Le principal avantage de POSIX est d'avoir une documentation contraignante pour ces composants - interfaces, mécanismes et données - disponible sous forme écrite.

Un système d'exploitation qui suit la norme POSIX dans son intégralité est classé comme étant conforme à POSIX. Dans cet article, nous expliquons ce que signifie POSIX, déterminons si Linux appartient à cette catégorie et énumérons les composants Linux qui doivent être exclus de cette classification.

Que signifie le terme POSIX?

POSIX est l'abréviation de Portable Operating System Interface. Comme expliqué brièvement ci-dessus, POSIX est le nom d'un ensemble de normes requises pour maintenir la compatibilité entre les systèmes d'exploitation. Comme indiqué dans [1], "[it] définit l'interface de programmation d'application (API), ainsi que les shells de ligne de commande et les interfaces utilitaires, pour la compatibilité logicielle avec les variantes d'Unix et d'autres systèmes d'exploitation.” La première version de POSIX a été publiée en 1988. Depuis lors, POSIX a été continuellement étendu et mis à jour par l'Austin Common Standards Revision Group (également connu simplement sous le nom de The Austin Group) [7].

A partir de 2021, la norme POSIX contient les parties suivantes :

  1. Les services de base (Incorpore la norme ANSI C) (IEEE std 1003.1-1988) - Création et contrôle de processus, Signaux, Opérations sur les fichiers et les répertoires, Pipes, bibliothèque C, Interface et contrôle des ports d'E/S, Déclencheurs de processus
  1. Rallonges (Liens symboliques)
  2. Extensions temps réel et E/S (IEEE Norme 1003.1b-1993) - Planification prioritaire, signaux en temps réel, horloges et minuteries, sémaphores, passage de messages, mémoire partagée, E/S asynchrones et synchrones, interface de verrouillage de mémoire
  3. Extensions de fils de discussion (norme IEEE 1003.1c-1995) - Création, contrôle et nettoyage des threads, planification des threads, synchronisation des threads, gestion des signaux
  4. Plus d'extensions en temps réel
  5. Extensions de sécurité (Listes de contrôle d'accès)
  1. Shell et utilitaires (norme IEEE 1003.2-1992) - Interprète de commandes, programmes utilitaires

La norme est régulièrement révisée pour refléter les changements et améliorations techniques. Il peut parfois s'écouler plusieurs années avant qu'une nouvelle version ne soit publiée et que les modifications soient intégrées. Cela peut être désavantageux, mais cela est compréhensible étant donné le champ d'application de la norme.

Ces dernières années, des extensions au traitement en temps réel ont été ajoutées. La version actuelle est sortie début 2018 [3]. Les auteurs de SibylFS [5] ont également publié de nombreuses annotations à la norme POSIX pour déterminer la logique et les interactions d'ordre supérieur.

Que signifie être conforme à POSIX?

Le terme « compatible POSIX » signifie qu'un système d'exploitation répond à tous les critères POSIX. Un système d'exploitation peut exécuter des programmes UNIX de manière native, ou une application peut être portée du système UNIX vers un autre système. Le portage d'une application d'UNIX vers le système d'exploitation cible est facile, ou du moins plus facile, que si elle ne prend pas en charge POSIX. Pour être sûr, un système d'exploitation doit avoir obtenu avec succès la certification POSIX [2]. Cette étape est réalisée (moyennant un coût) en réussissant un test de certification automatisé. La suite de tests correspondante peut être trouvée ici [11].

En 2021, la liste des systèmes d'exploitation certifiés POSIX contient AIX d'IBM, HP-UX de HP, IRIX de SGI, EulerOS [6] de Huawei, Mac OS X d'Apple (depuis 10.5 Leopard), Solaris et QNX Neutrino d'Oracle, K-UX d'Inspur [11] et l'INTÉGRITÉ du système d'exploitation en temps réel de Green Hills Software [15]. Il est actuellement difficile de savoir si les nouvelles versions des trois successeurs de Solaris, OpenSolaris, Illumos et OpenIndiana, sont également classées comme entièrement conformes à POSIX. Ces systèmes d'exploitation étaient compatibles POSIX jusqu'à POSIX 2001.

Les autres systèmes d'exploitation considérés comme principalement (mais pas entièrement) compatibles POSIX incluent Android, BeOS, FreeBSD, Haiku, Linux (voir ci-dessous) et VMWare ESXi. Pour Microsoft Windows, Cygwin fournit un environnement de développement et d'exécution largement compatible POSIX.

Est-ce que Linux est compatible POSIX?

Le terme « Linux » fait référence à l'ensemble du système d'exploitation Linux, quelle que soit sa saveur, comme Debian GNU/Linux, RedHat Linux, Linux Mint, Ubuntu Linux, Fedora et CentOS, par exemple. Pour être précis, Linux n'est que le nom du noyau qui est le composant central de ce système d'exploitation libre.

Comme Linus Torvalds l'a décrit dans le livre "Just For Fun" [8], pour développer le noyau Linux, il a demandé une copie de la norme POSIX. Cela l'a aidé à mettre en œuvre les mêmes mécanismes que ceux utilisés dans les systèmes UNIX commerciaux. De plus, cela lui a permis de lier le noyau Linux avec les outils GNU qui suivaient principalement la même approche. Pour être juste, le logiciel sur un système Linux est fourni à partir d'une variété de sources qui respectent la norme POSIX, mais qui implémentent aussi parfois leurs propres concepts. Dans le même temps, cependant, cela montre également la diversité qui constitue Linux en tant que système d'exploitation.

Un exemple de ceci est la façon dont les arguments de ligne de commande sont écrits. Arguments avec deux tirets (e.g., "-help") sont des conventions GNU, alors que les commandes POSIX n'utilisent jamais d'arguments à deux tirets mais à la place un seul (e.g., "-aider"). Dès le début, Linux a été conçu avec GNU à l'esprit, et c'est pourquoi les commandes contiennent le style GNU

arguments. Pour atteindre la conformité POSIX, des arguments de style POSIX ont été ajoutés étape par étape. Pourtant, la décision finale est prise par le développeur. À ce jour, la plupart des commandes acceptent à la fois des arguments courts et longs, ou même des arguments sans tiret, comme la commande "find", par exemple. Pour être juste, il n'y a pas de cohérence entre les commandes sur un système, et cela peut être un problème lorsque vous avez l'intention d'utiliser la même commande sur un autre système UNIX, en particulier lors du basculement entre Linux, OS X et Solaris.

Pour l'instant, Linux n'est pas certifié POSIX en raison des coûts élevés, à l'exception des deux distributions Linux commerciales Inspur K-UX [12] et Huawei EulerOS [6]. Au lieu de cela, Linux est considéré comme étant principalement compatible POSIX.

Cette évaluation est due au fait que les principales distributions Linux suivent la Linux Standard Base (LSB) au lieu de POSIX [9]. LSB vise à « minimiser les différences entre les distributions Linux individuelles » [14]. Cela fait référence à la structure du système logiciel, y compris la norme de hiérarchie du système de fichiers (FHS) utilisée dans le noyau Linux. LSB est basé sur la spécification POSIX, la Single UNIX Specification (SUS) [10], et plusieurs autres standards ouverts, mais les étend également dans certains domaines.

Les distributions Linux basées sur LSB incluent RedHat Linux, Debian GNU/Linux (2002-2015) et Ubuntu (jusqu'en 2015), pour n'en nommer que quelques-uns.

Développer avec POSIX en tête

Pour comprendre POSIX plus en détail, nous vous recommandons d'obtenir une copie de la norme POSIX et de la lire en entier. Vous pouvez obtenir le livre sur le site Web d'Open Group. Cela nécessite des frais d'inscription mais vous donne un accès complet à cette précieuse ressource. Les normes sont utiles car elles permettent de développer un logiciel de manière à ce qu'il se comporte de la même manière sur toutes les plates-formes UNIX.

Liens et références

Merci

L'auteur tient à remercier Axel Beckert et Veit Schiele pour leur aide et leurs conseils lors de la préparation de cet article.

Comment changer la taille, la couleur et le schéma du pointeur et du curseur de la souris sous Windows 10
Le pointeur et le curseur de la souris dans Windows 10 sont des aspects très importants du système d'exploitation. Cela peut également être dit pour d...
Moteurs de jeux gratuits et open source pour le développement de jeux Linux
Cet article couvrira une liste de moteurs de jeux gratuits et open source qui peuvent être utilisés pour développer des jeux 2D et 3D sur Linux. Il ex...
Tutoriel Shadow of the Tomb Raider pour Linux
Shadow of the Tomb Raider est le douzième ajout à la série Tomb Raider - une franchise de jeux d'action-aventure créée par Eidos Montréal. Le jeu a ét...