Single UNIX Specification

Standards für Betriebssysteme der UNIX-Familie incl. POSIX
(Weitergeleitet von Single Unix Specification)

Die Single UNIX Specification (SUS, deutsch ‚alleinige UNIX-Spezifikation‘) bezeichnet eine Zusammenstellung von Standards für Betriebssysteme der Unix-Familie. Die SUS besteht aus zwei Hauptteilen, den Base Specifications (besser bekannt als POSIX) und (X/Open) Curses.[1] Die Base Specifications werden gegenwärtig von der Austin Group entwickelt und aktualisiert.

„UNIX“ in Großbuchstaben oder Kapitälchen ist als eingetragene Wortmarke der The Open Group ein geschützter Begriff. Ausschließlich Systeme, die als SUS-konform zertifiziert wurden, dürfen diese Wortmarke verwenden. Ähnlich einer TÜV-Plakette – die aufzeigt, dass sichergestellt wurde, dass ein Fahrzeug bestimmte technische Merkmale und Verhaltensweisen (nicht) aufweist – zeigen „offizielle Kennzeichen“ die Konformität bzw. den Grad der Kompatibilität zur Spezifikation und somit die Interoperabilität von Betriebssystemen an. Historische Systeme mit „UNIX“ im Namen, die zu früheren Zeiten veröffentlicht wurden, jetzt aber nicht neu auf den Markt kommen, sind davon unberührt.

Geschichte

Bearbeiten

Die Standardisierung als UNIX ist an die Geschichte von Unix selbst gebunden. Das ursprüngliche UNIX-Betriebssystem wurde 1969 in den Bell Labs entwickelt und mitsamt Quelltext veröffentlicht. Auf diesem beruhten erste Ableitungen. In den späten 1970er und frühen 1980er Jahren entstanden jedoch immer mehr Systeme, die nicht mehr mit dem Original kompatibel waren, mit inkompatiblen Änderungen oder Erweiterungen, so dass Applikationen nicht mehr auf allen unixähnlichen Betriebssystemen liefen bzw. kompilierfähig waren.

Im Jahr 1985 bildete sich eine Arbeitsgruppe beim IEEE, um einen definierten Mindeststandard für UNIX-Systeme zu definieren. Der 1988 veröffentlichte IEEE-Standard 1003 zum Portable Operating System Interface for UNIX wurde hernach mit der Abkürzung POSIX (retronym „POSIX.1“) bekannt. Dieser Name wurde von Richard Stallman geprägt, um eine Bezeichnung für die Standards zu schaffen, die man sich auch merken konnte.

POSIX bestand zunächst aus einem einzigen Dokument zur wesentlichen Programmierschnittstelle, wuchs dann aber nach und nach zu 19 Dokumenten heran (POSIX.1, POSIX.2 etc.). Die Standards zur Benutzer-Befehlszeile und zur Scripting-Schnittstelle basieren auf der Shell von UNIX System V.

Die X/Open-Gruppe, ein Konsortium von Herstellern unixähnlicher Betriebssysteme, hatte parallel eine Testspezifikation entwickelt, um die Kompatibilität für ihre Mitglieder sicherzustellen. 1984 gab sie den ersten X/Open Portability Guide (XPG) heraus. Die dritte Version, der XPG3, hatte 1988 dann das Ziel, eine Konvergenz mit den POSIX-Spezifikationen herbeizuführen. Das letzte Update ist 1992 die XPG4. 1993 erwarb diese X/Open-Gruppe die Rechte an der Wortmarke „UNIX“ in Großbuchstaben von Novell, sodass die Möglichkeit entstand, die Marke für diese Standards zu verwenden.

In den folgenden Jahren ging man daran, einen allgemeingültigen hersteller­übergreifenden UNIX-Standard zu entwickeln. Dies führte auch zum Zusammenschluss der X/Open-Gruppe mit der Open Software Foundation (OSF, ein weiterer Herstellerverband unixähnlicher Systeme) zur Open Group im Jahr 1996. Bis dato konkurrierten mehrere Standards, die „Single UNIX Specification“ (‚alleinige UNIX-Spezifikation‘) sollte dem Abhilfe schaffen und der Titel verdeutlicht dies.

Die erste SUS-Fassung von 1995, auch als UNIX 95 bezeichnet, basiert dabei noch im Wesentlichen auf der XPG4-Spezifikation. Mit der zweiten Fassung, UNIX 98 von 1998, bei der die 64-Bit-Erweiterung heraussticht, wurde ohne XPG-Referenz herausgegeben.

Die Arbeitsgruppen der Hersteller und die Arbeitsgruppen beim IEEE, die sich schon vorher personell überschnitten, wurden 1998 organisatorisch zusammengelegt. Die SUS hatte sich in der Zwischenzeit als wesentliche Standardreferenz und ein Industriestandard entwickelt, auch weil diese Spezifikation frei erhältlich war, im Gegensatz zu den Dokumenten des IEEE. Die Austin Group[2] entwickelt seitdem sowohl die SUS als auch POSIX weiter, was 2003 zu UNIX 03 alias SUS Version 3 führt. Die POSIX 2004 edition berücksichtigt die zwei Korrektursätze Technical Corrigendum 1 und Technical Corrigendum 2 für die Erarbeitung der SUS Version 4.

Die Weiterentwicklung in der Austin Group führt zu den Open Group Base Specifications, Issue 7 respektive POSIX.1 2008 edition, die Teil der Single UNIX Specification, Version 4 werden. Mit dem Technical Corrigendum 1 werden diese fortgeschrieben, veröffentlicht als POSIX.1 2013 edition. Der zugehörige IEEE Std 1003.1 wird auch international als ISO/IEC 9945:2009 und darauffolgend ISO/IEC 9945:2009/Cor 1:2013(E) anerkannt. Für die Single UNIX Specification, Version 4, 2012 Edition wurde neues Markenzeichen UNIX V7 herausgegeben[3], das nicht mit dem älteren Unix Version 7 verwechselt werden sollte (siehe auch Abschnitt Linux und die SUS). Herausragendes Merkmal der Ausgabe 2012 sind Updates für ein Internationalisierung.

Im September 2016 wurde das Technical Corrigendum 2 veröffentlicht, das in die IEEE Std 1003.1, 2016 Edition eingeflossen ist. Entsprechend gibt es auch eine Single UNIX Specification, Version 4, 2016 Edition. Auch diese zweite Korrektur zählte dabei als POSIX.1 2008. Im Januar 2018 wurde die 2018 Edition herausgegeben, kurz T101. Diese enthält keine technischen Neuerungen zum Stand von 2016, reflektiert jedoch administrative Anpassungen zur Herausgabe der SUSv4 als POSIX.1 2017, alias IEEE Std 1003.1-2017 und ISO/IEC 9945:2009/Cor 2:2017(E).[4]

Konforme Systeme

Bearbeiten

Kennzeichen für konforme Systeme

Bearbeiten

Es gibt drei offizielle Kennzeichen (official marks) zur Kennzeichnung SUS-konformer Systeme:

  • UNIX V7 – für Systeme, die Version 4 der SUS erfüllen (vollständige Einhaltung, einschließlich Corrigenda)[5]
  • UNIX 03 – für Systeme, die Version 3 der SUS erfüllen (vollständige Einhaltung)
  • UNIX 98 – für Systeme, die Version 2 der SUS erfüllen (partielle Einhaltung)

Ältere UNIX-Standards (überholt):

  • UNIX 95 – Kompatibilität noch akzeptabel für einfachere Software-Subsysteme
  • UNIX 93 – gänzlich überholt

Liste konformer Systeme

Bearbeiten

Betriebssysteme, deren Konformität zur Spezifikation zertifiziert wurde und daher als UNIX bezeichnet werden dürfen:

  • Solaris 11.4+ auf x86- und SPARC-Systemen[6]
  • AIX 5L V5.2 mit einigen Updates, AIX 5L V5.3;
  • EulerOS 2.0, eine kommerzielle Linux-Distribution, auf dem „KunLun Mission Critical Server“ von Huawei – bis 2022[7] (die Zertifizierung wurde nicht erneuert);
  • HP-UX 11i V3 Release B.11.31;
  • Inspur K-UX 2.0 und 3.0, eine kommerzielle Linux-Distribution, auf Inspur-TS-K1-Systemen (x86_64-Architektur[8]) – bis 2019[9] (die Zertifizierung wurde nicht erneuert);
  • macOS ab 10.5 bzw. Leopard, auf „Intel-Macs[10][11][12][13] (anfangs 32- und 64-Bit, seit Mountain Lion, 10.8, ausschließlich x64) und „Apple Silicon“ bzw. „Arm-Macs“ (seit Big Sur, ARM64)[14]
  • Solaris 10 auf x86- und SPARC-Systemen (32- und 64-Bit);
  • z/OS 1.9 von IBM; IBM kündigte am 28. September 2007 an, dass z/OS 1.9 die UNIX 03-Spezifikation „besser erfüllen“ werde, welcher Grad der Kompatibilität damit gemeint war, ist unklar.[15]
  • AIX 5L V5.2;
  • Solaris 8 und 9 auf 32-Bit x86- und SPARC-Systemen sowie auf 64-Bit-SPARC-Systemen;
  • Tru64 UNIX V5.1A und neuer;

Linux und die SUS

Bearbeiten

Vor dem Erscheinen der SUSv3 im Dezember 2001 wurden von Linux-Distributoren häufig die hohen Kosten als Grund für eine fehlende Zertifizierung angeführt. Daher wurde von der Open Group eine Zertifizierung zu einem symbolischen Preis zugesichert. Das Zertifizierungsverfahren, bei dem OpenGroup-Mitglieder aktiv mithalfen, machte zu Beginn gute Fortschritte, wurde jedoch 2005 wegen unüberbrückbarer Differenzen zwischen der Linux Standard Base (LSB) und der Open Group abgebrochen. Linux-Distributionen, die sich vorrangig an der LSB orientieren, sind deshalb bis auf weiteres nicht vollständig SUSv3-konform.[17]

Versionierung

Bearbeiten

Schon das erste Unix wurde in der Programmiersprache C entwickelt. Alle unixartigen Betriebssysteme zeigen ihre Kompatibilität mit den Unix-Standards durch #define Konstanten, und soweit andere Betriebssysteme eine Zusatzbibliothek anbieten, finden sich diese Konstanten auch dort.

Im Rahmen der POSIX-Spezifikation richten sich die Versionen nach dem Datum der Revision. Das Betriebssystem meldet seine Kompatibilität durch _POSIX_VERSION, während ein Programm die erwartete API durch Definition von _POSIX_C_SOURCE[note 1] meldet.

  • _POSIX_VERSION 198808L für POSIX.1-1988
  • _POSIX_VERSION 199009L für POSIX.1-1990
  • _POSIX_VERSION 199506L für POSIX.1-1996
  • _POSIX_VERSION 200112L für POSIX.1-2001
  • _POSIX_VERSION 200809L für POSIX.1-2008 und POSIX.1-2017[18]

Anstatt der POSIX-Macros können auch die XPG/XOPEN-Macros verwendet werden, deren Wert die Basis-Generation angibt. Die Generationen XPG3 und früher sind in Programmquellen ungebräuchlich. Das Betriebssystem meldet seine Kompatibilität durch _XOPEN_VERSION, während ein Programm die erwartete API durch Definition von _XOPEN_SOURCE[note 2] meldet.

  • _XOPEN_VERSION 400 - X/Open Portability Guide release 4 (XPG4)
  • _XOPEN_VERSION 420 - X/Open Portability Guide for UNIX95
  • _XOPEN_VERSION 500 - X/Open 5, äquivalent POSIX 1995
  • _XOPEN_VERSION 520 - X/Open Portability Guide for UNIX98
  • _XOPEN_VERSION 600 - X/Open 6, äquivalent POSIX 2004
  • _XOPEN_VERSION 700 - X/Open 7, äquivalent POSIX 2008 / 2017

Für die SUS-Version selbst gibt es keine eigenständigen Macros, sondern die Single Unix Specification verzeichnet die dargestellten Werte.[19] Da traditionell (vor der Austin Group) die POSIX-Spezifikation weniger umfangreich war als die XSI-Spezifikation (X/Open System Interface), ignorieren einige Unix-Systeme den POSIX_SOURCE-Wert, wenn ein XOPEN_SOURCE-Wert angegeben ist.[20] Mit SUSv4 / POSIX.1-2008 wurde dieses Verhalten als Standard festgelegt.[18]

Siehe auch

Bearbeiten

Einzelnachweise

Bearbeiten
  1. https://publications.opengroup.org/standards/unix/t101
  2. http://www.unix.org/unix/version3/overview.html
  3. https://www2.opengroup.org/ogsys/catalog/x1201
  4. SINGLE UNIX® SPECIFICATION, VERSION 4, 2018 EDITION, REFERENCE: T101. The Open Group, 31. Januar 2018;.
  5. http://www.unix.org/unixv7.html
  6. The Open Group: Oracle Corporation – UNIX V7. In: The Open Brand Register. The Open Group, 10. April 2018, abgerufen am 2. September 2018 (englisch).
  7. UNIX 03. In: The Open Brand Register – Huawei Technology Co., Ltd. Open Group, 8. September 2016, abgerufen am 24. Januar 2023 (englisch).
  8. Inspur Conformance Statement. Open Group, abgerufen am 30. September 2022 (englisch).
  9. UNIX 03. In: The Open Brand Register – Inspur Co., Ltd. Open Group, 8. September 2016, abgerufen am 30. September 2022 (englisch).
  10. Mac OS X Leopard - Technology - UNIX. In: Leopard Technology Overview. Apple Inc., abgerufen am 11. Juni 2007: „Leopard is now an Open Brand UNIX 03 Registered Product, conforming to the SUSv3 and POSIX 1003.1 specifications for the C API, Shell Utilities, and Threads.“
  11. The Open Group: Mac OS X Version 10.5 Leopard on Intel-based Macintosh computers certification. Abgerufen am 12. Juni 2007.
  12. The Open Group: Mac OS X Version 10.13 High Sierra on Intel-based Macintosh computers certification. Abgerufen am 12. Dezember 2017 (englisch).
  13. http://www.opengroup.org/openbrand/register/apple.htm
  14. The Open Group: macOS version 11.0 Big Sur on Apple silicon-based Mac computers certification. Abgerufen am 2. Dezember 2020 (englisch).
  15. Preview: IBM z/OS V1.9 advanced infrastructure solutions for your business needs. (PDF; 112 kB) IBM, 6. Februar 2007, S. pp. 4, 15, abgerufen am 11. Juni 2007.
  16. Solaris 2.5.1 (Memento vom 12. September 2005 im Internet Archive)
  17. Letzter Bericht über notwendige Änderungen an Linux zur SUSv3 Kompatibilität durch Andrew Josey
  18. a b Open Group Base Specifications Issue 7, 2008 edition. The Open Group, abgerufen am 29. August 2018 (The _POSIX_C_SOURCE Feature Test Macro): „Note that the definition of _XOPEN_SOURCE with the value 700 makes the definition of _POSIX_C_SOURCE redundant and it can safely be omitted.“
  19. unistd - standardisierte Konstanten und Typen für Unix (SUSv4). The Open Group, abgerufen am 16. Januar 2016 (Version Test Macros).
  20. http://www.gnu.org/software/libc/manual/html_node/Feature-Test-Macros.html

Hinweise:

  1. es geht auch _POSIX_SOURCE, jedoch wird das ignoriert, wenn _POSIX_C_SOURCE verwendet wird
  2. unterhalb 500 verwendete man auch _XOPEN_SOURCE_EXTENDED um alle optionalen Komponenten zu aktivieren
Bearbeiten