Est conforme à Linux posix?

Est conforme à Linux posix?

Le logiciel est écrit par de nombreux développeurs avec divers arrière-plans. Les algorithmes généraux sont disponibles sous une licence gratuite ou ont été publiés scientifiquement, et ils pourraient également être disponibles gratuitement à des fins d'étude. Il en résulte différentes implémentations et versions logicielles qui répondent à une variété de besoins. Une normalisation 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 une histoire plus détaillée 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 l'implémentation interne au développeur ou au responsable du logiciel. L'objectif est d'unifier toutes les différentes fourches UNIX et Systems de type UNIX de telle manière que différentes implémentations de logiciels peuvent interagir les uns avec les autres. Le principal avantage de POSIX est d'avoir une documentation de liaison pour ces composants - interfaces, mécanismes et données - disponibles 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 représente POSIX, déterminons si Linux appartient à cette catégorie et répertoriez les composants Linux qui doivent être exclus de cette classification.

Que représente le terme POSIX?

POSIX est une abréviation pour l'interface du système d'exploitation portable. Comme brièvement expliqué ci-dessus, POSIX est le nom d'une collection de normes nécessaires 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 des shells de ligne de commande et des interfaces d'utilité, 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é constamment élargi et mis à jour par le groupe de révision des normes Common Austin (également connu simplement sous le nom de groupe Austin) [7].

Depuis 2021, la norme POSIX contient les parties suivantes:

  1. Les services de base (Intègre 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, tuyaux, bibliothèque C, interface et contrôle du port d'E / S, déclencheurs de processus
  1. Extensions (Liens symboliques)
  2. Extensions en temps réel et E / S (IEEE STD 1003.1B-1993) - Priorité de planification, signaux en temps réel, horloges et minuteries, sémaphores, passage de messages, mémoire partagée, E / S asynchrone et synchrone, interface de verrouillage de mémoire
  3. Extensions de fils (IEEE STD 1003.1C-1995) - Création de filetages, contrôle et nettoyage, planification des threads, synchronisation des filet
  4. Plus d'extensions en temps réel
  5. Extensions de sécurité (Listes de contrôle d'accès)
  1. Coquille et services publics (IEEE STD 1003.2-1992) - Interprète de commande, programmes d'utilité

La norme est régulièrement examinée pour refléter les changements techniques et les améliorations. Il peut parfois prendre plusieurs années avant la publication d'une nouvelle version et les modifications sont incorporées. Cela peut être désavantageux, mais il est compréhensible compte tenu de la portée de la norme.

Ces dernières années, des extensions de traitement en temps réel ont été ajoutées. La version actuelle est publiée 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 nativement, 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 s'il ne prend pas en charge POSIX. Pour être sûr, un système d'exploitation aurait dû atteindre avec succès la certification POSIX [2]. Cette étape est atteinte (à un coût) en réussite un test de certification automatisé. La suite d'essai 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 Léopard), Solaris et QNX Neutrino d'Oracle, Inspur's K-UX [11], et l'intégrité du système d'exploitation en temps réel de Green Hills Software [15]. On ne sait actuellement pas si les versions plus récentes des trois successeurs Solaris, Opensolaris, Illumos et OpenIndiana sont classées comme conformes à plus de Posix, ainsi que. Ces systèmes d'exploitation étaient conformes à POSIX jusqu'à POSIX 2001.

Les autres systèmes d'exploitation qui sont considérés comme principalement (mais pas entièrement entièrement) conformes à 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 conforme à POSIX.

Est conforme à Linux posix?

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

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 qui sont utilisés dans les systèmes UNIX commerciaux. De plus, cela lui a permis de relier le noyau Linux avec les outils GNU qui ont principalement suivi la même approche. Pour être juste, le logiciel sur un système Linux est contribué à 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 manière dont les arguments en ligne de commande sont écrits. Arguments avec deux tirets (e.g., «-Help») sont des conventions GNU, tandis que les commandes POSIX n'utilisent jamais d'arguments à deux dash 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 de style GNU

arguments. Pour obtenir 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 les arguments courts et longs, ou même des arguments sans tirets, tels que 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 système basé sur Unix différent, en particulier lorsque vous basculez entre Linux, OS X et Solaris.

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

Cette évaluation est due au fait que les principales distributions Linux suivent la base standard Linux (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 spécification unique UNIX (SU) [10] et plusieurs autres normes ouvertes, mais les étend également dans certaines zones.

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 à l'esprit

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 du groupe ouvert. Cela nécessite des frais d'inscription mais vous donne un accès complet à cette précieuse ressource. Les normes aident car ils vous permettent de développer des logiciels de telle manière qu'il se comporte de la même manière sur toutes les plateformes UNIX.

Liens et références

  • [1] POSIX, Wikipedia, https: // en.Wikipédia.org / wiki / posix
  • [2] Certification POSIX, http: //.posixCertified.IEEE.org /
  • [3] Standard POSIX, groupe ouvert, https: // publications.groupe ouvert.org / t101
  • [4] Zak H: Posix Standard, https: // Linuxhint.com / posix-standard /
  • [5] Annotations POSIX, Sybilfs, https: // github.com / sibylfs / sibylfs_src
  • [6] Euleros, https: // développeur.huaweicloud.com / ict / en / site-euleros / euleros
  • [7] The Austin Common Standards Revision Group, https: // www.groupe ouvert.org / Austin /
  • [8] Torvalds, Linus; Diamond, David (2001). Juste pour le plaisir: l'histoire d'un révolutionnaire accidentel. New York City, États-Unis: HarperCollins. ISBN 0-06-662072-4
  • [9] Linux Standard Base (LSB), Wikipedia, https: // en.Wikipédia.org / wiki / linux_standard_base
  • [10] Spécification unique Unix (SU), Wikipedia, https: // en.Wikipédia.org / wiki / single_unix_specification
  • [11] Suites de test POSIX, https: // www.groupe ouvert.org / test / combinaisons / vsx4.htm
  • [12] Inspir K-UX, Wikipedia, https: // en.Wikipédia.org / wiki / inspur_k-uux
  • [14] Linux Standard Base (LSB), https: // wiki.linuxfoundation.org / lsb / start
  • [15] Intégrité, https: // www.GHS.com / produits / rtos / intégrité.html

Merci

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