Linux est-il conforme à POSIX ?

Is Linux Posix Compliant



Le logiciel est écrit par de nombreux développeurs aux profils variés. 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 UNIX et les systèmes de type 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 divers 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], [il] 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 de fichiers et de répertoires, canaux, 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 Std 1003.1b-1993) - Planification prioritaire, signaux en temps réel, horloges et minuteries, sémaphores, transmission de messages, mémoire partagée, E/S asynchrones et synchrones, interface de verrouillage de mémoire
  3. Extensions de fils de discussion (IEEE Std 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 (IEEE Std 1003.2-1992) - Interpréteur 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é la portée 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 au standard POSIX pour déterminer la logique et les interactions d'ordre supérieur.



Que signifie être conforme à POSIX ?

Le terme conforme 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 de 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.

Linux est-il conforme à 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 du standard 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 aux 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. Les arguments avec deux tirets (par exemple, -help) sont des conventions GNU, alors que les commandes POSIX n'utilisent jamais d'arguments à deux tirets mais un seul (par exemple, -help). 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, voire 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 le Filesystem Hierarchy Standard (FHS) utilisé 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-unes.

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 dans son intégralité. 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 vous 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.