Posix

Ist Linux POSIX-kompatibel??

Ist Linux POSIX-kompatibel??

Software wird von zahlreichen Entwicklern mit unterschiedlichem Hintergrund geschrieben. Allgemeine Algorithmen sind unter einer freien Lizenz erhältlich oder wurden wissenschaftlich veröffentlicht, und sie können auch für Studienzwecke kostenlos zur Verfügung stehen. Daraus resultieren unterschiedliche Implementierungen und Softwareversionen, die unterschiedlichen Anforderungen gerecht werden. Eine Standardisierung von Schnittstellen und Datenformaten ist notwendig, um diese unterschiedlichen Implementierungen sowohl austauschbar als auch modular zu machen.

Kurz gesagt, POSIX [1] macht genau das für UNIX und UNIX-ähnliche Systeme (siehe Artikel von Zak H [4] für eine detailliertere Geschichte zu diesem Thema). Es definiert die Austauschschnittstellen, Aufrufmechanismen und übertragenen Daten für die Software, überlässt aber die interne Implementierung dem Entwickler oder Betreuer der Software. Ziel ist es, alle verschiedenen UNIX-Forks und UNIX-ähnlichen Systeme so zu vereinheitlichen, dass unterschiedliche Software-Implementierungen miteinander interagieren können. Der Hauptvorteil von POSIX besteht darin, dass für diese Komponenten - Schnittstellen, Mechanismen und Daten - eine verbindliche Dokumentation in schriftlicher Form vorliegt.

Ein Betriebssystem, das vollständig dem POSIX-Standard folgt, wird als POSIX-konform eingestuft. In diesem Artikel erklären wir, wofür POSIX steht, stellen fest, ob Linux zu dieser Kategorie gehört und listen auf, welche Linux-Komponenten von dieser Klassifizierung ausgenommen werden müssen.

Wofür steht der Begriff POSIX?

POSIX ist eine Abkürzung für Portable Operating System Interface. Wie oben kurz erläutert, ist POSIX der Name für eine Sammlung von Standards, die erforderlich sind, um die Kompatibilität zwischen Betriebssystemen aufrechtzuerhalten. Wie in [1] erwähnt, „definiert [es] die Anwendungsprogrammierschnittstelle (API) zusammen mit Befehlszeilen-Shells und Dienstprogrammschnittstellen für die Softwarekompatibilität mit Varianten von Unix und anderen Betriebssystemen.” Die erste Version von POSIX wurde 1988 veröffentlicht. Seitdem wurde POSIX von der Austin Common Standards Revision Group (auch einfach als The Austin Group bekannt) kontinuierlich erweitert und aktualisiert [7].

Ab 2021 enthält der POSIX-Standard folgende Teile:

  1. Kernleistungen (Enthält Standard ANSI C) (IEEE std 1003.1-1988) - Prozesserstellung und -steuerung, Signale, Datei- und Verzeichnisoperationen, Pipes, C-Bibliothek, E/A-Port-Schnittstelle und -Steuerung, Prozessauslöser
  1. Erweiterungen (Symbolische Links)
  2. Echtzeit- und I/O-Erweiterungen (IEEE-Standard 1003.1b-1993) - Prioritätsplanung, Echtzeitsignale, Uhren und Timer, Semaphoren, Message Passing, Shared Memory, asynchrone und synchrone E/A, Memory Locking Interface
  3. Thread-Erweiterungen (IEEE-Standard 1003.1c-1995) - Thread-Erstellung, -Steuerung und -Bereinigung, Thread-Planung, Thread-Synchronisierung, Signalverarbeitung
  4. Weitere Echtzeit-Erweiterungen
  5. Sicherheitserweiterungen (Zugriffskontrolllisten)
  1. Shell und Dienstprogramme (IEEE-Standard 1003.2-1992) -  Befehlsinterpreter, Dienstprogramme

Der Standard wird regelmäßig überprüft, um technische Änderungen und Verbesserungen widerzuspiegeln. Es kann manchmal mehrere Jahre dauern, bis eine neue Version veröffentlicht und die Änderungen eingearbeitet sind. Dies kann nachteilig sein, ist aber angesichts des Anwendungsbereichs der Norm verständlich.

In den letzten Jahren wurden Erweiterungen zur Echtzeitverarbeitung hinzugefügt. Die aktuelle Version wurde Anfang 2018 veröffentlicht [3]. Die Autoren von SibylFS [5] haben auch viele Anmerkungen zum POSIX-Standard veröffentlicht, um Logik und Interaktionen höherer Ordnung zu bestimmen.

Was bedeutet POSIX-konform zu sein??

Der Begriff „POSIX-konform“ bedeutet, dass ein Betriebssystem alle POSIX-Kriterien erfüllt. Ein Betriebssystem kann nativ UNIX-Programme ausführen oder eine Anwendung kann vom UNIX-System auf ein anderes System portiert werden. Die Portierung einer Anwendung von UNIX auf das Zielbetriebssystem ist einfach oder zumindest einfacher, als wenn sie POSIX nicht unterstützt. Sicherheitshalber sollte ein Betriebssystem die POSIX-Zertifizierung erfolgreich abgeschlossen haben [2]. Dieser Schritt wird (kostenpflichtig) durch das Bestehen eines automatisierten Zertifizierungstests erreicht. Die entsprechende Testsuite finden Sie hier [11].

Ab 2021 enthält die Liste der POSIX-zertifizierten Betriebssysteme AIX von IBM, HP-UX von HP, IRIX von SGI, EulerOS [6] von Huawei, Mac OS X von Apple (seit 10.5 Leopard), Solaris und QNX Neutrino von Oracle, Inspurs K-UX [11] und das Echtzeit-OS INTEGRITY von Green Hills Software [15]. Ob auch neuere Versionen der drei Solaris-Nachfolger OpenSolaris, Illumos und OpenIndiana als vollständig POSIX-konform eingestuft werden, ist derzeit unklar. Diese Betriebssysteme waren POSIX-kompatibel bis POSIX 2001.

Andere Betriebssysteme, die als größtenteils (aber nicht vollständig) POSIX-kompatibel angesehen werden, sind Android, BeOS, FreeBSD, Haiku, Linux (siehe unten) und VMWare ESXi. Für Microsoft Windows bietet Cygwin eine weitgehend POSIX-konforme Entwicklungs- und Laufzeitumgebung.

Ist Linux POSIX-kompatibel??

Der Begriff „Linux“ bezieht sich auf das gesamte Linux-Betriebssystem, unabhängig von der Geschmacksrichtung, wie zum Beispiel Debian GNU/Linux, RedHat Linux, Linux Mint, Ubuntu Linux, Fedora und CentOS. Um genau zu sein, Linux ist nur der Name des Kernels, der die Kernkomponente dieses kostenlosen Betriebssystems ist.

Wie Linus Torvalds im Buch „Just For Fun“ [8] beschrieben hat, verlangte er zur Entwicklung des Linux-Kernels eine Kopie des POSIX-Standards. Dies half ihm, die gleichen Mechanismen zu implementieren, die in kommerziellen UNIX-Systemen verwendet werden. Außerdem konnte er dadurch den Linux-Kernel mit den GNU-Tools verknüpfen, die im Wesentlichen dem gleichen Ansatz folgten. Um fair zu sein, wird die Software auf einem Linux-System aus einer Vielzahl von Quellen beigesteuert, die den POSIX-Standard respektieren, aber manchmal auch eigene Konzepte implementieren. Gleichzeitig zeigt dies aber auch die Vielfalt, die Linux als Betriebssystem ausmacht.

Ein Beispiel dafür ist die Schreibweise von Befehlszeilenargumenten. Argumente mit zwei Bindestrichen (e.G., „-help“) sind GNU-Konventionen, während POSIX-Befehle niemals Argumente mit zwei Bindestrichen verwenden, sondern nur ein einzelnes (e.G., "-Hilfe"). Linux wurde von Anfang an mit Blick auf GNU entwickelt, und deshalb enthalten die Befehle GNU-Stil

Argumente. Um die POSIX-Konformität zu erreichen, wurden schrittweise Argumente im POSIX-Stil hinzugefügt. Die endgültige Entscheidung liegt jedoch beim Entwickler. Heutzutage akzeptieren die meisten Befehle sowohl kurze als auch lange Argumente oder sogar Argumente ohne Bindestriche, wie zum Beispiel der Befehl „find“. Um fair zu sein, gibt es keine Konsistenz zwischen den Befehlen auf einem System, und dies kann ein Problem sein, wenn Sie denselben Befehl auf einem anderen UNIX-basierten System verwenden möchten, insbesondere beim Wechsel zwischen Linux, OS X und Solaris switching.

Linux ist aufgrund hoher Kosten vorerst nicht POSIX-zertifiziert, mit Ausnahme der beiden kommerziellen Linux-Distributionen Inspur K-UX [12] und Huawei EulerOS [6]. Stattdessen wird Linux als weitgehend POSIX-kompatibel angesehen.

Diese Einschätzung ist darauf zurückzuführen, dass große Linux-Distributionen der Linux Standard Base (LSB) statt POSIX folgen [9]. LSB zielt darauf ab, „die Unterschiede zwischen einzelnen Linux-Distributionen zu minimieren“ [14]. Dies bezieht sich auf die Softwaresystemstruktur, einschließlich des im Linux-Kernel verwendeten Filesystem Hierarchy Standard (FHS). LSB basiert auf der POSIX-Spezifikation, der Single UNIX Specification (SUS) [10] und mehreren anderen offenen Standards, erweitert diese aber auch in bestimmten Bereichen.

Zu den LSB-basierten Linux-Distributionen gehören RedHat Linux, Debian GNU/Linux (2002-2015) und Ubuntu (bis 2015), um nur einige zu nennen.

Entwickeln mit POSIX im Hinterkopf

Um POSIX genauer zu verstehen, empfehlen wir, sich eine Kopie des POSIX-Standards zu besorgen und vollständig zu lesen. Sie können das Buch von der Open Group-Website beziehen. Dies erfordert eine Registrierungsgebühr, gibt Ihnen jedoch vollen Zugriff auf diese wertvolle Ressource. Standards helfen, da sie es ermöglichen, Software so zu entwickeln, dass sie sich auf allen UNIX-Plattformen gleich verhält.

Links und Referenzen

Danke

Der Autor dankt Axel Beckert und Veit Schiele für ihre Hilfe und Ratschläge bei der Erstellung dieses Artikels.

Top 5 ergonomische Computermaus-Produkte für Linux
Verursacht längere Computernutzung Schmerzen im Handgelenk oder in den Fingern?? Leiden Sie unter steifen Gelenken und müssen ständig die Hände schütt...
So ändern Sie die Maus- und Touchpad-Einstellungen mit Xinput in Linux
Die meisten Linux-Distributionen werden standardmäßig mit der Bibliothek „libinput“ ausgeliefert, um Eingabeereignisse auf einem System zu verarbeiten...
Weisen Sie Ihre Maustasten mit der X-Mouse Button Control für verschiedene Software unterschiedlich zu
Vielleicht benötigen Sie ein Tool, mit dem sich die Steuerung Ihrer Maus bei jeder von Ihnen verwendeten Anwendung ändern kann. In diesem Fall können ...