Qu'est-ce que POSIX (Portable Operating System Interface) ?

10 fรฉvrier 2026

POSIX est un ensemble de normes qui dรฉfinissent le comportement fondamental des systรจmes d'exploitation.

Qu'est-ce que le POSIX ?

Que signifie POSIX ?

POSIX (Portable Operating System Interface) est une famille de normes IEEE (Institute of Electrical and Electronics Engineers) qui spรฉcifie un ensemble commun le systรจme d'exploitation une interface permettant d'รฉcrire le logiciel une seule fois et de l'exรฉcuter sur plusieurs systรจmes compatibles avec un minimum de modifications.

Il dรฉfinit le comportement et les signatures des clรฉs Apis utilisรฉ par applications, en particulier le C POSIX dรฉfinit une bibliothรจque et des appels systรจme sous-jacents, couvrant des domaines essentiels tels que les processus et les signaux, les opรฉrations sur les fichiers et les rรฉpertoires, les permissions, les primitives de communication interprocessus, les fonctions de temps et le multithreading de base. POSIX normalise รฉgalement un ensemble de de ligne de commande utilitaires et environnement shell, c'est pourquoi beaucoup scripts supposons un /bin/sh de type POSIX et un ensemble prรฉvisible de comportements d'outils.

En pratique, POSIX sert de contrat de compatibilitรฉ entre les applications et le systรจme d'exploitation : si un systรจme d'exploitation et ses bibliothรจques standard respectent les spรฉcifications POSIX, les dรฉveloppeurs peuvent s'appuyer sur une sรฉmantique cohรฉrente pour des รฉlรฉments tels que les descripteurs de fichiers, les tubes, les codes de sortie et les codes d'erreur, ce qui amรฉliore la portabilitรฉ. UNIX et les plateformes de type Unix (et ce, chez diffรฉrents fournisseurs et sur diffรฉrentes distributions).

Quelle est l'histoire de POSIX ?

POSIX est nรฉ des problรจmes de portabilitรฉ des dรฉbuts d'UNIX, lorsque diffรฉrents fournisseurs distribuaient des variantes d'UNIX aux comportements similaires, mais non identiques. Au milieu des annรฉes 1980, l'IEEE a lancรฉ un projet de normalisation formel (le projet P1003) afin de dรฉfinir une interface cohรฉrente et indรฉpendante des fournisseurs pour un systรจme d'exploitation portable, largement inspirรฉ des pratiques UNIX courantes. Le nom ยซ POSIX ยป a รฉtรฉ proposรฉ par Richard Stallman, fondateur de l'IEEE. GNU projet, en tant qu'appellation courte et prononรงable pour l'interface du systรจme d'exploitation portable.

La premiรจre norme fondamentale a รฉtรฉ publiรฉe sous la rรฉfรฉrence IEEE Std 1003.1-1988. Elle portait sur les services de base du systรจme d'exploitation et les interfaces systรจme C/POSIX (processus, fichiers/rรฉpertoires, signaux, tubes et notions de base associรฉes). Elle a ensuite รฉtรฉ alignรฉe sur les normes ISO/CEI dans la sรฉrie 9945 (par exemple, ISO/CEI 9945-1:1990).

ร€ partir de lร , POSIX s'est dรฉveloppรฉ et a รฉvoluรฉ au fil des rรฉvisions et des spรฉcifications connexes. Un tournant majeur a eu lieu en 1998 avec la crรฉation du Groupe Austin, une initiative conjointe de l'IEEE, de The Open Group et de l'ISO/CEI visant ร  รฉlaborer un ensemble unique et harmonisรฉ de ยซ spรฉcifications de base ยป. Ces travaux ont abouti ร  POSIX.1-2001 (techniquement alignรฉ sur la spรฉcification UNIX unique, version 3), publiรฉ dรฉbut 2002, et ร  des rรฉvisions majeures ultรฉrieures telles que POSIX.1-2008 qui ont continuรฉ ร  mettre ร  jour et ร  clarifier la norme.

Exemples POSIX

POSIX se manifeste le plus clairement dans les ยซ รฉlรฉments constitutifs ยป communs aux systรจmes de type UNIX, ce qui explique pourquoi le mรชme code et les mรชmes scripts shell s'exรฉcutent souvent sur ces systรจmes. Linux, BSD et macOS avec peu ou pas de modifications.

Voici quelques exemples courants de POSIX :

  • Interfaces de fichiers et de processus, telles que open(), read(), write() et close() pour l'accรจs aux fichiers, et fork() / execve() pour dรฉmarrer de nouveaux programmes.
  • Descripteurs de fichiers et tubes, qui permettent aux programmes de s'รฉchanger des donnรฉes ร  l'aide d'appels tels que pipe() et dup2().
  • Signalรฉtique, tels que SIGINT et SIGTERM, que les programmes gรจrent de maniรจre standard ร  l'aide de sigaction().
  • Threads, fournies par l'intermรฉdiaire des API de threads POSIX (pthreads), y compris des fonctions comme pthread_create() et pthread_mutex_lock().
  • Scripts shell conformes ร  POSIX, รฉcrit pour /bin/sh et utilisant des utilitaires portables tels que sh, grep, sed, awk, find et tar, qui se comportent de maniรจre cohรฉrente sur tous les systรจmes.

Cโ€™est cette standardisation qui rend les logiciels basรฉs sur POSIX portables sur diffรฉrentes plateformes de type UNIX.

ร€ quoi sert POSIX ?

POSIX est utilisรฉ pour rendre les logiciels portables et prรฉvisibles sur les systรจmes d'exploitation UNIX et de type UNIX en standardisant les interfaces dont s'appuient les programmes. Les dรฉveloppeurs l'utilisent comme contrat de base pour le comportement fondamental du systรจme d'exploitation, notamment la crรฉation et la gestion des processus, l'accรจs aux fichiers et rรฉpertoires, le fonctionnement des permissions, le comportement des signaux et des fonctions de temporisation, ainsi que le fonctionnement des primitives de communication interprocessus telles que les tubes.

Ainsi, un mรชme code d'application peut รชtre compilรฉ et exรฉcutรฉ sur diffรฉrents systรจmes avec des modifications minimes. Il sert รฉgalement de cible de portabilitรฉ pour les scripts shell et les outils en ligne de commande, car POSIX dรฉfinit un environnement shell commun et un comportement standardisรฉ des utilitaires, rรฉduisant ainsi les diffรฉrences de compatibilitรฉ entre les distributions et les fournisseurs.

Quels systรจmes d'exploitation prennent en charge POSIX ?

La plupart des systรจmes d'exploitation UNIX et de type UNIX modernes prennent en charge POSIX dans une certaine mesure, soit intรฉgralement, soit avec des extensions et des lacunes bien documentรฉes.

Les systรจmes UNIX natifs tels que Linux, FreeBSD, OpenBSD, NetBSD et macOS sont tous construits autour des concepts POSIX et offrent une large conformitรฉ POSIX. grainesLes bibliothรจques C, les shells et les utilitaires de base constituent la principale raison pour laquelle POSIX reste pertinent, car ils permettent aux mรชmes applications et scripts de fonctionner sur diffรฉrents fournisseurs et distributions avec un minimum de modifications.

Certains systรจmes non-UNIX prennent en charge POSIX partiellement ou via des couches de compatibilitรฉ. Par exemple, IBM AIX, HP-UX et Solaris รฉtaient historiquement certifiรฉs conformes ร  POSIX et ร  la spรฉcification UNIX unique.

Windows n'est pas natif POSIX, mais il offre une prise en charge POSIX limitรฉe via des environnements tels que le sous-systรจme Windows pour Linux (WSL) ou des couches de compatibilitรฉ comme Cygwin, qui fournissent des API POSIX au-dessus du noyau Windows.

Niveaux de conformitรฉ POSIX

niveaux de conformitรฉ POSIX

La ยซ conformitรฉ ยป POSIX ne se rรฉsume pas ร  une simple activation. En gรฉnรฉral, les systรจmes revendiquent la conformitรฉ ร  une รฉdition POSIX spรฉcifique (par exemple, POSIX.1) et, รฉventuellement, ร  des groupes de fonctionnalitรฉs supplรฉmentaires. Certains fournisseurs vont plus loin et obtiennent une certification officielle. Les niveaux de conformitรฉ POSIX sont les suivants :

  • Conformitรฉ de base POSIX (POSIX.1 / IEEE 1003.1)Le systรจme d'exploitation fournit les interfaces et comportements POSIX requis dรฉfinis dans la norme de base, y compris la sรฉmantique des processus, des fichiers et des appels systรจme de base, ainsi que le comportement de base du shell et des utilitaires liรฉ ร  cette รฉdition de la spรฉcification.
  • Conformitรฉ POSIX avec groupes d'optionsAu-delร  des fonctionnalitรฉs de base, POSIX dรฉfinit des ensembles de fonctionnalitรฉs optionnelles (groupes d'options). Un systรจme peut รชtre ยซ conforme ร  POSIX ยป et revendiquer en outre les options qu'il prend en charge (par exemple, des utilitaires supplรฉmentaires ou une sรฉmantique d'API supplรฉmentaire).
  • Spรฉcification SUS/Single UNIX (base XSI + POSIX). La spรฉcification UNIX unique (SUS) est un sur-ensemble qui nรฉcessite des interfaces et une sรฉmantique supplรฉmentaires au-delร  de la base POSIX, notamment l'option XSI (X/Open System Interfaces) qui est facultative dans POSIX mais requise pour la marque UNIX sous SUS.
  • Certifiรฉ POSIX (programme de certification officiel). Indรฉpendamment des ยซ allรฉgations ยป, les produits peuvent รชtre officiellement certifiรฉs dans le cadre du programme ยซ POSIXโ„ข : Certifiรฉ par lโ€™IEEE et The Open Group ยป, qui est un processus dรฉfini pour lโ€™enregistrement et la validation des allรฉgations de conformitรฉ.
  • Certifiรฉ UNIXยฎ (au niveau de la marque dรฉposรฉe)Les systรจmes entiรจrement conformes et certifiรฉs ร  la spรฉcification UNIX unique peuvent utiliser la marque UNIXยฎ. Ce niveau de conformitรฉ, garanti par une marque dรฉposรฉe, est plus solide qu'une prise en charge de type POSIX.

Normes POSIX

POSIX n'est pas un document unique, mais un ensemble de normes connexes. Les anciens travaux sur POSIX ont รฉtรฉ publiรฉs sรฉparรฉment (API et outils/interprรฉteurs de commandes), tandis que la version moderne est maintenue sous la forme d'une spรฉcification consolidรฉe, rรฉguliรจrement mise ร  jour. Ces normes comprennent :

  • POSIX.1 (norme IEEE 1003.1)La norme de base qui dรฉfinit les API et les comportements fondamentaux du systรจme d'exploitation utilisรฉs par les applications (par exemple, les processus et les fichiers). I / O sรฉmantique) comme ยซ interface de systรจme dโ€™exploitation portable ยป de base.
  • POSIX.2 (IEEE Std 1003.2). La norme pour le interprรฉteur de commandes (shell) et commun les services publics, afin que les scripts puissent s'appuyer sur un langage shell et un comportement des outils cohรฉrents sur l'ensemble des systรจmes compatibles.
  • POSIX.1b (norme IEEE 1003.1b). Extensions temps rรฉel qui ajoutent des interfaces et une sรฉmantique standardisรฉes nรฉcessaires aux cas d'utilisation en temps rรฉel (par exemple, signaux temps rรฉel, horloges/minuteries, mรฉmoire partagรฉe, sรฉmaphores).
  • POSIX.1c (norme IEEE 1003.1c). Extensions de threads qui ont normalisรฉ le modรจle de threads POSIX (pthreads) afin que les programmes multithreadรฉs puissent รชtre portables sur diffรฉrents systรจmes.
  • Rรฉvisions unifiรฉes de POSIX.1 (รจre du groupe Austin)Les rรฉvisions ultรฉrieures regroupent les รฉlรฉments qui รฉtaient auparavant sรฉparรฉs en un seul ensemble de ยซ Spรฉcifications de base ยป (gรฉnรฉralement prรฉsentรฉ sous forme de volumes tels que Dรฉfinitions de base, Interfaces systรจme et Shell & Utilitaires) et le mettent ร  jour au fil du temps, par exemple : POSIX.1-2008, POSIX.1-2017, et le plus rรฉcent POSIX.1-2024 (Norme IEEE 1003.1-2024).

Avantages et limites de POSIX

POSIX assure la cohรฉrence des systรจmes de type UNIX en dรฉfinissant un ensemble commun d'interfaces systรจme et de comportements d'outils. Comprendre ses avantages et ses limites permet de dรฉterminer dans quels cas le choix de POSIX amรฉliore la portabilitรฉ et la maintenabilitรฉ, et dans quels cas des fonctionnalitรฉs ou extensions spรฉcifiques ร  la plateforme sont nรฉcessaires pour rรฉpondre ร  vos besoins.

Avantages POSIX

POSIX est prรฉcieux principalement parce qu'il standardise le comportement attendu du systรจme d'exploitation dont dรฉpendent de nombreuses applications et scripts, ce qui rรฉduit les rรฉรฉcritures spรฉcifiques ร  chaque plateforme et les surprises. Ses avantages sont les suivants :

  • Portabilitรฉ sur les systรจmes de type UNIXLe code รฉcrit pour les API POSIX (fichiers, processus, signaux, etc.) a plus de chances de compiler et de s'exรฉcuter sur diffรฉrents systรจmes d'exploitation avec des modifications minimales.
  • Comportement prรฉvisible du systรจmeLa standardisation de la sรฉmantique pour des รฉlรฉments tels que les descripteurs de fichiers, les codes de sortie, les permissions et la gestion des erreurs permet aux programmes de se comporter de maniรจre plus cohรฉrente dans diffรฉrents environnements.
  • Script et outil interopรฉrabilitรฉ. Un shell POSIX et des utilitaires standard permettent des scripts shell portables et des pipelines de commandes fiables sur diffรฉrentes distributions et fournisseurs.
  • Maintenance et prise en main simplifiรฉes. Une base commune rรฉduit les chemins de code conditionnels et les ยซ cas particuliers ยป, ce qui simplifie la maintenance des projets et facilite leur comprรฉhension par les nouveaux contributeurs.
  • Compatibilitรฉ รฉcosystรฉmique plus large. De nombreux environnements d'exรฉcution, systรจmes de construction et open-source Les outils adoptent un comportement de type POSIX, la prise en charge de POSIX amรฉliore donc la compatibilitรฉ avec les logiciels existants.
  • Neutralitรฉ du fournisseurPOSIX offre une cible stable qui รฉvite de contraindre les logiciels aux interfaces propriรฉtaires d'un seul fournisseur de systรจme d'exploitation.

Limitations POSIX

POSIX constitue une base utile, mais elle ne couvre pas l'ensemble des fonctionnalitรฉs des systรจmes modernes, et la conformitรฉ rรฉelle peut varier. Ses limitations incluent :

  • Ensemble de fonctionnalitรฉs du systรจme d'exploitation incomplet. POSIX se concentre sur les API et les outils de base, de sorte que de nombreux besoins pratiques (fonctionnalitรฉs rรฉseau avancรฉes, cadres de sรฉcuritรฉ modernes, primitives de conteneur, etc.) nรฉcessitent souvent des extensions non-POSIX.
  • Variation dans la conformitรฉ rรฉelleLes systรจmes peuvent diffรฉrer quant aux fonctionnalitรฉs optionnelles qu'ils implรฉmentent et dans leur comportement dans les cas limites ; par consรฉquent, ยซ de type POSIX ยป ne signifie pas toujours des rรฉsultats identiques partout.
  • Contraintes du plus petit dรฉnominateur communร‰crire strictement selon la norme POSIX peut signifier รฉviter des fonctionnalitรฉs spรฉcifiques ร  la plateforme qui pourraient amรฉliorer les performances, l'observabilitรฉ ou les fonctionnalitรฉs.
  • Diffรฉrences d'outillage hors normeMรชme lorsque les utilitaires existent partout, les implรฉmentations peuvent ajouter des indicateurs ou modifier les valeurs par dรฉfaut, de sorte que les scripts peuvent toujours dysfonctionner s'ils dรฉpendent d'options non POSIX (courantes avec sed, awk, tar, etc.).
  • La certification n'est pas universelleDe nombreux systรจmes prennent en charge POSIX de maniรจre gรฉnรฉrale sans certification formelle ; vous pourriez donc avoir besoin de tests et de vรฉrifications de compatibilitรฉ plutรดt que de vous fier ร  un label de conformitรฉ.
  • ร‰volution des attentes par rapport au rythme habituel. Les mises ร  jour standard, mais les plateformes et รฉcosystรจmes populaires peuvent รฉvoluer plus rapidement, c'est pourquoi les dรฉveloppeurs ciblent souvent en pratique ยซ POSIX + extensions de facto ยป.

POSIX est-il obsolรจte ?

POSIX n'est pas obsolรจte en tant que de baseBien qu'elle ne dรฉcrive pas toutes les fonctionnalitรฉs des systรจmes d'exploitation modernes, cette norme reste importante car elle normalise les processus de base, les entrรฉes/sorties de fichiers et le comportement des utilitaires et du shell sur lesquels repose une grande quantitรฉ de logiciels et d'outils systรจme. De plus, elle est activement maintenue et mise ร  jour par le groupe Austin, au lieu d'รชtre figรฉe dans le temps.

Ce qui peut donner l'impression que c'est ยซ vieux ยป, c'est que de nombreuses fonctionnalitรฉs importantes, telles que les API avancรฉes rรฉservรฉes ร  Linux, les frameworks spรฉcifiques ร  macOS, les modรจles de sรฉcuritรฉ modernes, les conteneurs et certaines fonctionnalitรฉs rรฉseau plus rรฉcentes, se trouvent en dehors de POSIX. Par consรฉquent, les projets rรฉels ciblent souvent ยซ POSIX plus extensions de plateforme ยป et valident le comportement par des tests au lieu de s'attendre ร  ce que la norme seule couvre tout.


Anastasie
Spasojevic
Anastazija est une rรฉdactrice de contenu expรฉrimentรฉe avec des connaissances et une passion pour cloud l'informatique, les technologies de l'information et la sรฉcuritรฉ en ligne. ร€ phoenixNAP, elle se concentre sur la rรฉponse ร  des questions brรปlantes concernant la garantie de la robustesse et de la sรฉcuritรฉ des donnรฉes pour tous les acteurs du paysage numรฉrique.