« POSIX » : différence entre les versions
définition du sigle dès la première phrase |
|||
(37 versions intermédiaires par 31 utilisateurs non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
'''POSIX''' est une famille de [[ |
'''POSIX''' (('''''P'''ortable '''O'''perating '''S'''ystem '''I'''nterface'') et le '''X''' exprime l'héritage UNIX) est une famille de [[Normes et standards techniques|normes techniques]] définie depuis [[1988]] par l'[[Institute of Electrical and Electronics Engineers]] (IEEE), et formellement désignée par '''IEEE 1003'''. Ces normes ont émergé d'un projet de standardisation des [[interface de programmation|interfaces de programmation]] des [[logiciel]]s destinés à fonctionner sur les variantes du [[système d'exploitation]] [[UNIX]]. |
||
Le terme ''POSIX'' a été suggéré par [[Richard Stallman]], qui faisait partie du comité qui écrivit la première version de la norme. L'IEEE choisit de le retenir car il était facilement mémorisable<ref>{{en}} [http://stallman.org/articles/posix.html The origin of the name POSIX.] sur le site officiel de Richard Stallman.</ref>{{,}}<ref>{{en}} [http://www.opengroup.org/austin/papers/posix_faq.html POSIX® 1003.1 Frequently Asked Questions (FAQ Version 1.12)] </ref>. |
Le terme ''POSIX'' a été suggéré par [[Richard Stallman]], qui faisait partie du comité qui écrivit la première version de la norme. L'IEEE choisit de le retenir car il était facilement mémorisable<ref>{{en}} [http://stallman.org/articles/posix.html The origin of the name POSIX.] sur le site officiel de Richard Stallman.</ref>{{,}}<ref>{{en}} [http://www.opengroup.org/austin/papers/posix_faq.html POSIX® 1003.1 Frequently Asked Questions (FAQ Version 1.12)] </ref>. |
||
== Présentation == |
== Présentation == |
||
POSIX spécifie dans |
POSIX spécifie, dans dix-sept documents<ref><sub>1)</sub> Posix.1 ; <sub>2)</sub> Posix.1a ; <sub>3)</sub> Posix.2 ; <sub>4)</sub> Posix.3 ; <sub>5)</sub> Posix.4 ; <sub>6)</sub> Posix.4a ; <sub>7)</sub> Posix.4b ; <sub>8)</sub> Posix.5 ; <sub>9)</sub> Posix.6 ; <sub>10)</sub> Posix.7 ; <sub>11)</sub> Posix.8 ; <sub>12)</sub> Posix.9 ; <sub>13)</sub> Posix.10 ; <sub>14)</sub> Posix.11 ; <sub>15)</sub> Posix.12 ;<sub>16)</sub> Posix.13 ; <sub>16)</sub> Posix.15 ;<sub>17)</sub> Posix.17 ; [http://www.comptechdoc.org/os/linux/programming/c/linux_pgcintro.html Source]</ref> différents, les [[Interface utilisateur|interfaces utilisateurs]] et les [[Application Programming Interface|interfaces logicielles]], la ligne de commande standard et l'interface de [[Interpréteur de commandes|script]] qu'est le [[Bourne shell]]<ref>{{Lien web|titre = sh|url = http://pubs.opengroup.org/onlinepubs/9699919799/utilities/sh.html|site = pubs.opengroup.org|consulté le = 2015-09-06}}</ref>. Les autres commandes, services et utilitaires comprennent [[awk]], [[echo (Unix)|echo]], [[ed (logiciel)|ed]], et des centaines d'autres. Les services d'[[entrées/sorties]] de base ([[Fichier (informatique)|fichiers]], [[Terminal informatique|terminaux]], [[réseau informatique|réseau]]) doivent être présents ; le système doit supporter [[inode#Spécifications POSIX sur les attributs de fichiers|certains attributs spécifiques]] pour les fichiers. POSIX définit aussi une [[interface de programmation]] standard, et celle-ci est prise en charge par la plupart des systèmes d'exploitation récents. |
||
Une suite de tests pour POSIX accompagne le standard. |
Une suite de tests pour POSIX accompagne le standard. Elle est appelée '''PCTS''' (''POSIX Conformance Test Suite'', suite de tests pour la conformité POSIX). |
||
Comme l'IEEE vend très cher la documentation POSIX et ne permet pas sa publication sur [[Internet]], certains se sont tournés vers le standard [[Single UNIX Specification]]. En effet, ce dernier est ouvert, accepte les propositions de quiconque veut y contribuer, et est disponible gratuitement sur Internet. Ce travail remonte au début de [[1998]], lorsqu'un groupe de travail commun, l'{{Lien|Austin Group|en}}, a commencé à développer un standard qui est devenu la ''Single UNIX Specification Version 3''. |
Comme l'IEEE vend très cher la documentation POSIX et ne permet pas sa publication sur [[Internet]], certains se sont tournés vers le standard [[Single UNIX Specification]]. En effet, ce dernier est ouvert, accepte les propositions de quiconque veut y contribuer, et est disponible gratuitement sur Internet. Ce travail remonte au début de [[1998]], lorsqu'un groupe de travail commun, l'{{Lien|Austin Group|langue=en}}, a commencé à développer un standard qui est devenu la ''Single UNIX Specification Version 3''. |
||
Bien qu'il soit principalement implémenté sur des systèmes de type UNIX, le standard POSIX peut être utilisé par n'importe quel autre système d'exploitation. Par exemple, Microsoft [[Windows NT]] 3.x et [[ |
Bien qu'il soit principalement implémenté sur des systèmes de type UNIX, le standard POSIX peut être utilisé par n'importe quel autre système d'exploitation. Par exemple, Microsoft [[Windows NT]] 3.x et [[Windows NT 4.0|4]] sont certifiés conformes à POSIX.1:1990, ce qui est suffisant pour des applications POSIX relativement simples. Cependant, des programmes plus complexes ont besoin d'une compatibilité plus large. Des logiciels supplémentaires tels que [[Services for UNIX]] ou [[Cygwin]] peuvent apporter à Windows ce niveau de compatibilité. [[UWIN]] offre une compatibilité POSIX<ref>This note presents some issues on the porting of unix-based applications and libraries to unix-on-windows platforms like uwin and cygwin. http://www2.research.att.com/~gsf/download/win32/win32.html</ref>, y compris sur les chemins de fichiers. |
||
Le consortium [[Linux Standard Base]] publie plusieurs extensions et des standards de fait pour les systèmes d'exploitation basés sur [[Linux]]. |
Le consortium [[Linux Standard Base]] publie plusieurs extensions et des standards de fait pour les systèmes d'exploitation basés sur [[Linux]]. Ils sont peu susceptibles d'être repris par les autres systèmes de type UNIX, qui respectent d'autres standards plus anciens, bien que dans de nombreux cas la [[Linux Standard Base]] reprenne ces derniers. |
||
Une grande partie des [[Application Programming Interface|API]] de POSIX a été définie à une époque où l'adressage des machines se faisait sur 32 |
Une grande partie des [[Application Programming Interface|API]] de POSIX a été définie à une époque où l'adressage des machines se faisait sur {{nb|32 [[Bit (informatique)|bits]]}} au maximum. Pour préserver la compatibilité entre les différents systèmes, on recommandait à l'époque de ne pas dépasser la taille de {{nb|2 Go}} pour les fichiers, ceci dans le cas où le type standard « size_t » défini dans la librairie C standard « stddef.h » était défini comme un entier non signé de {{nb|31 bits}} (la valeur de retour de certaines fonctions étant signée, car utilisant le type signé POSIX « ssize_t », et renvoyant un nombre négatif en cas d'erreur). En effet, ce symbole était utilisé par la plupart des définitions d'interface d'accès aux fichiers du langage C (IEEE std 1003.1-1990). Actuellement, cette limite n'est souvent plus d'actualité, puisque que les systèmes utilisent pour « size_t » le plus souvent un type non signé d'au moins {{nb|63 bits}}. |
||
== Organisation == |
== Organisation == |
||
Ligne 25 : | Ligne 25 : | ||
== Versions == |
== Versions == |
||
La norme POSIX a connu plusieurs versions : |
La norme POSIX a connu plusieurs versions : |
||
{{Col-début}}{{Col-x}} |
|||
* POSIX.1, Services centraux (inclut le standard [[ANSI C]]) (IEEE Std 1003.1-1988) porte sur : |
* POSIX.1, Services centraux (inclut le standard [[ANSI C]]) (IEEE Std 1003.1-1988) porte sur : |
||
** la création et le contrôle des [[Processus (informatique)|processus]] |
** la création et le contrôle des [[Processus (informatique)|processus]] |
||
Ligne 36 : | Ligne 36 : | ||
** les opérations sur les fichiers et les dossiers |
** les opérations sur les fichiers et les dossiers |
||
** les [[Tube Unix|tubes]] |
** les [[Tube Unix|tubes]] |
||
** la [[bibliothèque standard |
** la [[bibliothèque standard du C]] |
||
** les [[entrées-sorties]] et le contrôle des [[Port (logiciel)|ports]] |
** les [[entrées-sorties]] et le contrôle des [[Port (logiciel)|ports]] |
||
{{Col-x|écart=3em}} |
|||
* POSIX.1b, extension pour le [[système temps réel|temps réel]] (IEEE Std 1003.1b-1993) : |
* POSIX.1b, extension pour le [[système temps réel|temps réel]] (IEEE Std 1003.1b-1993) : |
||
** l'[[Ordonnancement dans les systèmes d'exploitation|ordonnancement]] |
** l'[[Ordonnancement dans les systèmes d'exploitation|ordonnancement]] |
||
Ligne 48 : | Ligne 47 : | ||
** les entrées-sorties synchrones et les {{Lien |fr=entrées-sorties asynchrones |lang=en |trad=Asynchronous I/O}} |
** les entrées-sorties synchrones et les {{Lien |fr=entrées-sorties asynchrones |lang=en |trad=Asynchronous I/O}} |
||
** les outils de verrouillage de la mémoire |
** les outils de verrouillage de la mémoire |
||
⚫ | |||
{{Col-x|écart=3em}} |
|||
⚫ | |||
** la création, le contrôle et la suppression des threads |
** la création, le contrôle et la suppression des threads |
||
** l'ordonnancement des threads |
** l'ordonnancement des threads |
||
** la synchronisation des threads |
** la synchronisation des threads |
||
** l'interception des signaux (''Signal Handling'') |
** l'interception des signaux (''Signal Handling'') |
||
{{Col-fin}} |
|||
==Limitations== |
== Limitations == |
||
Certains systèmes POSIX peuvent éventuellement présenter des limitations qui donnent aux utilisateurs le sentiment d'être |
Certains systèmes POSIX peuvent éventuellement présenter des limitations qui donnent aux utilisateurs le sentiment d'être exposés à des bugs connus et avérés. C'est notamment le cas des [[seconde intercalaire|secondes intercalaires]]<ref>{{lien web |auteur1=Audrey Oeillet |titre=La seconde additionnelle de 2012 mal digérée par certains sites et programmes |url=http://www.clubic.com/internet/actualite-499220-seconde-additionnelle-2012-mal-digeree-sites-programmes.html |site=clubic.com |date=02-07-2012 |consulté le=26-08-2020}}.</ref> ou de la non prise en compte de la possible présence de l'[[indicateur d'ordre des octets]] [[UTF-8]] dans le [[shebang]]. |
||
== [[Linux]] et POSIX == |
== [[Linux]] et POSIX == |
||
Ligne 70 : | Ligne 66 : | ||
=== Certification POSIX de Linux === |
=== Certification POSIX de Linux === |
||
Unifix Linux 2.0 de la société allemande Unifix et Linux-FT de Lasermoon sont certifiés POSIX.1 [[FIPS |
/Unifix Linux 2.0 de la société allemande Unifix et Linux-FT de Lasermoon sont certifiés POSIX.1 [[FIPS 151-2|{{Abréviation|FIPS|''Federal Information Processing Standard''|en}} 151-2]]<ref name=":0">[https://www.debian.org/doc/manuals/debian-faq/compatibility.fr.html#otherunices Page Debian parlant d'Unifix et de son dérivé LINUX-FT]</ref>{{,}}<ref>[http://www.linuxjournal.com/article/0131 Unifix a été réalisé en Allemagne et la certification a été faite aux États-Unis (Article d'août 1996)].</ref>{{,}}<ref>{{en}} [http://www.ukuug.org/newsletter/linux-newsletter/linux@uk21/posix.shtml POSIX.1 (FIPS 151-2) Certification de LINUX-FT]</ref>. Noyau 1.2.13<ref>{{en}} [http://www.ukuug.org/newsletter/52/news@uk52-1.shtml The 1.2.13 kernel certified POSIX.1 Kernel 1.3.59 passed certification tests]</ref> |
||
Le site [[Debian]] explique {{Citation| |
Le site [[Debian]] explique que {{Citation|[...] la certification POSIX.1 (et FIPS 151-2) est très chère [et] rend peu probable l'obtention par Debian d'une certification officielle de conformité }}<ref name=":0" />. |
||
== Références == |
== Références == |
||
{{références}} |
{{références|colonnes=2}} |
||
== Voir aussi == |
== Voir aussi == |
||
Ligne 88 : | Ligne 84 : | ||
=== Liens externes === |
=== Liens externes === |
||
* {{en}} [https://pubs.opengroup.org/onlinepubs/9699919799/ The Open Group Base Specifications Issue 7, 2018 edition] |
|||
* {{en}} [http://www.unix.org/version3/ieee_std.html IEEE Std 1003.1,2004 Edition] |
* {{en}} [http://www.unix.org/version3/ieee_std.html IEEE Std 1003.1,2004 Edition] |
||
* {{en}} [http://www.opengroup.org ''Single UNIX Specification'', publié sur internet et proche de POSIX] |
* {{en}} [http://www.opengroup.org ''Single UNIX Specification'', publié sur internet et proche de POSIX] |
||
{{Palette|Normes ISO}} |
{{Palette|Normes ISO}} |
||
{{ |
{{Portail|informatique}} |
||
[[Catégorie:POSIX| ]] |
|||
[[Catégorie:Norme ISO]] |
[[Catégorie:Norme ISO]] |
||
[[Catégorie:Norme IEEE]] |
[[Catégorie:Norme IEEE]] |
||
Ligne 99 : | Ligne 97 : | ||
[[Catégorie:Unix]] |
[[Catégorie:Unix]] |
||
[[Catégorie:Acronyme]] |
[[Catégorie:Acronyme]] |
||
[[Catégorie:Interface de programmation]] |
Version du 19 mars 2024 à 14:03
POSIX ((Portable Operating System Interface) et le X exprime l'héritage UNIX) est une famille de normes techniques définie depuis 1988 par l'Institute of Electrical and Electronics Engineers (IEEE), et formellement désignée par IEEE 1003. Ces normes ont émergé d'un projet de standardisation des interfaces de programmation des logiciels destinés à fonctionner sur les variantes du système d'exploitation UNIX.
Le terme POSIX a été suggéré par Richard Stallman, qui faisait partie du comité qui écrivit la première version de la norme. L'IEEE choisit de le retenir car il était facilement mémorisable[1],[2].
Présentation
POSIX spécifie, dans dix-sept documents[3] différents, les interfaces utilisateurs et les interfaces logicielles, la ligne de commande standard et l'interface de script qu'est le Bourne shell[4]. Les autres commandes, services et utilitaires comprennent awk, echo, ed, et des centaines d'autres. Les services d'entrées/sorties de base (fichiers, terminaux, réseau) doivent être présents ; le système doit supporter certains attributs spécifiques pour les fichiers. POSIX définit aussi une interface de programmation standard, et celle-ci est prise en charge par la plupart des systèmes d'exploitation récents.
Une suite de tests pour POSIX accompagne le standard. Elle est appelée PCTS (POSIX Conformance Test Suite, suite de tests pour la conformité POSIX).
Comme l'IEEE vend très cher la documentation POSIX et ne permet pas sa publication sur Internet, certains se sont tournés vers le standard Single UNIX Specification. En effet, ce dernier est ouvert, accepte les propositions de quiconque veut y contribuer, et est disponible gratuitement sur Internet. Ce travail remonte au début de 1998, lorsqu'un groupe de travail commun, l'Austin Group (en), a commencé à développer un standard qui est devenu la Single UNIX Specification Version 3.
Bien qu'il soit principalement implémenté sur des systèmes de type UNIX, le standard POSIX peut être utilisé par n'importe quel autre système d'exploitation. Par exemple, Microsoft Windows NT 3.x et 4 sont certifiés conformes à POSIX.1:1990, ce qui est suffisant pour des applications POSIX relativement simples. Cependant, des programmes plus complexes ont besoin d'une compatibilité plus large. Des logiciels supplémentaires tels que Services for UNIX ou Cygwin peuvent apporter à Windows ce niveau de compatibilité. UWIN offre une compatibilité POSIX[5], y compris sur les chemins de fichiers.
Le consortium Linux Standard Base publie plusieurs extensions et des standards de fait pour les systèmes d'exploitation basés sur Linux. Ils sont peu susceptibles d'être repris par les autres systèmes de type UNIX, qui respectent d'autres standards plus anciens, bien que dans de nombreux cas la Linux Standard Base reprenne ces derniers.
Une grande partie des API de POSIX a été définie à une époque où l'adressage des machines se faisait sur 32 bits au maximum. Pour préserver la compatibilité entre les différents systèmes, on recommandait à l'époque de ne pas dépasser la taille de 2 Go pour les fichiers, ceci dans le cas où le type standard « size_t » défini dans la librairie C standard « stddef.h » était défini comme un entier non signé de 31 bits (la valeur de retour de certaines fonctions étant signée, car utilisant le type signé POSIX « ssize_t », et renvoyant un nombre négatif en cas d'erreur). En effet, ce symbole était utilisé par la plupart des définitions d'interface d'accès aux fichiers du langage C (IEEE std 1003.1-1990). Actuellement, cette limite n'est souvent plus d'actualité, puisque que les systèmes utilisent pour « size_t » le plus souvent un type non signé d'au moins 63 bits.
Organisation
Actuellement, la documentation de POSIX est divisée en trois parties :
- les API (permet de définir la manière dont un composant informatique peut communiquer avec un autre) de base (qui comprennent des extensions à POSIX.1, les services temps réel, les processus légers, les extensions temps réel, l'interface de sécurité, l'accès aux fichiers par le réseau, et les communications inter-processus par le réseau) ;
- les commandes et utilitaires POSIX (extensions de portabilité des utilisateurs, corrections et extensions, utilitaire de protection et de contrôle, utilitaires pour le traitement par lots) ;
- test de conformité à POSIX.
Versions
La norme POSIX a connu plusieurs versions :
- POSIX.1, Services centraux (inclut le standard ANSI C) (IEEE Std 1003.1-1988) porte sur :
- la création et le contrôle des processus
- les gestions des signaux inter-processus[6]
- les exceptions des nombres flottants (gestion du FPU)
- les violations de segmentation
- les instructions illégales
- les erreurs de bus
- les timers
- les opérations sur les fichiers et les dossiers
- les tubes
- la bibliothèque standard du C
- les entrées-sorties et le contrôle des ports
- POSIX.1b, extension pour le temps réel (IEEE Std 1003.1b-1993) :
- l'ordonnancement
- les signaux en temps réel
- les horloges et les timers
- les sémaphores
- le passage de messages
- la mémoire partagée
- les entrées-sorties synchrones et les entrées-sorties asynchrones (en)
- les outils de verrouillage de la mémoire
- POSIX.1c, extension sur les processus légers (les threads) (IEEE Std 1003.1c-1995) :
- la création, le contrôle et la suppression des threads
- l'ordonnancement des threads
- la synchronisation des threads
- l'interception des signaux (Signal Handling)
Limitations
Certains systèmes POSIX peuvent éventuellement présenter des limitations qui donnent aux utilisateurs le sentiment d'être exposés à des bugs connus et avérés. C'est notamment le cas des secondes intercalaires[7] ou de la non prise en compte de la possible présence de l'indicateur d'ordre des octets UTF-8 dans le shebang.
Linux et POSIX
Variable d'environnement POSIXLY_CORRECT
La variable d'environnement POSIXLY_CORRECT permet d'indiquer si une commande doit se conformer à POSIX ou non. Les commandes d'administration ne sont pas concernées par cette variable.
Plusieurs dizaines de commandes adaptent leur fonctionnement en fonction de la valeur de POSIXLY_CORRECT ; les exemples les plus typiques sont les commandes grep et find, mais il en existe bien d'autres : apropos, at[8], df[9], …, rgrep, setfacl, etc.
Cette variable d'environnement sert par exemple à définir si une commande doit utiliser le format de donnée conforme à POSIX ou celui qui est utilisé par défaut par cette commande.
Certification POSIX de Linux
/Unifix Linux 2.0 de la société allemande Unifix et Linux-FT de Lasermoon sont certifiés POSIX.1 FIPS 151-2[10],[11],[12]. Noyau 1.2.13[13]
Le site Debian explique que « [...] la certification POSIX.1 (et FIPS 151-2) est très chère [et] rend peu probable l'obtention par Debian d'une certification officielle de conformité »[10].
Références
- (en) The origin of the name POSIX. sur le site officiel de Richard Stallman.
- (en) POSIX® 1003.1 Frequently Asked Questions (FAQ Version 1.12)
- 1) Posix.1 ; 2) Posix.1a ; 3) Posix.2 ; 4) Posix.3 ; 5) Posix.4 ; 6) Posix.4a ; 7) Posix.4b ; 8) Posix.5 ; 9) Posix.6 ; 10) Posix.7 ; 11) Posix.8 ; 12) Posix.9 ; 13) Posix.10 ; 14) Posix.11 ; 15) Posix.12 ;16) Posix.13 ; 16) Posix.15 ;17) Posix.17 ; Source
- « sh », sur pubs.opengroup.org (consulté le )
- This note presents some issues on the porting of unix-based applications and libraries to unix-on-windows platforms like uwin and cygwin. http://www2.research.att.com/~gsf/download/win32/win32.html
- (en) « Linux Signals »
- Audrey Oeillet, « La seconde additionnelle de 2012 mal digérée par certains sites et programmes », sur clubic.com, (consulté le ).
- La commande at permet de lancer une commande Unix à la date et l'heure spécifiées, voir (en) at (Unix)
- df : voir l'occupation du disque sur un système de fichiers, voir (en) df (Unix)
- Page Debian parlant d'Unifix et de son dérivé LINUX-FT
- Unifix a été réalisé en Allemagne et la certification a été faite aux États-Unis (Article d'août 1996).
- (en) POSIX.1 (FIPS 151-2) Certification de LINUX-FT
- (en) The 1.2.13 kernel certified POSIX.1 Kernel 1.3.59 passed certification tests
Voir aussi
Articles connexes
- LSB : ce projet est basé sur POSIX et a pour but de standardiser la structure interne des systèmes d'exploitation basés sur GNU/Linux.
- unistd.h : Cet include indique la version de la norme Posix à utiliser pour la compilation
- Sanos