POSIX - POSIX
Statut | Publié |
---|---|
Année commencée | 1988 |
Dernière version | Norme IEEE 1003.1-2017 2017 |
Organisation | Groupe Austin ( IEEE Computer Society , The Open Group , ISO/IEC JTC 1 ) |
Normes associées | ISO / CEI 9945 |
Domaine | Interfaces de programmation d'applications |
Abréviation | POSIX |
Site Internet | obtenir |
L' interface du système d'exploitation portable ( POSIX ) est une famille de normes spécifiées par l' IEEE Computer Society pour maintenir la compatibilité entre les systèmes d'exploitation . POSIX définit à la fois les interfaces de programmation d'applications (API) au niveau système et utilisateur , ainsi que les shells de ligne de commande et les interfaces utilitaires, pour la compatibilité logicielle (portabilité) avec les variantes d' Unix et d'autres systèmes d'exploitation. POSIX est également une marque déposée de l'IEEE. POSIX est destiné à être utilisé à la fois par les développeurs d'applications et de systèmes.
Nom
À l'origine, le nom "POSIX" faisait référence à IEEE Std 1003.1-1988, publié en 1988. La famille de normes POSIX est officiellement désignée comme IEEE 1003 et le numéro de norme ISO / IEC est ISO / IEC 9945.
Les normes ont émergé d'un projet qui a commencé vers 1985. Richard Stallman a suggéré le nom POSIX (prononcé pahz-icks, pas poh-six ) à l'IEEE au lieu de l'ancien IEEE-IX . Le comité l'a trouvé plus facilement prononçable et mémorable, et l'a donc adopté.
Aperçu
Unix a été choisi comme base d'une interface système standard en partie parce qu'il était « neutre vis-à-vis du fabricant ». Cependant, plusieurs versions majeures d'Unix existaient, il était donc nécessaire de développer un système de dénominateur commun. Les spécifications POSIX pour les systèmes d'exploitation de type Unix consistaient à l'origine en un seul document pour l' interface de programmation principale , mais sont finalement passées à 19 documents distincts (POSIX.1, POSIX.2, etc.). La ligne de commande utilisateur standardisée et l' interface de script étaient basées sur le shell UNIX System V. De nombreux programmes, services et utilitaires au niveau utilisateur (y compris awk , echo , ed ) ont également été standardisés, ainsi que les services requis au niveau du programme (y compris les E/S de base : file , terminal , et network ). POSIX définit également une norme threading API de bibliothèque qui est pris en charge par la plupart des systèmes d'exploitation modernes. En 2008, la plupart des parties de POSIX ont été combinées en une seule norme (IEEE Std 1003.1-2008 , également connue sous le nom de POSIX.1-2008).
Depuis 2014, la documentation POSIX est divisée en deux parties :
- POSIX.1, édition 2013 : définitions de base POSIX, interfaces système, commandes et utilitaires (qui incluent POSIX.1, extensions pour POSIX.1, services en temps réel, interface de threads, extensions en temps réel, interface de sécurité, accès aux fichiers réseau et les communications réseau de processus à processus, les extensions de portabilité utilisateur, les corrections et extensions, les utilitaires de protection et de contrôle et les utilitaires de système par lots. Il s'agit de POSIX 1003.1-2008 avec le rectificatif technique 1.)
- Test de conformité POSIX : Une suite de tests pour POSIX accompagne la norme : VSX-PCTS ou la suite de tests de conformité VSX POSIX .
Le développement de la norme POSIX a lieu au sein du groupe Austin (un groupe de travail conjoint entre l'IEEE, l'Open Group et l' ISO/IEC JTC 1 ).
Versions
Pièces avant 1997
Avant 1997, POSIX comprenait plusieurs normes :
-
POSIX.1 : Core Services (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
- Tuyaux
- Bibliothèque C (norme C)
- Interface et contrôle des ports d' E/S
- Déclencheurs de processus
-
POSIX.1b : extensions en temps réel (IEEE Std 1003.1b-1993, apparaissant plus tard sous le nom de librt—la bibliothèque d'extensions en temps réel))
- Planification prioritaire
- Signaux en temps réel
- Horloges et minuteries
- Sémaphores
- Passage de messages
- La memoire partagée
- E/S asynchrones et synchrones
- Interface de verrouillage de mémoire
-
POSIX.1c : Extensions de threads (IEEE Std 1003.1c-1995)
- Création, contrôle et nettoyage de threads
- Planification des threads
- Synchronisation des threads
- Traitement des signaux
-
POSIX.2 : Shell et utilitaires (IEEE Std 1003.2-1992)
- Interprète de commandes
- Programmes utilitaires
Versions après 1997
Après 1997, le groupe Austin a développé les révisions POSIX. Les spécifications sont connues sous le nom de Single UNIX Specification , avant qu'elles ne deviennent une norme POSIX lorsqu'elles sont formellement approuvées par l'ISO.
POSIX.1-2001 (avec deux TC)
POSIX.1-2001 (ou IEEE Std 1003.1-2001) correspond à la spécification Single UNIX version 3.
Cette norme consistait en :
- les définitions de base, numéro 6,
- les interfaces et en-têtes système, numéro 6,
- les commandes et utilitaires, numéro 6.
IEEE Std 1003.1-2004 impliquait une mise à jour mineure de POSIX.1-2001. Il incorporait deux mises à jour mineures ou errata appelés rectificatifs techniques (TC). Son contenu est disponible sur le Web.
POSIX.1-2008 (avec deux TC)
Les spécifications de base, édition 7 (ou IEEE Std 1003.1-2008 , édition 2016) sont similaires à la version 2017 actuelle (au 22 juillet 2018).
Cette norme comprend :
- les Définitions de base, numéro 7,
- les interfaces et en-têtes système, édition 7,
- les commandes et utilitaires, numéro 7,
- le volume de la justification.
POSIX.1-2017
IEEE Std 1003.1-2017 (Révision de IEEE Std 1003.1-2008) - Norme IEEE pour les technologies de l'information — Spécifications de base de l'interface de système d'exploitation portable (POSIX(R)), édition 7 est disponible auprès de The Open Group ou IEEE et est, à compter du 22 juillet 2018, la norme actuelle. Il est techniquement identique à POSIX.1-2008 avec les Rectificatifs Techniques 1 et 2 appliqués. Une copie en ligne gratuite peut encore être disponible.
Controverses
Blocs de 512 vs 1024 octets
POSIX impose des tailles de blocs par défaut de 512 octets pour les utilitaires df et du , reflétant la taille typique des blocs sur les disques. Lorsque Richard Stallman et l' équipe GNU implémentaient POSIX pour le système d'exploitation GNU , ils s'y sont opposés au motif que la plupart des gens pensent en termes de blocs de 1024 octets (ou 1 KiB ). La variable d'environnement POSIX_ME_HARDER a été introduite pour permettre à l'utilisateur de forcer le comportement conforme aux normes. Le nom de la variable a ensuite été changé en POSIXLY_CORRECT . Cette variable est maintenant également utilisée pour un certain nombre d'autres bizarreries de comportement.
Systèmes d'exploitation orientés POSIX
Selon le degré de conformité aux normes, on peut classer les systèmes d'exploitation comme entièrement ou partiellement compatibles POSIX. Les produits certifiés sont disponibles sur le site Web de l'IEEE.
Certifié POSIX
Certaines versions des systèmes d'exploitation suivants ont été certifiées conformes à une ou plusieurs des diverses normes POSIX. Cela signifie qu'ils ont réussi les tests de conformité automatisés.
Principalement conforme à POSIX
Les éléments suivants, bien qu'ils ne soient pas officiellement certifiés compatibles POSIX, sont en grande partie conformes :
- Android (disponible via Android NDK)
- BeOS (et par la suite Haiku )
- Contiki
- Darwin (noyau de macOS et iOS )
- DragonFly BSD
- FreeBSD
- illumine
- Linux (la plupart des distributions — voir Linux Standard Base )
- LynxOS
- MINIX (maintenant MINIX3 )
- MPE/iX
- NetBSD
- Noyau RTOS
- NuttX
- OpenBSD
- OpenSolaris
- PikeOS RTOS pour systèmes embarqués avec partitions PSE51 et PSE52 en option ; voir partition (mainframe)
- Redox
- RTEMS - Prise en charge de l'API POSIX conçue pour IEEE Std. 1003.13-2003 PSF52
- SkyOS
- Syllabe
- VSTa
- VMware ESXi
- VxWorks ( VxWorks est souvent utilisé comme shell autour des noyaux non POSIX — c'est-à-dire TiMOS/SROS )
- Xenix
POSIX pour Microsoft Windows
- Cygwin fournit un environnement de développement et d'exécution largement compatible POSIX pour Microsoft Windows .
- MinGW , un fork de Cygwin, fournit un environnement de développement moins conforme à POSIX et prend en charge les applications compatibles programmées en C via Msvcrt , l'ancienne bibliothèque d'exécution Visual C de Microsoft.
- Sous - système Microsoft POSIX , un sous-système Windows facultatif inclus dans les systèmes d'exploitation basés sur Windows NT jusqu'à Windows 2000. POSIX-1 tel qu'il était dans la révision de 1990, sans threads ni sockets.
- Interix , à l'origine OpenNT par Softway Systems, Inc., est une mise à niveau et un remplacement du sous - système Microsoft POSIX qui a été acheté par Microsoft en 1999. Il a d'abord été commercialisé en tant que produit complémentaire autonome, puis l'a ensuite inclus en tant que composant dans Services Windows pour UNIX (SFU) et l'ont finalement incorporé en tant que composant dans Windows Server 2003 R2 et les versions ultérieures du système d'exploitation Windows sous le nom de « Sous-système pour les applications UNIX » (SUA) ; plus tard rendu obsolète en 2012 (Windows 8) et abandonné en 2013 (2012 R2, 8.1). Il permet une conformité POSIX totale pour certains produits Microsoft Windows .
- Le sous-système Windows pour Linux , également connu sous le nom de WSL, est une couche de compatibilité permettant d'exécuter des exécutables binaires Linux de manière native sur Windows 10 à l'aide d'une image Linux telle qu'Ubuntu, Debian ou OpenSUSE, entre autres, agissant comme une mise à niveau et un remplacement des services Windows pour UNIX. Il est sorti en version bêta en avril 2016. La première distribution disponible était Ubuntu.
- UWIN d'AT&T Research implémente une couche POSIX au-dessus des API Win32.
- MKS Toolkit , créé à l'origine pour MS-DOS, est un progiciel produit et maintenu par MKS Inc. qui fournit un environnement de type Unix pour les scripts, la connectivité et le portage des logiciels Unix et Linux sur les systèmes Microsoft Windows 32 et 64 bits . Un sous-ensemble a été inclus dans la première version de Windows Services for UNIX (SFU) en 1998.
- La bibliothèque d'exécution Windows C et l' API Windows Sockets implémentent les fonctions API POSIX couramment utilisées pour l'accès aux fichiers, à l'heure, à l'environnement et aux sockets, bien que la prise en charge reste largement incomplète et pas entièrement interopérable avec les implémentations compatibles POSIX.
POSIX pour OS/2
Environnements principalement compatibles POSIX pour OS/2 :
- emx+gcc – largement conforme à POSIX
POSIX pour DOS
Les environnements partiellement compatibles POSIX pour DOS incluent :
- emx+gcc – largement conforme à POSIX
- DJGPP – partiellement conforme à POSIX
- Noyau multitâche DR-DOS via EMM386 /MULTI - une extension API frontale de threads POSIX est disponible
Conforme via la couche de compatibilité
Les éléments suivants ne sont pas officiellement certifiés compatibles POSIX, mais ils sont en grande partie conformes aux normes en implémentant la prise en charge POSIX via une sorte de fonctionnalité de compatibilité (généralement des bibliothèques de traduction ou une couche au-dessus du noyau). Sans ces fonctionnalités, ils sont généralement non conformes.
- eCos – POSIX fait partie de la distribution standard et est utilisé par de nombreuses applications. La section « liens externes » ci-dessous contient plus d'informations.
- AmigaOS (via la bibliothèque ixemul)
- MorphOS (via la bibliothèque ixemul intégrée)
- OpenVMS (via le package POSIX en option)
- Plan 9 de Bell Labs APE - Environnement ANSI/POSIX
- RIOT (via le module POSIX en option)
- Système d'exploitation Symbian avec PIPS (PIPS est POSIX sur Symbian)
-
Noyau Windows NT lors de l'utilisation de Microsoft SFU 3.5 ou SUA
- Windows 2000 Server ou Professionnel avec Service Pack 3 ou version ultérieure . Pour être compatible POSIX, il faut activer les fonctionnalités optionnelles de Windows NT et Windows 2000 Server.
- Windows XP Professionnel avec Service Pack 1 ou version ultérieure
- Serveur Windows 2003
- Windows Server 2008 et versions Ultimate et Enterprise de Windows Vista
- Windows Server 2008 R2 et versions Ultimate et Enterprise de Windows 7
- bien qu'obsolète, toujours disponible pour Windows Server 2012 et la version Entreprise de Windows 8
- Services système UNIX qui s'exécutent sur z/OS (certifiés conformes)
Voir également
- signal POSIX
- Fils POSIX
- Projet TRON – normes OS alternatives à POSIX
- Accès utilisateur commun - Norme d'interface utilisateur
- Interix - un sous-système d'environnement POSIX et Unix complet pour les systèmes d'exploitation Windows NT de Microsoft
- Bibliothèque C POSIX
- Système d'exploitation en temps réel
- Jeu de caractères portable , jeu de 103 caractères qui devrait être pris en charge dans n'importe quel jeu de caractères compatible POSIX
Les références
Liens externes
- "Accueil Certification POSIX" . Le groupe ouvert/IEEE.