Was bedeutet "POSIX"?

899

Was ist POSIX? Ich habe den Wikipedia-Artikel gelesen und lese ihn jedes Mal, wenn ich auf den Begriff stoße. Tatsache ist, dass ich nie wirklich verstanden habe, was es ist.

Kann mir jemand das bitte erklären, indem er auch "die Notwendigkeit von POSIX" erklärt?

Krallen
quelle
10
unix.stackexchange.com/questions/11983/what-exactly-is-posix
Ciro Santilli 7 病毒 审查 六四 事件 法轮功
schnelle Definition Referenz - whatis.techtarget.com/definition/…
Parasrish

Antworten:

622

POSIX ist eine vom IEEE spezifizierte Standardfamilie, mit der die von Unix-y-Betriebssystemen bereitgestellten Anwendungsprogrammierschnittstellen (und Nebenprobleme wie Befehlszeilen-Shell-Dienstprogramme) geklärt und vereinheitlicht werden sollen. Wenn Sie Ihre Programme so schreiben, dass sie sich auf POSIX-Standards stützen, können Sie ziemlich sicher sein, dass Sie sie problemlos auf eine große Familie von Unix-Derivaten portieren können (einschließlich Linux, aber nicht darauf beschränkt!). Wenn Sie eine Linux-API verwenden, die nicht als Teil von Posix standardisiert ist, wird es Ihnen schwerer fallen, wenn Sie dieses Programm oder diese Bibliothek in Zukunft auf andere Unix-y-Systeme (z. B. MacOSX) portieren möchten.

Alex Martelli
quelle
34
Nein, der Standard befindet sich auf API-Ebene - jeder angegebene Aufruf kann im Kernel oder in der C-Bibliothek in Bezug auf einen anderen Aufruf implementiert werden, und das ist in Ordnung für Posix (und auch für Ihre Programme ;-). MacOSX ist Posix-kompatibel, siehe devworld.apple.com/leopard/overview/osfoundations.html . Für Windows siehe en.wikipedia.org/wiki/POSIX#POSIX_for_Windows : Die Posix-Konformität ist derzeit nur in Enterprise- und Ultimate-Editionen enthalten (nicht in den günstigeren! -), obwohl Sie teilweise mit Cygwin, en.wikipedia, erhalten können. org / wiki / Cygwin .
Alex Martelli
23
Ihr Kommentar ist fehlerhaft, da der Marktanteil von Microsoft auf Desktops zumindest dazu führt, dass "das, was der Welt folgt".
Jed Smith
29
Ich denke, was Krallen bedeuteten, war, dass Microsoft nicht viel Mühe darauf verwendet, mit anderen Plattformen interoperabel zu sein.
Mipadi
12
@deltaray umarmen, erweitern und löschen . MS Java (nicht standardmäßige java.util. Java.security, java.io, java.lang und java.awt), Internet Explorer (fast "Exploder" genannt) und .NET (ja, ich weiß, dass sie teilweise veröffentlicht wurden Quelle für .NET, aber die Lizenz ist restriktiv und es ist noch kein Linux-Port. Mono ist unvollständig. Auch exFAT-Patente . Sie sind absolut richtig.
Wyatt8740
25
Microsoft's market share on desktops, at least, makes it "what the world follows"- Interessant zu bemerken, wie viel sich seit diesem Kommentar von 2009 geändert hat :)
GMA
516

Die wichtigsten Dinge, die POSIX 7 definiert

  1. C API

    Erweitert ANSI C erheblich um Dinge wie:

    • mehr Dateioperationen: mkdir, dirname, symlink, readlink, link(Hardlinks) poll(), stat, sync,nftw()
    • verarbeiten und Themen: fork, execl, wait, pipe, Semaphoren sem_*, gemeinsam benutzten Speicher ( shm_*) kill, Scheduling - Parameter ( nice, sched_*), sleep, mkfifo,setpgid()
    • Vernetzung: socket()
    • Speicherverwaltung: mmap, mlock, mprotect, madvise,brk()
    • Dienstprogramme: reguläre Ausdrücke ( reg*)

    Diese APIs bestimmen auch die zugrunde liegenden Systemkonzepte, von denen sie abhängen, z. B. forkerfordern sie ein Konzept eines Prozesses.

    Viele Linux - Systemaufrufe existieren eine bestimmte POSIX - C - API - Funktion zu implementieren und Linux - konform zu machen, zum Beispiel sys_write, sys_read... Viele dieser syscalls aber auch Linux-spezifische Erweiterungen.

    Wichtige Linux-Desktop-Implementierung: glibc, das in vielen Fällen nur einen flachen Wrapper für Systemaufrufe bereitstellt.

  2. CLI-Dienstprogramme

    Zum Beispiel: cd, ls, echo, ...

    Viele Dienstprogramme sind direkte Shell-Frontends für eine entsprechende C-API-Funktion, z mkdir.

    Wichtige Linux - Desktop - Implementierung: GNU Coreutils für die kleinen, separaten GNU - Projekte für die Großen: sed, grep, awk, ... Einige CLI - Dienstprogramme werden von Bash implementiert als Einbauten .

  3. Shell-Sprache

    Z.B, a=b; echo "$a"

    Wichtige Linux-Desktop-Implementierung: GNU Bash .

  4. Umgebungsvariablen

    ZB: HOME, PATH.

    PATH Suchsemantik wird angegeben , einschließlich der Art und WeisePATH , wie Schrägstriche die Suche verhindern .

  5. Programm-Exit-Status

    ANSI C sagt 0oder EXIT_SUCCESSfür Erfolg, EXIT_FAILUREfür Misserfolg und lässt die restliche Implementierung definiert.

    POSIX fügt hinzu:

  6. Regulären Ausdruck

    Es gibt zwei Typen: BRE (Basic) und ERE (Extended). Basic ist veraltet und wird nur beibehalten, um APIs nicht zu beschädigen.

    Diese werden von C-API-Funktionen implementiert und in allen CLI-Dienstprogrammen verwendet, z. B. grepakzeptiert standardmäßig BREs und EREs mit -E.

    Z.B: echo 'a.1' | grep -E 'a.[[:digit:]]'

    Wichtige Linux-Implementierung: glibc implementiert die Funktionen unter regex.h, die Programme wie grepBackend verwenden können.

  7. Verzeichnisaufbau

    ZB : /dev/null,/tmp

    Das Linux FHS erweitert POSIX erheblich.

  8. Dateinamen

    • / ist das Pfadtrennzeichen
    • NUL kann nicht benutzt werden
    • .ist cwd, ..Elternteil
    • tragbare Dateinamen
      • Verwenden Sie höchstens 14 Zeichen und 256 Zeichen für den vollständigen Pfad
      • kann nur enthalten: a-zA-Z0-9._-

    Siehe auch: Was ist die Posix-Konformität für das Dateisystem?

  9. API-Konventionen für Befehlszeilenprogramme

    Nicht obligatorisch, wird von POSIX verwendet, aber fast nirgendwo anders, insbesondere nicht in GNU. Aber wahr, es ist zu restriktiv, zB nur Einzelbuchstaben-Flags (zB -a), keine langen Versionen mit doppeltem Bindestrich (zB --all).

    Einige weit verbreitete Konventionen:

    • - bedeutet stdin, wo eine Datei erwartet wird
    • --Beendet Flags, z. B. ls -- -lum ein Verzeichnis mit dem Namen aufzulisten-l

    Siehe auch: Gibt es Standards für Linux-Befehlszeilenoptionen und -argumente?

  10. "POSIX ACLs" (Zugriffssteuerungslisten), z. B. als Backend für setfacl.

    Dies wurde zurückgezogen, aber es wurde in mehreren Betriebssystemen implementiert, einschließlich in Linux mitsetxattr .

Wer entspricht POSIX?

Viele Systeme folgen POSIX genau, aber nur wenige sind tatsächlich von der Open Group zertifiziert, die den Standard beibehält. Bemerkenswerte zertifizierte sind:

  • OS X (Apple) X steht sowohl für 10 als auch für UNIX. War das erste Apple POSIX-System, das um 2001 veröffentlicht wurde. Siehe auch: Ist OSX ein POSIX-Betriebssystem?
  • AIX (IBM)
  • HP-UX (HP)
  • Solaris (Oracle)

Die meisten Linux-Distributionen sind sehr konform, aber nicht zertifiziert, da sie den Konformitätsscheck nicht bezahlen möchten. Das K-UX von Inspur und das EulerOS von Huawei sind zwei zertifizierte Beispiele.

Die offizielle Liste der zertifizierten Systeme finden Sie unter: https://www.opengroup.org/openbrand/register/ sowie auf der Wiki-Seite .

Windows

Windows hat POSIX auf einigen seiner professionellen Distributionen implementiert.

Da es sich um eine optionale Funktion handelte, konnten sich Programmierer bei den meisten Endbenutzeranwendungen nicht darauf verlassen.

Die Unterstützung in Windows 8 war veraltet:

2016 wurde eine neue offizielle Linux-ähnliche API namens "Windows Subsystem for Linux" angekündigt. Es enthält Linux-Systemaufrufe, ELF-Ausführung, Teile des /procDateisystems, Bash, GCC (TODO wahrscheinlich glibc?) apt-getUnd mehr: https://channel9.msdn.com/Events/Build/2016/P488, also glaube ich, dass es so ist ermöglicht es Windows, viel, wenn nicht alles von POSIX auszuführen. Es konzentriert sich jedoch auf Entwickler / Bereitstellung anstelle von Endbenutzern. Insbesondere war nicht geplant, den Zugriff auf die Windows-Benutzeroberfläche zuzulassen.

Historischer Überblick über die offizielle Microsoft POSIX-Kompatibilität: http://brianreiter.org/2010/08/24/the-sad-history-of-the-microsoft-posix-subsystem/

Cygwin ist ein bekanntes GPL-Drittanbieterprojekt für Windows, das "umfangreiche POSIX-API-Funktionen bietet", jedoch erfordert, dass Sie "Ihre Anwendung aus dem Quellcode neu erstellen, wenn Sie möchten, dass sie unter Windows ausgeführt wird". MSYS2 ist ein verwandtes Projekt, das neben Cygwin anscheinend mehr Funktionen bietet .

Android

Android hat eine eigene C-Bibliothek (Bionic), die POSIX ab Android O nicht vollständig unterstützt: Ist Android POSIX-kompatibel?

Bonuslevel

Die Linux Standard Base erweitert POSIX weiter.

Verwenden Sie die Nicht-Frames-Indizes. Sie sind viel besser lesbar und durchsuchbar: http://pubs.opengroup.org/onlinepubs/9699919799/nfindex.html

Holen Sie sich eine komprimierte Vollversion der HTML-Seiten zum Greppen: Wo ist die Liste der POSIX C-API-Funktionen?

Ciro Santilli 冠状 病毒 审查 六四 事件 法轮功
quelle
18
Fantastische Beispiele, wenn Sie eine Definition wie die akzeptierte Antwort hätten, wäre dies die beste Antwort.
Marc
8
@ Marc danke! Ich versuche nicht zu wiederholen, was in anderen Antworten gesagt wird, da die Leute diese wahrscheinlich bereits gelesen haben, und um Doppelarbeit zu vermeiden ;-) Dies ist ein bekanntes Dilemma: meta.stackoverflow.com/questions/305645/…
Ciro Santilli 冠状 病毒 审查 六四事件 法轮功
1
Gute Idee, um tatsächlich zu erklären, was POSIX abdeckt (und was nicht).
Sleske
4
Überall in der Literatur tauchen Verweise auf "POSIX-Konformität" auf, und die typische Definition von POSIX-Personen lautet "eine Reihe von Standards für die Interoperabilität zwischen Unix-ähnlichen Betriebssystemen". Obwohl diese Definition nützlich ist, lässt sie viele Zweifel aufkommen, insbesondere in Bezug auf die Funktionen, von denen erwartet wird, dass sie zusammenarbeiten. Natürlich können Sie die gesamte POSIX-Spezifikation lesen, um sich mit den Details zu befassen (und viel Zeit damit verbringen). Diese Antwort bietet jedoch die dringend benötigte Zusammenfassung, um einen Überblick über den Umfang von POSIX zu erhalten. Besonderer Dank geht an Ciro, der sich die Zeit genommen hat, es zu schreiben!
ARX
Es kann auch sinnvoll sein, einige Posix-Garantien für Ganzzahltypen hinzuzufügen. Ich weiß nicht genau, was angegeben ist und was nicht, aber ich weiß, dass Posix mindestens die Existenz von uint8_t, uint16_t, uint32_t und den entsprechenden vorzeichenbehafteten Typen erfordert. Ich bin mir nicht sicher, ob es garantiert, dass Typen wie "int" eine Zweierpotenz haben und dass ein System nichts Böses tut, wie ein "int" mit 32 Wertbits, 1 Vorzeichenbit und 31 Füllbits [so kann das Inkrementieren eines uint32_t UB ergeben]; Wenn Sie den Standard zur Hand haben, kann es hilfreich sein zu sagen, was in dieser Hinsicht garantiert ist und was nicht.
Supercat
74

POSIX ist:

POSIX (ausgesprochen / ˈpɒzɪks /) oder "Portable Operating System Interface [für Unix]" 1 ist der Name einer Familie verwandter Standards, die vom IEEE zur Definition der Application Programming Interface (API) zusammen mit Shell- und Utilities-Schnittstellen für Software festgelegt wurden Kompatibel mit Varianten des Unix-Betriebssystems, obwohl der Standard für jedes Betriebssystem gelten kann.

Grundsätzlich handelte es sich um eine Reihe von Maßnahmen, um die Entwicklung und Verwendung verschiedener UNIX-Varianten durch eine (meistens) gemeinsame API und gemeinsame Dienstprogramme zu vereinfachen. Die eingeschränkte POSIX-Konformität wurde auch auf verschiedene Windows-Versionen ausgeweitet.

Cletus
quelle
1. Sie meinen, POSIX sagt, dass alle * nix-Betriebssysteme (Kernel) mindestens diese Systemaufrufe haben sollten. Recht? 2. Folgt WINDOWS / MAC POSIX? If / Ifnot folgt WINDOWS (95,98,2000, xp, vista, 7) einem gemeinsamen Standard (möglicherweise ihrem eigenen proprietären Standard)? Mit anderen Worten, POSIX in der Microsoft-Welt ==?
Krallen
1
Im Grunde "war" es eine Reihe von Maßnahmen, um den Schmerz der Entwicklung zu lindern. WAR??
Krallen
5
Ich habe die Verwendung des Wortes in Frage gestellt , aber es ist umstritten. Um Ihre Fragen zu beantworten: (1) Nein, POSIX hat absolut nichts mit dem Kernel zu tun. Es beschreibt lediglich, wie es funktionieren soll. (2) OS X ist BSD und ziemlich POSIX-kompatibel, es gibt jedoch Grauzonen. Windows 2008 kommt der POSIX-Beschwerde am nächsten. In der Microsoft-Welt gibt es kein Äquivalent zu POSIX.
Jed Smith
1
@claws: Ich will den Bereich unter Cletus 'Antwort nicht beschmutzen ... aber. Ich habe POSIX.1-2008 in meiner Antwort verlinkt ... genau dort.
Jed Smith
3
@Jed Smith, es gibt keine Grauzonen in Bezug auf die Mac OS X-Konformität. Mac OS X ist gemäß der Single UNIX Specification v3 zertifiziert, deren Standard POSIX ist.
Michael Aaron Safyan
43

Lassen Sie mich die mürrische "inoffizielle" Erklärung geben.

POSIX ist eine Reihe von Standards, die versuchen, "UNIX" - und UNIX-ähnliche Systeme von solchen zu unterscheiden, die mit ihnen nicht kompatibel sind. Es wurde von der US-Regierung für Beschaffungszwecke erstellt. Die Idee war, dass die US-Bundesbeschaffungen eine Möglichkeit benötigen, die Anforderungen für verschiedene Arten von Angeboten und Verträgen rechtlich so festzulegen, dass Systeme ausgeschlossen werden können, auf die eine bestimmte vorhandene Codebasis oder ein bestimmtes Programmierpersonal NICHT portierbar wäre.

Da POSIX post facto geschrieben wurde ... um einen lose ähnlichen Satz konkurrierender Systeme zu beschreiben ... wurde es NICHT auf eine Weise geschrieben, die implementiert werden konnte.

So wurde beispielsweise Microsoft NT mit einer ausreichenden POSIX-Konformität geschrieben, um sich für einige Gebote zu qualifizieren ... obwohl das POSIX-Subsystem hinsichtlich praktischer Portabilität und Kompatibilität mit UNIX-Systemen im Wesentlichen unbrauchbar war.

Im Laufe der Jahrzehnte wurden verschiedene andere Standards für UNIX geschrieben. Dinge wie der SPEC1170 (spezifizierte elfhundertundsiebzig Funktionsaufrufe, die kompatibel implementiert werden mussten) und verschiedene Inkarnationen des SUS (Single UNIX Specification).

Diese "Standards" waren größtenteils für jede praktische technische Anwendung unzureichend. Sie existieren meistens aus Gründen der Argumentation, des Rechtsstreits und aus anderen Gründen, die nicht funktionieren.

Jim Dennis
quelle
1
Wie kommt es dann, dass Linux den größten Teil von POSIX implementiert, einschließlich vieler Erweiterungen?
Ninjalj
8
@ninjalj: Linux wurde geschrieben, um einen praktischen Satz von UNIX-ähnlichen Funktionen zu implementieren. Dies unter Einhaltung von POSIX zu tun, ist absolut sinnvoll. Mein Punkt war jedoch, dass POSIX nicht als Spezifikation für die Implementierung neuer Betriebssysteme erstellt wurde. Es wurde erstellt, um den Beschaffungsmitarbeitern der US-Regierung zu ermöglichen, zwischen denjenigen zu unterscheiden, die sich für bestimmte Kategorien in Angeboten qualifiziert haben, und denen, die dies nicht tun würden . Der Fokus unter Linux liegt darauf, die verwendbaren Funktionen auf eine Weise bereitzustellen, die angemessen kompatibel, robust und leistungsfähig ist. POSIX ist unterwegs kein Zufall.
Jim Dennis
3
Eher genial von Ihnen zu behaupten, dass der POSIX post facto geschrieben wurde! Dies ist das Markenzeichen einer guten Organisation zur Entwicklung von Standards (SDO), bei der erst dann ein Konsens erzielt wird, wenn mindestens eine konforme Implementierung vorliegt.
fpmurphy
4
@fpmurphy: Das Erstellen einer Ex-post-Facto-Spezifikation basierend auf einer oder zwei interoperablen Implementierungen ist die Norm für IETF ... -Netzwerkprotokollstandards, die über absichtlich lose Kopplungen interagieren. Es war kein erfolgreicher Prozess für die Standardisierung des Betriebssystems. Die API zwischen Programmen und dem System (Kernel oder Mikrokernel und seine Subsystem-Server) ist weitaus enger gekoppelt als Clients und Server oder Peers über Netzwerke. (Ich sage nicht, dass es unmöglich ist; ich möchte nur darauf hinweisen, dass es Unterschiede gibt und die Geschichte nicht gezeigt hat, dass letzteres vielversprechend ist).
Jim Dennis
2
Die Bemühungen von IEEE, POSIX bereits 1985 zu spezifizieren, wurden von der US-Regierung vorangetrieben. Recherchiere, lese ein Geschichtsbuch oder so.
Rustyx
29

POSIX ist ein Standard für Betriebssysteme, der das Schreiben plattformübergreifender Software erleichtern soll. Es ist eine besonders große Sache in der Welt von Unix.

Hank Gay
quelle
15
Es soll nicht nur das Schreiben von plattformübergreifendem Code erleichtern, sondern auch das Schreiben von plattformübergreifendem Code. Die einzige Ausnahme ist Windows, da Microsoft der Meinung ist, dass es irgendwie besser als alle anderen ist und nicht eingehalten werden muss. Ich gehe jedoch davon aus, dass dies gegen sie wirken wird, insbesondere wenn Mac und Linux mehr Marktanteile gewinnen. Wenn sie wirklich für "Entwickler, Entwickler, Entwickler" sind, werden sie erkennen, dass Entwickler UNIX-Konformität wollen.
Michael Aaron Safyan
Basierend auf dem, was ich von Leuten gehört habe, die viel enger damit arbeiten als jemals zuvor, hat es die Dinge vielleicht einfacher gemacht, aber es war sicherlich nicht ausreichend für den Eindruck, einmal zu schreiben und auf einem beliebigen POSIX zu laufen Leute bekommen, wenn sie hören, dass es ein "Standard" für Betriebssysteme ist.
Hank Gay
6
Sie denken nicht, dass sie "besser als alle anderen" sind; Sie wissen, dass sie größer sind als alle anderen. Das ist auch der Grund, warum sie ihre Einstellung ändern werden, wenn sie Marktanteile verlieren. Es ist nicht nur für sie, z. B. hat sich Netscape viel mehr um Webstandards gekümmert, als sie nicht mehr die beliebtesten waren.
Ken
Das Schreiben einer Anwendung, die nur POSIX-APIs verwendet, erleichtert das Portieren zwischen verschiedenen Unix- und Unix-ähnlichen Betriebssystemen erheblich. Es handelt sich jedoch um einen Konsensstandard mit dem niedrigsten gemeinsamen Nenner. Daher müssen Dienstprogramme oder Anwendungen, die betriebssystem- oder hardwarespezifisch sind, normalerweise neu geschrieben werden.
fpmurphy
2
@ Ken und deshalb sollten wir nicht zulassen, dass Googles Chrom zu bequem wird.
Wyatt8740
29

POSIX ist eine Reihe von Standards, die von IEEE und The Open Group festgelegt wurden und die beschreiben, wie ein ideales Unix funktionieren würde. Programmierer, Benutzer und Administratoren können sich mit dem POSIX-Dokument vertraut machen und erwarten, dass eine POSIX-Beschwerde Unix alle genannten Standardfunktionen bietet.

Da jedes Unix die Dinge ein wenig anders macht - Solaris, Mac OS X, IRIX, BSD und Linux haben alle ihre Macken - ist POSIX besonders nützlich für die Industrie, da es eine Standardumgebung definiert, in der gearbeitet werden kann. Die meisten Funktionen in der C-Bibliothek basieren auf POSIX. Ein Programmierer kann daher einen in seiner Anwendung verwenden und erwarten, dass er sich auf den meisten Unices gleich verhält.

Die unterschiedlichen Bereiche von Unix stehen jedoch in der Regel im Mittelpunkt und nicht die Standardbereiche.

Das Tolle an POSIX ist, dass Sie es gerne selbst lesen können:

Die Open Group Base-Spezifikationen Ausgabe 7

Ausgabe 7 ist als POSIX.1-2008 bekannt, und es gibt neue Dinge darin - Google-fu für POSIX.1 und so ermöglicht es Ihnen, den gesamten Verlauf hinter Unix zu sehen.

Jed Smith
quelle
2
Ich denke, Sie verwenden den Begriff "UNIX" falsch. UNIX bezieht sich jetzt auf die Single UNIX-Spezifikation, und jedes UNIX-Betriebssystem ist ein Betriebssystem, das der Single UNIX-Spezifikation entspricht. Vielleicht meinst du UNIX-like?
Michael Aaron Safyan
8
@Michael: Angesichts Ihrer Kommentare in anderen Antworten sind Sie offensichtlich eine sehr polarisierte Person mit Meinungen, die nicht gerade konstruktiv sind. Dieser spezifische Kommentar ist sehr umständlich, und meine Bedeutung wurde unabhängig von der Wahl eines Labels vermittelt, mit dem Sie möglicherweise nicht einverstanden sind. Außerdem ist Windows in den High-End-Versionen POSIX-kompatibel. Atmen Sie ein und treten Sie bitte zurück.
Jed Smith
1
@Jed Smith, abgesehen von starken Meinungen, impliziert der Beitrag, dass einige Betriebssysteme, die UNIX-konform sind, nicht ... Ich denke, es ist fair zu sagen, dass dies irreführend ist. In Bezug auf Windows können sich Entwickler bei der Ausrichtung auf die Windows-Plattform nicht auf POSIX verlassen, solange es nicht kompatible Editionen gibt, wodurch der gesamte Zweck von POSIX zunichte gemacht wird.
Michael Aaron Safyan
Unix ist ein Betriebssystem. UNIX ist eine Marke von The Open Group. Systeme, die entweder nach den Markenprofilen UNIX95, UNIX98 oder UNIX03 zertifiziert sind und deren Konformität mit einer bestimmten Version der Single UNIX-Spezifikation den größten Teil der Markenanforderungen ausmacht, können den Begriff UNIX verwenden.
fpmurphy
6

1985 schlossen sich Einzelpersonen aus Unternehmen der gesamten Computerbranche zusammen, um den POSIX-Standard (Portable Operating System Interface für Computerumgebungen) zu entwickeln, der weitgehend auf der Definition der UNIX System V-Schnittstelle (SVID) und anderen früheren Standardisierungsbemühungen basiert. Diese Bemühungen wurden von der US-Regierung vorangetrieben, die eine Standard-Computerumgebung benötigte, um ihre Schulungs- und Beschaffungskosten zu minimieren. POSIX wurde 1988 veröffentlicht und ist eine Gruppe von IEEE-Standards, die die API-, Shell- und Utility-Schnittstellen für ein Betriebssystem definieren. Obwohl sie auf UNIX-ähnliche Systeme ausgerichtet sind, können die Standards für jedes kompatible Betriebssystem gelten. Nachdem sich diese Standards durchgesetzt haben, können Softwareentwickler Anwendungen entwickeln, die auf allen konformen Versionen von UNIX, Linux,

Aus dem Buch: Ein praktischer Leitfaden für Linux

Koray Tugay
quelle
4

Posix ist eher ein Betriebssystem, es ist ein "Betriebssystemstandard". Sie können es sich als ein imaginäres Betriebssystem vorstellen, das eigentlich nicht existiert, aber eine Dokumentation hat. Diese Papiere sind der "Posix-Standard", definiert vom IEEE, der großen Standardorganisation der USA. Die Betriebssysteme, die diese Spezifikation implementieren, sind "Posix-konform".

Regierungsvorschriften bevorzugen Posix-konforme Lösungen für ihre Investitionen. Daher hat die Posix-Konformität einen erheblichen finanziellen Vorteil, insbesondere für die großen IT-Unternehmen der USA.

Die Belohnung für ein Betriebssystem, das vollständig Posix-kompatibel ist, ist die Garantie, dass alle Posix-kompatiblen Anwendungen nahtlos kompiliert und ausgeführt werden.

Linux ist das bekannteste. Auch hier spielen OSX, Solaris, NetBSD und Windows NT. Free- und OpenBSD sind nur "fast" Posix-konform. Die Posix-Konformität des WinNT ist nur eine Pseudolösung, um diese oben genannte Regierungsverordnung zu vermeiden.

Peter - Setzen Sie Monica wieder ein
quelle
3

Dieser Standard bietet eine gemeinsame Basis für Unix-ähnliche Betriebssysteme. Es gibt an, wie die Shell funktionieren soll, was von Befehlen wie ls und grep zu erwarten ist und eine Reihe von C-Bibliotheken, die C-Autoren voraussichtlich zur Verfügung haben.

Beispielsweise werden die Pipes, mit denen Befehlszeilenbenutzer Befehle aneinanderreihen, hier detailliert angegeben. Dies bedeutet, dass die Popen-Funktion (Pipe Open) von C dem POSIX-Standard und nicht dem ISO C-Standard entspricht.

Koray Tugay
quelle
3

POSIX steht für Portable Operating System Interface und ist ein IEEE-Standard, der die Portabilität von Anwendungen erleichtert. POSIX ist ein Versuch eines Konsortiums von Anbietern, eine einzige Standardversion von UNIX zu erstellen.

Farruh Habibullaev
quelle
0

POSIX definiert eine Reihe von Standards für ein Betriebssystem oder ein Programm. Ziel ist es, neue Software zu schreiben, die mit UNIX-ähnlichen Systemen kompatibel ist.

Beispielsweise kann ein unter Linux ausgeführtes Programm auch kompiliert und auf anderen UNIX-ähnlichen Systemen wie Solaris, HP-UX und AIX usw. ausgeführt werden.

Die beliebtesten Beispiele sind GNU Bash100% POSIX-Konformität und gawkNützlichkeit.

sras
quelle
0

Posix regelt die Interoperabilität, Portabilität und in anderen Bereichen wie der Verwendung und dem Mechanismus von Fork, Berechtigungen und Dateisystemstandards wie / etc, / var, / usr und so weiter . Wenn Entwickler ein Programm unter einem Posix-kompatiblen System wie beispielsweise Linux schreiben, wird daher im Allgemeinen nicht immer garantiert, dass es auf einem anderen Posix-kompatiblen System wie dem IBM AIX-System oder anderen kommerziellen Unix-Varianten ausgeführt wird. Posix ist eine gute Sache, da es die Softwareentwicklung für maximale Portabilität erleichtert, die es anstrebt. Hoffe diese Antwort macht Sinn.

Vielen Dank an Jed Smith & Tinkertim für den Hinweis auf meinen Fehler - mein schlechtes !!! :(

t0mm13b
quelle
Dateisystemstandards werden außerhalb von POSIX behandelt.
Jed Smith
Sie verwechseln POSIX mit Dingen wie dem LSB (Linux Standard Base). Zwei (meistens) POSIX-kompatible Betriebssysteme wären FBSD und Linux, beide haben jedoch eine ziemlich unterschiedliche Organisation des Dateisystems und Standardbibliotheksinstallationen.
Tim Post
0

Eine Spezifikation (Blaupause) darüber, wie ein Betriebssystem mit dem späten UNIX-Betriebssystem kompatibel gemacht werden kann (möge Gott ihn segnen!). Aus diesem Grund haben macOS und GNU / Linux sehr ähnliche Terminalbefehlszeilen, GUIs, Bibliotheken usw., da beide gemäß dem POSIX-Entwurf entworfen wurden.

POSIX sagt Ingenieuren und Programmierern nicht, wie sie codieren sollen, sondern was sie codieren sollen.

MCH
quelle
-1

Einige Fakten über POSIX, die nicht so hell sind.

POSIX ist auch die Systemaufrufschnittstelle oder API und fast 30 Jahre alt.

Es wurde für den serialisierten Datenzugriff auf lokalen Speicher unter Verwendung einzelner Computer mit einzelnen CPUs entwickelt.

Sicherheit war in POSIX von Natur aus kein großes Problem, was im Laufe der Jahre zu zahlreichen Angriffen auf die Rennbedingungen führte und Programmierer dazu zwang, diese Einschränkungen zu umgehen.

Es werden immer noch schwerwiegende Fehler entdeckt, die mit einem sichereren POSIX-API-Design hätten vermieden werden können.

POSIX erwartet, dass Benutzer jeweils einen synchronen Anruf ausführen und auf die Ergebnisse warten, bevor sie den nächsten ausgeben. Heutige Programmierer erwarten, dass viele asynchrone Anforderungen gleichzeitig ausgegeben werden, um den Gesamtdurchsatz zu verbessern.

Diese synchrone API ist besonders schlecht für den Zugriff auf Remote- und Cloud-Objekte, bei denen eine hohe Latenz wichtig ist.

Prosti
quelle
Die synchrone Kernel-API muss nicht Single-Threaded-Prozesse und serialisierte E / A bedeuten. Es hat auch nichts mit SMP-Maschinen zu tun. Diese sind völlig unabhängig. (Ich stimme zwar zu, dass die Synchronisierungskernel-API nicht
optimal