Software wird von zahlreichen Entwicklern mit unterschiedlichem Hintergrund geschrieben. Allgemeine Algorithmen sind im Rahmen einer kostenlosen Lizenz verfügbar oder wurden wissenschaftlich veröffentlicht. Sie können auch kostenlos für Studienzwecke kostenlos verfügbar sein. Dies führt zu verschiedenen Implementierungen und Softwareversionen, die eine Vielzahl von Anforderungen entsprechen. Eine Standardisierung von Schnittstellen und Datenformaten ist erforderlich, 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 Exchange -Schnittstellen, die aufgerufenen Mechanismen und übertragen Daten für die Software, überlassen jedoch die interne Implementierung dem Entwickler oder Inhaber der Software. Ziel ist es, alle verschiedenen Unix-Gabeln und Unix-ähnlichen Systeme so zu vereinen, dass verschiedene Software-Implementierungen miteinander interagieren können. Der Hauptvorteil von POSIX besteht darin, eine Bindungsdokumentation für diese Komponenten zu haben - Schnittstellen, Mechanismen und Daten - in schriftlicher Form verfügbar.
Ein Betriebssystem, das dem POSIX-Standard in seiner Gesamtheit folgt. In diesem Artikel erklären wir, wofür POSIX steht, feststellen, ob Linux zu dieser Kategorie gehört, und listen auf, welche Linux -Komponenten von dieser Klassifizierung ausgeschlossen werden müssen.
Wofür steht der Begriff POSIX für?
POSIX ist eine Abkürzung für die tragbare Betriebssystemschnittstelle. Wie oben kurz erläutert, ist POSIX der Name für eine Sammlung von Standards, die zur Aufrechterhaltung der Kompatibilität zwischen Betriebssystemen erforderlich sind. Wie in [1] angegeben, definiert [es] die Anwendungsprogrammierschnittstelle (API) zusammen mit Befehlszeilenschalen und Nutzschnittstellen für 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 Austin -Gruppe) kontinuierlich erweitert und aktualisiert [7].
Ab 2021 enthält der POSIX -Standard die folgenden Teile:
Der Standard wird regelmäßig überprüft, um technische Änderungen und Verbesserungen widerzuspiegeln. Es kann manchmal einige Jahre dauern, bis eine neue Version veröffentlicht wird und die Änderungen einbezogen werden. Dies kann nachteilig sein, ist aber angesichts des Rahmens des Standards 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 es, posix-konforme zu sein??
Der Begriff „posix-konforme“ bedeutet, dass ein Betriebssystem alle POSIX-Kriterien erfüllt. Ein Betriebssystem kann UNIX -Programme nativ ausführen, oder eine Anwendung kann vom UNIX -System auf ein anderes System portiert werden. Das Portieren einer Anwendung von UNIX auf das Zielbetriebssystem ist einfach oder zumindest einfacher, als wenn sie POSIX nicht unterstützt. Um auf der sicheren Seite zu sein, sollte ein Betriebssystem die POSIX -Zertifizierung erfolgreich erreicht haben [2]. Dieser Schritt wird (zu Kosten) durch Absetzung eines automatisierten Zertifizierungstests erreicht. Die entsprechende Testsuite finden Sie hier [11].
Ab 2021 enthält die Liste der posix-zertifizierten Betriebssysteme AIX aus IBM, HP-UX von HP, Irix von SGI, Euleros [6] von Huawei, Mac OS X aus Apple (seit 10.5 Leopard), Solaris und QNX Neutrino von Oracle, Inspur's K-UX [11] und die Echtzeit-Betriebssystemintegrität von Green Hills Software [15]. Derzeit ist unklar, ob neuere Versionen der drei Solaris-Nachfolger OpenSolaris, Illumos und Openindiana ebenfalls als vollständig posix-konform eingestuft werden. Diese Betriebssysteme waren bis zu Possix 2001 posix-konform.
Andere Betriebssysteme, die als meist (aber nicht vollständig) posix-konform angesehen werden. Für Microsoft Windows bietet Cygwin eine weitgehend posix-konforme Entwicklungs- und Laufzeitumgebung.
Ist Linux pox-konform?
Der Begriff „Linux“ bezieht sich auf das gesamte Linux -Betriebssystem, unabhängig vom Geschmack, wie Debian GNU/Linux, Redhat Linux, Linux Mint, Ubuntu Linux, Fedora und CentOS, zum Beispiel. Um genau zu sein, ist Linux nur der Name des Kernels, der die Kernkomponente dieses freien Betriebssystems ist.
Wie Linus Torvalds im Buch „Just for Fun“ [8] beschrieben hat, um den Linux -Kernel zu entwickeln, forderte er eine Kopie des POSIX -Standards an. Dies half ihm, die gleichen Mechanismen zu implementieren, die in kommerziellen UNIX -Systemen verwendet werden. Darüber hinaus ermöglichte es ihm, den Linux -Kernel mit den GNU -Tools zu verbinden, die hauptsächlich dem gleichen Ansatz folgten. Um fair zu sein, wird die Software auf einem Linux -System aus einer Vielzahl von Quellen beigetragen, die den POSIX -Standard respektieren, aber manchmal auch ihre eigenen Konzepte implementieren. Gleichzeitig zeigt dies jedoch auch die Vielfalt, die Linux als Betriebssystem ausmacht.
Ein Beispiel hierfür ist die Art und Weise, wie Befehlszeilenargumente geschrieben werden. Argumente mit zwei Strichen (e.G., "-Help") sind GNU-Konventionen, während POSIX-Befehle niemals Zwei-Dash-Argumente verwenden, sondern nur eine einzige (e).G., "-Hilfe"). Von Anfang an wurde Linux mit Blick auf GNU entworfen, und deshalb enthalten die Befehle den GNU-Stil
Argumente. Um POSIX Compliance zu erreichen, wurden Argumente im POSIX-Stil Schritt für Schritt hinzugefügt. Dennoch wird der Entwickler die endgültige Entscheidung getroffen. Bis heute akzeptieren die meisten Befehle sowohl kurze als auch lange Argumente oder sogar Argumente ohne Striche, wie zum Beispiel den Befehl „Find“. Um fair zu sein, gibt es keine Konsistenz zwischen den Befehlen auf einem System, und dies kann ein Problem sein, wenn Sie beabsichtigen, denselben Befehl für ein anderes UNIX-basiertes System zu verwenden, insbesondere beim Wechsel zwischen Linux, OS X und Solaris.
Derzeit ist Linux aufgrund der hohen Kosten nicht posix-zertifiziert, mit Ausnahme der beiden kommerziellen Linux-Verteilungen Inspirur K-UX [12] und Huawei Euleros [6]. Stattdessen wird Linux als größtenteils posix-konform angesehen.
Diese Bewertung ist darauf zurückzuführen, dass die Hauptlinux -Verteilungen der Linux Standard Base (LSB) anstelle von POSIX folgen [9]. LSB zielt „um die Unterschiede zwischen einzelnen Linux -Verteilungen zu minimieren“ [14]. Dies bezieht sich auf die Softwaresystemstruktur, einschließlich des im Linux -Kernel verwendeten Dateisystemhierarchiestandard (FHS). LSB basiert auf der POSIX -Spezifikation, der einzelnen Unix -Spezifikation (SUS) [10] und mehreren anderen offenen Standards, erweitert sie aber auch in bestimmten Bereichen.
LSB-basierte Linux-Verteilungen umfassen Redhat Linux, Debian GNU/Linux (2002-2015) und Ubuntu (bis 2015), um nur einige zu nennen.
Entwicklung mit posix im Sinn
Um POSIX genauer zu verstehen, empfehlen wir, eine Kopie des POSIX -Standards zu erhalten und sie vollständig zu lesen. Sie können das Buch von der Open Group -Website erhalten. Dies erfordert eine Registrierungsgebühr, erhalten jedoch vollen Zugriff auf diese wertvolle Ressource. Standards helfen, da Sie Software so entwickeln können, dass sie sich auf allen Unix -Plattformen auf die gleiche Weise verhält.
Links und Referenzen
Danke
Der Autor bedankt sich bei Axel Beckert und Veit Schiele für seine Hilfe und Ratschläge, während er diesen Artikel vorbereitet.