POSIX: Ein Überblick
Das Portable Operating System Interface (POSIX) ist ein IEEE-Standard, der die Kompatibilität und Portabilität zwischen Betriebssystemen unterstützt. Theoretisch sollte POSIX-konformer Quellcode nahtlos portierbar sein. In der realen Welt stößt der Anwendungsübergang oft auf systemspezifische Probleme. Aber die POSIX-Konformität macht es einfacher, Anwendungen zu portieren, was zu Zeiteinsparungen führen kann. Entwickler sollten sich daher mit den Grundlagen dieses weit verbreiteten Standards vertraut machen.
Geschichte von POSIX
Frühe Programmierer mussten ihre Anwendungen für jedes neue Computermodell von Grund auf neu schreiben. Aber das IBM System/360 hat das geändert. 1964 wurde das Betriebssystem OS/360 . eingeführt. IBM begann, dieselbe Hardwarearchitektur zu verwenden, damit die neuen Modelle dasselbe Betriebssystem wiederverwenden können. Das Vorhandensein eines gemeinsamen Betriebssystems auf mehreren Computern bildet die erste Stufe für die Portabilität von Anwendungen.
In den späten 1960er Jahren eröffnete die Einführung von UNIX neue Möglichkeiten. Die Bell Labs von AT&T waren für die anfängliche Entwicklung dieses neuen Betriebssystems verantwortlich. Es könnte auf Maschinen von mehreren Anbietern laufen run. Aber UNIX begann sich in verschiedene Geschmacksrichtungen zu teilen. Neben dem System V von AT&T gab es Berkeley Software Distribution (BSD), Xenix und mehr. Es war nicht einfach, diese Geschmacksrichtungen zu portieren. Das Versprechen der Portabilität der Anwendung ist auf der Straße angekommen. In den kommenden Jahrzehnten würde die Einführung neuer Betriebssysteme die Portierung von Anwendungen über Hardware, Betriebssysteme und Anbieter hinweg nur noch komplexer machen.
Der POSIX-Standard wurde in den 1980er Jahren entwickelt, um das Portabilitätsproblem zu lösen. Der Standard wurde basierend auf System V und BSD Unix definiert. POSIX definiert nicht das Betriebssystem, es definiert nur die Schnittstelle zwischen einer Anwendung und einem Betriebssystem. Die Programmierer haben die Freiheit, ihr Betriebssystem und ihre Anwendung so zu schreiben, wie sie wollen, solange die Schnittstelle zwischen beiden berücksichtigt wird. Da POSIX unabhängig von Hardware, Betriebssystem oder Anbieter ist, ist es einfacher, die Anwendungsportabilität zu erreichen.
Der erste POSIX-Standard wurde 1988 veröffentlicht. Formal hieß es IEEE Standard 1003.1-1988 tragbare Betriebssystemschnittstelle für Computerumgebungen“. 1990 wurde eine internationale Version des gleichen Standards mit leichten Abweichungen als ISO/IEC 9945-1:1990 herausgegeben Informationstechnologie - Portable Operating System Interface (POSIX) - Part 1: System Application Program Interface (API).
Ursprünglich war POSIX in mehrere Standards unterteilt:
POSIX.1: Kernleistungen
POSIX.1b: Echtzeit-Erweiterungen
POSIX.1c: Thread-Erweiterungen
POSIX.2: Shell und Dienstprogramme
Nach 1997 brachte die Austin Group den gesamten Standard unter einem Dach zusammen. Seitdem sind die Versionen POSIX.1-2001 (auch bekannt als IEEE Std 1003.1-2001), POSIX.1-2004 (auch bekannt als IEEE Std 1003.1-2004) und POSIX.1-2008 (auch bekannt als IEEE Std 1003.1-2008) wurden veröffentlicht.
Beispiele einiger POSIX-kompatibler Systeme sind AIX, HP-UX, Solaris und MacOS (seit 10.5 Leopard). Auf der anderen Seite Android, FreeBSD, Linux-Distributionen, OpenBSD, VMWare usw., folgen den meisten POSIX-Standards, sind aber nicht zertifiziert.
Grundlagen von POSIX
POSIX.1-2008 Standard behandelt vier Hauptbereiche:
- Basis-Definitionsvolumen: Allgemeine Begriffe, Konzepte und Schnittstellen.
- Systemschnittstellen Volumen: Definitionen von Systemdienstfunktionen und Unterprogrammen. Beinhaltet auch Portabilität, Fehlerbehandlung und Fehlerbehebung.
- Shell- und Utilities-Volumen: Definition von Schnittstellen beliebiger Anwendungen zu Kommando-Shells und gängigen Dienstprogrammen.
- Begründung Volumen: Enthält Informationen und Historie zu hinzugefügten oder verworfenen Funktionen und die Begründung der Entscheidungen.
Der Standard deckt keine grafischen Schnittstellen, Datenbankschnittstellen, Objekt-/Binärcode-Portabilität, Systemkonfigurationen, E/A-Überlegungen oder Ressourcenverfügbarkeit ab.
Einige der Leitprinzipien des POSIX-Designs sind:
- POSIX wurde entwickelt, um die Portabilität von Anwendungen zu vereinfachen. Also nicht nur für UNIX-Systeme systems. Nicht-UNIX-Systeme können auch POSIX-kompatibel sein.
- Der Standard schreibt nicht die Entwicklung der Anwendung oder des Betriebssystems vor. Es definiert nur den Vertrag zwischen ihnen.
- POSIX-konformer Anwendungsquellcode sollte auf vielen Systemen lauffähig sein, da der Standard auf Quellcodeebene definiert ist. Der Standard garantiert jedoch keine Portabilität auf Objekt- oder Binärcode-Ebene. Daher läuft die ausführbare Binärdatei möglicherweise nicht einmal auf ähnlichen Maschinen mit identischer Hardware und Betriebssystemen. Im Standard wird nur die Portabilität des Quellcodes angesprochen.
- POSIX ist in Standard C . geschrieben. Aber Entwickler können es in jeder beliebigen Sprache implementieren.
- Der Standard behandelt nur Aspekte des Betriebssystems, die mit Anwendungen interagieren.
- Die Norm ist in der Länge prägnant und im Umfang breit gehalten, um eine Vielzahl von Systemen abzudecken.
- POSIX wurde entwickelt, um die Portabilität zu vereinfachen. So spart es auf lange Sicht Zeit und Geld. Wenn Ihre Anwendungen jedoch nicht POSIX-kompatibel sind, kann dies zu Beginn einen erheblichen Zeit- und Ressourcenaufwand erfordern.
POSIX-Anwendungsentwicklung
Der Zweck von POSIX war es, die Portabilität zu verbessern. Wenn Ihr Quellcode dem Standard entspricht, können Sie den Code einfach kompilieren und auf einem anderen Computer ausführen. Wenn POSIX jedoch als allgemeine Anforderung für eine Anwendung definiert ist, kann dies zu Verwirrung führen. Der vollständige POSIX-Standard umfasst über 4000 Seiten mit mehr als 1350 Schnittstellen. Es macht keinen Sinn alles umzusetzen implement. Jedes Projekt sollte daher die Aspekte von POSIX definieren, die bestimmten Anforderungen gerecht werden.
Es gibt Missverständnisse in der Entwicklergemeinschaft, dass der POSIX-Standard alt und irrelevant ist. Es ist nicht wahr. POSIX ist ein lebendes Dokument, das regelmäßig von der Austin Group aktualisiert wird. Jeder kann der Gruppe beitreten und sich an der Verbesserung des Standards beteiligen. Der Standard wird in heutigen Servern, Workstations, Routern, mobilen Geräten, eingebetteten Systemen und mehr aktiv eingesetzt. Es wird für UNIX- und Linux-Rechner verwendet.
Entwickler sollten sich jedoch bewusst sein, dass der POSIX-Standard Probleme hat. Sie können jeden Fehler, den Sie entdecken, an die Austin Group melden und er wird für die nächste Überarbeitung geprüft.
Fazit
POSIX mag auf den ersten Blick entmutigend erscheinen. Dennoch sollten sich Anwendungsentwickler mit den Grundlagen vertraut machen, da sie von Zeit zu Zeit als Anforderung auftauchen. Aufgrund des großen Umfangs der Norm ist es nicht möglich, Experte für das gesamte Dokument zu werden. Entwickler können sich an die UNIX- und Linux-Communitys wenden, um mehr zu erfahren. Die Communities können Ihre Fragen beantworten und Ihnen ein besseres Gefühl dafür geben, welcher Teil des Standards für Ihr Projekt relevant ist.
Weitere Studie:
- Vollständiges POSIX-Dokument
- POSIX-FAQ
- Die Austin Common Standards Revision Group
Verweise:
- POSIX-FAQ, Austin Group
- Austin-Gruppe
- Dokument 7542098/
- Konzepte für POSIX- und UNIX-Systemdienste
- OpenGroup-Dokument 9699919799
- Was ist POSIX?, Universität von Indiana
- Standards Docs @ open-std.org
- Bill Gallmeister, Posix-Programmierleitfaden
- POSIX-Programmierhandbuch, Donald Lewine
- StackOverflow Was ist Posix?
- Geschichte von Uniux, darwinsys.com
- Austin Open Group, Posix-Papier
- Wikipedia-POSIX