Qual è il significato di "POSIX"?


899

Che cos'è POSIX? Ho letto l' articolo di Wikipedia e l'ho letto ogni volta che incontro il termine. Il fatto è che non ho mai veramente capito di cosa si tratta.

Qualcuno può spiegarmelo spiegando anche "la necessità di POSIX"?



riferimento a definizione rapida - whatis.techtarget.com/definition/…
parasrish,

Risposte:


622

POSIX è una famiglia di standard, specificata dall'IEEE , per chiarire e uniformare le interfacce di programmazione dell'applicazione (e problemi accessori, come le utility della shell a riga di comando) fornite dai sistemi operativi Unix-y. Quando scrivi i tuoi programmi per fare affidamento sugli standard POSIX, puoi essere abbastanza sicuro di essere in grado di portarli facilmente tra una grande famiglia di derivati ​​Unix (incluso Linux, ma non limitato a questo!); se e quando usi qualche API Linux che non è standardizzata come parte di Posix, avrai un momento più difficile se e quando vuoi portare quel programma o libreria su altri sistemi Unix-y (es. MacOSX) in futuro.


34
No, lo standard è a livello di API: ogni chiamata specificata può essere implementata nel kernel, o nella libreria C in termini di un'altra chiamata, e va bene per Posix (e anche per i tuoi programmi ;-). MacOSX è conforme a Posix, consultare devworld.apple.com/leopard/overview/osfoundations.html . Per Windows, vedere en.wikipedia.org/wiki/POSIX#POSIX_for_Windows : la conformità Posix è attualmente inclusa solo nelle versioni Enterprise e Ultimate (non in quelle più economiche! -), sebbene sia possibile ottenere partw con Cygwin, en.wikipedia. org / wiki / Cygwin .
Alex Martelli,

23
Il tuo commento è imperfetto, poiché la quota di mercato di Microsoft sui desktop, almeno, lo rende "ciò che il mondo segue".
Jed Smith,

29
Penso che ciò che significhi gli artigli sia che Microsoft non si sforza molto di essere interoperabile con altre piattaforme.
mipadi,

12
@deltaray abbraccia, estende ed estingue . MS java (java.util non standard. Java.security, java.io, java.lang e java.awt), Internet Explorer (quasi detto "exploder") e .NET (sì, so che hanno rilasciato parziali sorgente per .NET, ma la sua licenza è restrittiva e NON è ancora una porta linux. Mono è incompleta). Inoltre, brevetti exFAT . Hai assolutamente ragione.
Wyatt8740,

25
Microsoft's market share on desktops, at least, makes it "what the world follows"- Interessante notare quante cose sono cambiate da questo commento del 2009 :)
GMA,

516

Le cose più importanti che POSIX 7 definisce

  1. API C.

    Estende notevolmente ANSI C con cose come:

    • altre operazioni sui file: mkdir, dirname, symlink, readlink, link(collegamenti fisici), poll(), stat, sync,nftw()
    • elaborano e filetti: fork, execl, wait, pipe, semaphors sem_*, memoria dinamica ( shm_*) kill, parametri di pianificazione ( nice, sched_*), sleep, mkfifo,setpgid()
    • networking: socket()
    • gestione della memoria: mmap, mlock, mprotect, madvise,brk()
    • utilità: espressioni regolari ( reg*)

    Tali API determinano anche i concetti di sistema sottostanti da cui dipendono, ad esempio forkrichiedono un concetto di processo.

    Molte chiamate di sistema Linux esistere per implementare una funzione API POSIX C specifica e rendere conforme Linux, ad esempio sys_write, sys_read... Molti di questi hanno anche syscalls estensioni specifiche per Linux tuttavia.

    Importante implementazione desktop Linux: glibc, che in molti casi fornisce solo un wrapper superficiale per le chiamate di sistema.

  2. Utilità CLI

    Ad esempio: cd, ls, echo, ...

    Molte utility sono front-end di shell diretta per una funzione API C corrispondente, ad es mkdir.

    Implementazione del desktop Linux Maggiore: GNU Coreutils per i piccoli, progetti GNU separate per i grandi: sed, grep, awk, ... Alcune utility CLI sono attuate da Bash come built-in .

  3. Linguaggio shell

    Per esempio, a=b; echo "$a"

    Importante implementazione desktop Linux: GNU Bash .

  4. Variabili ambientali

    Ad esempio: HOME, PATH.

    PATH vengono specificate le semantiche di ricerca , incluso il modo inPATH cui le barre impediscono la ricerca .

  5. Stato di uscita del programma

    ANSI C dice 0o EXIT_SUCCESSper il successo, EXIT_FAILUREper il fallimento e lascia definita l'implementazione del resto.

    POSIX aggiunge:

  6. Espressione regolare

    Esistono due tipi: BRE (base) ed ERE (estesa). Basic è obsoleto e mantenuto solo per non interrompere le API.

    Questi sono implementati da funzioni API C e utilizzati in tutti i programmi di utilità CLI, ad esempio grepaccetta BRE per impostazione predefinita e ERE con -E.

    Per esempio: echo 'a.1' | grep -E 'a.[[:digit:]]'

    Importante implementazione di Linux: glibc implementa le funzioni sotto regex.h che programmi simili greppossono usare come backend.

  7. Struttura di directory

    Ad esempio: /dev/null,/tmp

    Linux FHS estende notevolmente POSIX.

  8. I nomi dei file

    • / è il separatore di percorso
    • NUL non può essere usato
    • .è cwd, ..genitore
    • nomi di file portatili
      • utilizzare al massimo 14 caratteri e 256 per l'intero percorso
      • può contenere solo: a-zA-Z0-9._-

    Vedi anche: cos'è la conformità posix per il filesystem?

  9. Convenzioni API dell'utilità della riga di comando

    Non obbligatorio, utilizzato da POSIX, ma quasi da nessun'altra parte, in particolare non in GNU. Ma è vero, è troppo restrittivo, ad esempio solo bandiere a lettera singola (ad es. -a), Nessuna versione lunga con doppio trattino (ad es --all.).

    Alcune convenzioni ampiamente utilizzate:

    • - significa stdin in cui è previsto un file
    • --termina i flag, ad esempio ls -- -lper elencare una directory denominata-l

    Vedi anche: Esistono standard per opzioni e argomenti della riga di comando di Linux?

  10. "POSIX ACLs" (Elenchi di controllo degli accessi), ad esempio utilizzati come backend per setfacl.

    Questo è stato ritirato ma è stato implementato in diversi sistemi operativi, incluso in Linux consetxattr .

Chi è conforme a POSIX?

Molti sistemi seguono POSIX da vicino, ma pochi sono in realtà certificati da Open Group che mantiene lo standard. Notevoli quelli certificati includono:

  • OS X (Apple) X sta per 10 e UNIX. Il primo sistema POSIX di Apple è stato rilasciato intorno al 2001. Vedi anche: OSX è un sistema operativo POSIX?
  • AIX (IBM)
  • HP-UX (HP)
  • Solaris (Oracle)

La maggior parte delle distribuzioni Linux sono molto conformi, ma non certificate perché non vogliono pagare il controllo di conformità. K-UX di Inspur e EulerOS di Huawei sono due esempi certificati.

L'elenco ufficiale dei sistemi certificati è disponibile all'indirizzo: https://www.opengroup.org/openbrand/register/ e anche nella pagina wiki .

finestre

Windows ha implementato POSIX su alcune delle sue distribuzioni professionali.

Dato che era una funzione opzionale, i programmatori non potevano fare affidamento su di esso per la maggior parte delle applicazioni per l'utente finale.

Il supporto è stato deprecato in Windows 8:

Nel 2016 è stata annunciata una nuova API ufficiale simile a Linux chiamata "Sottosistema Windows per Linux". Include chiamate di sistema Linux, ELF in esecuzione, parti del /procfilesystem, Bash, GCC, (TODO probabilmente glibc?) apt-getE altro: https://channel9.msdn.com/Events/Build/2016/P488 quindi credo che sia consentirà a Windows di eseguire molto, se non tutto, POSIX. Tuttavia, si concentra sugli sviluppatori / sulla distribuzione anziché sugli utenti finali. In particolare, non c'erano piani per consentire l'accesso alla GUI di Windows.

Panoramica storica della compatibilità ufficiale con Microsoft POSIX: http://brianreiter.org/2010/08/24/the-sad-history-of-the-microsoft-posix-subsystem/

Cygwin è un noto progetto GPL di terze parti per quello "fornisce sostanziali funzionalità API POSIX" per Windows, ma richiede che "ricostruisca l'applicazione dal sorgente se si desidera che funzioni su Windows". MSYS2 è un progetto correlato che sembra aggiungere più funzionalità su Cygwin.

androide

Android ha la sua libreria C (Bionic) che non supporta completamente POSIX da Android O: Android POSIX è compatibile?

Livello bonus

Il Linux Standard Base estende ulteriormente POSIX.

Utilizza gli indici non frame, sono molto più leggibili e ricercabili: http://pubs.opengroup.org/onlinepubs/9699919799/nfindex.html

Ottieni una versione zippata completa delle pagine HTML per il grepping: dov'è l'elenco delle funzioni dell'API POSIX C?


18
Esempi fantastici, se avessi una definizione così come la risposta accettata, questa sarebbe la risposta migliore.
Marc,

8
@Marc grazie! Cerco di non ripetere ciò che viene detto in altre risposte poiché le persone probabilmente hanno già letto quelle ed evitare duplicazioni ;-) Questo è un dilemma noto: meta.stackoverflow.com/questions/305645/…
Ciro Santilli 郝海东 冠状 病 六四法轮功 法轮功

1
Buona idea per spiegare effettivamente cosa copre POSIX (e cosa no).
sleske,

4
Ovunque nella letteratura, appaiono riferimenti alla "conformità POSIX" e la definizione tipica di POSIX che le persone trovano è "un insieme di standard per l'interoperabilità tra sistemi operativi simili a Unix". Sebbene utile, questa definizione lascia molti dubbi, specialmente per quanto riguarda le funzionalità che dovrebbero interagire. Certo, puoi andare a leggere l'intera specifica POSIX per approfondire i dettagli (e dedicare molto tempo a questo). Ma questa risposta fornisce il sommario tanto necessario per avere una visione d'insieme dell'ambito di POSIX. Un ringraziamento speciale a Ciro per aver dedicato del tempo a scriverlo!
ARX,

Potrebbe anche essere utile aggiungere alcune garanzie Posix sui tipi di numeri interi. Non so esattamente cosa sia e non sia specificato, ma so che almeno Posix richiede l'esistenza di uint8_t, uint16_t, uint32_t e i corrispondenti tipi firmati. Non sono sicuro se garantisce che tipi come "int" abbiano una potenza di due dimensioni e che un sistema non farà qualcosa di brutto come avere un "int" con 32 bit di valore, 1 bit di segno e 31 bit di riempimento [quindi incrementare un uint32_t potrebbe produrre UB]; se hai lo standard a portata di mano, potrebbe essere bello dire cosa è e non è garantito a tale riguardo.
supercat,

74

POSIX è:

POSIX (pronunciato / ˈpɒzɪks /) o "Interfaccia del sistema operativo portatile [per Unix]" 1 è il nome di una famiglia di standard correlati specificati dall'IEEE per definire l'interfaccia di programmazione dell'applicazione (API), insieme alle interfacce shell e utility per il software compatibile con le varianti del sistema operativo Unix, sebbene lo standard possa applicarsi a qualsiasi sistema operativo.

Fondamentalmente si trattava di una serie di misure per alleviare il dolore dello sviluppo e dell'uso di diversi tipi di UNIX con un'API e utilità (principalmente) comuni. La conformità POSIX limitata è stata estesa anche a varie versioni di Windows.


1. Intendi che POSIX afferma che tutti i * nix OS (kernel) dovrebbero avere almeno questo set di chiamate di sistema. destra? 2. WINDOWS / MAC segue POSIX? Se / Ifnot WINDOWS (95,98,2000, xp, vista, 7) sta seguendo uno standard comune (può essere il proprio proprietario) standard? In altre parole, POSIX nel mondo Microsoft ==?
artigli il

1
Fondamentalmente "era" un insieme di misure per alleviare il dolore dello sviluppo. ERA??
artigli il

5
Ho chiesto l'uso della parola è stato , anche, ma è discutibile. Per rispondere alle tue domande: (1) no, POSIX ha assolutamente a che fare con il kernel, descrive solo come dovrebbe funzionare; (2) OS X è BSD ed è abbastanza conforme a POSIX, ma ci sono aree grigie. Windows 2008 è il più vicino al reclamo POSIX; non esiste un equivalente di POSIX nel mondo Microsoft.
Jed Smith,

1
@claws: Non intendo sporcare l'area sotto la risposta di Cletus ... ma. Ho collegato POSIX.1-2008 nella mia risposta ... proprio lì.
Jed Smith,

3
@Jed Smith, non ci sono aree grigie in termini di conformità con Mac OS X; Mac OS X è certificato conforme alla specifica UNIX singola v3, uno standard di cui POSIX è un sottoinsieme.
Michael Aaron Safyan,

43

Consentitemi di dare la spiegazione "non ufficiale" di un coraggioso.

POSIX è un insieme di standard che tenta di distinguere i sistemi "UNIX" e simili a quelli UNIX da quelli incompatibili con essi. È stato creato dal governo degli Stati Uniti a fini di approvvigionamento. L'idea era che gli appalti federali statunitensi necessitavano di un modo per specificare legalmente i requisiti per vari tipi di offerte e contratti in un modo che potesse essere utilizzato per escludere i sistemi ai quali una data base di codice esistente o il personale di programmazione NON sarebbero portabili.

Dal momento che POSIX è stato scritto post facto ... per descrivere un insieme vagamente simile di sistemi concorrenti ... NON è stato scritto in un modo che potesse essere implementato.

Quindi, ad esempio, NT di Microsoft è stato scritto con sufficiente conformità POSIX per qualificarsi per alcune offerte ... anche se il sottosistema POSIX era essenzialmente inutile in termini di portabilità pratica e compatibilità con i sistemi UNIX.

Vari altri standard per UNIX sono stati scritti nel corso dei decenni. Cose come SPEC1170 (specificate undiciecentosettanta chiamate di funzione che dovevano essere implementate in modo compatibile) e varie incarnazioni del SUS (specifica UNIX singola).

Per la maggior parte questi "standard" sono stati inadeguati a qualsiasi applicazione tecnica pratica. Esistono soprattutto per argomentazioni, controversie legali e altre ragioni disfunzionali.


1
Allora come mai Linux implementa la maggior parte di POSIX, incluse molte delle estensioni?
ninjalj,

8
@ninjalj: Linux è stato scritto per implementare una serie pratica di funzioni simili a UNIX. Farlo conforme a POSIX ha perfettamente senso. Tuttavia, il mio punto era che POSIX non è stato creato come specifica per l'implementazione di nuovi sistemi operativi ... è stato creato come un modo per il personale degli appalti pubblici del governo americano di distinguere tra quelli qualificati per determinate categorie nelle offerte da quelli che non lo farebbero . L'attenzione in Linux è quella di fornire le funzionalità utilizzabili in modo ragionevole compatibile, robusto e performante. POSIX non è affatto un incidente lungo la strada.
Jim Dennis,

3
Piuttosto geniale da parte tua affermare che POSIX è stato scritto post facto! Questo è il segno distintivo di un'organizzazione di sviluppo di buoni standard (SDO) in cui il consenso non viene raggiunto fino a quando non esiste almeno un'implementazione conforme.
fpmurphy

4
@fpmurphy: la creazione di una specifica ex post facto basata su una o due implementazioni interoperabili è la norma per IETF ... standard di protocollo di rete che interagiscono su accoppiamenti intenzionalmente lenti. Non è stato un processo riuscito per la standardizzazione del sistema operativo. L'API tra i programmi e il sistema (kernel o microkernel e i suoi server del sottosistema) è molto più strettamente accoppiata rispetto a client e server o peer su reti. (Non sto dicendo che è impossibile; semplicemente sottolineando che ci sono differenze e la storia non ha dimostrato che quest'ultima sia promettente).
Jim Dennis,

2
Gli sforzi dell'IEEE di specificare POSIX nel 1985 furono stimolati dal governo degli Stati Uniti. Fai delle ricerche, leggi un libro di storia o qualcosa del genere.
Rustyx,

29

POSIX è uno standard per i sistemi operativi che avrebbe dovuto facilitare la scrittura di software multipiattaforma. È particolarmente importante nel mondo di Unix.


15
Non è solo "supposto" per rendere più semplice la scrittura di codice multipiattaforma, ma anche per scrivere codice multipiattaforma. L'unica eccezione è Windows, perché Microsoft pensa che sia in qualche modo migliore di tutti gli altri e non debba conformarsi. Tuttavia, prevedo che questo funzionerà contro di loro, specialmente se Mac e Linux guadagneranno più quote di mercato. Se lo sono davvero per "sviluppatori, sviluppatori, sviluppatori", si renderanno conto che gli sviluppatori vogliono la conformità UNIX.
Michael Aaron Safyan,

Sulla base di ciò che ho sentito da persone che ci lavorano molto più da vicino di quanto abbia mai fatto, potrebbe aver semplificato le cose, ma sicuramente non era sufficiente per l'impressione di scrivere una volta, correre su qualsiasi POSIX le persone ottengono quando sentono che è uno "standard" per i sistemi operativi.
Hank Gay,

6
Non pensano di essere "migliori di tutti gli altri"; sanno di essere più grandi di tutti gli altri. Questo è anche il motivo per cui cambieranno melodia man mano che perdono quote di mercato. Non è unico per loro, ad esempio, Netscape ha iniziato a interessarsi molto di più agli standard web quando non erano più i più popolari.
Ken,

La scrittura di un'applicazione per utilizzare solo API POSIX semplifica notevolmente il trasferimento tra diversi sistemi operativi Unix e Unix-like. Tuttavia è uno standard di consenso con il minimo comune denominatore, quindi le utility o le applicazioni che sono specifiche del sistema operativo o dell'hardware richiedono in genere una riscrittura.
fpmurphy

2
@Ken ed è per questo che non dovremmo lasciare che il cromo di Google diventi troppo comodo.
Wyatt8740,

29

POSIX è un insieme di standard proposti da IEEE e The Open Group che descrivono il funzionamento di un Unix ideale. I programmatori, gli utenti e gli amministratori possono acquisire familiarità con il documento POSIX e aspettarsi che un reclamo POSIX Unix fornisca tutte le strutture standard menzionate.

Poiché ogni Unix fa le cose in modo leggermente diverso - Solaris, Mac OS X, IRIX, BSD e Linux hanno tutti le loro peculiarità - POSIX è particolarmente utile per quelli del settore in quanto definisce un ambiente standard in cui operare. Ad esempio, la maggior parte delle funzioni nella libreria C sono basate su POSIX; un programmatore può quindi utilizzarne uno nella sua applicazione e aspettarsi che si comporti allo stesso modo nella maggior parte degli Unices.

Tuttavia, le aree divergenti di Unix sono in genere al centro dell'attenzione, piuttosto che quelle standard.

La cosa grandiosa di POSIX è che sei il benvenuto a leggerlo tu stesso:

The Open Group Base Specifiche Numero 7

Il numero 7 è noto come POSIX.1-2008 e ci sono nuove cose, tuttavia, Google-fu per POSIX.1 e tali ti permetteranno di vedere l'intera storia dietro ciò che Unix è.


2
Penso che tu stia usando il termine "UNIX" in modo errato. UNIX ora fa riferimento alla specifica UNIX singola e qualsiasi sistema operativo UNIX è un sistema operativo conforme alla specifica UNIX singola. Forse intendi come UNIX?
Michael Aaron Safyan,

8
@Michael: dati i tuoi commenti in altre risposte, sei ovviamente una persona molto polarizzata con opinioni che non sono esattamente costruttive. Questo commento specifico è molto pedante e il mio significato è stato trasmesso indipendentemente dalla scelta di un'etichetta con cui potresti non essere d'accordo. Inoltre, Windows è conforme POSIX nelle versioni di fascia alta. Fai un respiro e fai un passo indietro, per favore.
Jed Smith,

1
@Jed Smith, forti opinioni a parte, l'implicazione del post è che alcuni sistemi operativi certificati UNIX non sono ... quindi, penso che sia giusto dire che è fuorviante. Inoltre, per quanto riguarda Windows, purché ci siano edizioni non conformi, gli sviluppatori non possono fare affidamento su POSIX quando prendono di mira la piattaforma Windows, annullando così l'intero scopo di avere POSIX.
Michael Aaron Safyan,

Unix è un sistema operativo. UNIX è un marchio detenuto da The Open Group. I sistemi certificati per i profili di branding UNIX95, UNIX98 o UNIX03, la cui conformità a una versione specifica della specifica UNIX singola costituisce la maggior parte dei requisiti di branding, possono usare il termine UNIX.
fpmurphy

6

Nel 1985, individui di aziende di tutto il settore informatico si sono uniti per sviluppare lo standard POSIX (Portable Operating System Interface for Computer Environments), che si basa in gran parte sulla UNIX System V Interface Definition (SVID) e altri precedenti sforzi di standardizzazione. Questi sforzi furono stimolati dal governo degli Stati Uniti, che aveva bisogno di un ambiente informatico standard per ridurre al minimo i costi di formazione e acquisizione. Rilasciato nel 1988, POSIX è un gruppo di standard IEEE che definiscono le interfacce API, shell e utility per un sistema operativo. Sebbene sia rivolto a sistemi simili a UNIX, gli standard possono applicarsi a qualsiasi sistema operativo compatibile. Ora che questi standard hanno ottenuto l'accettazione, gli sviluppatori di software sono in grado di sviluppare applicazioni che funzionano su tutte le versioni conformi di UNIX, Linux,

Dal libro: una guida pratica a Linux


4

Posix è più come un sistema operativo, è uno "standard del sistema operativo". Puoi immaginarlo come un sistema operativo immaginario, che in realtà non esiste, ma ha una documentazione. Questi documenti sono lo "standard posix", definito dall'IEEE, che è la grande organizzazione standard degli Stati Uniti. I sistemi operativi che implementano questa specifica sono "conformi a Posix".

I regolamenti governativi preferiscono soluzioni conformi a Posix nei loro investimenti, pertanto la conformità a Posix ha un vantaggio finanziario significativo, in particolare per le grandi aziende IT degli Stati Uniti.

La ricompensa per un sistema operativo completamente conforme a posix, che è una garanzia che compilerà ed eseguirà senza problemi tutte le applicazioni conformi a Posix.

Linux è il più noto. Qui giocano anche OSX, Solaris, NetBSD e Windows NT. Free- e OpenBSD sono solo "quasi" conformi a Posix. La posix-compliance di WinNT è solo una pseudo-soluzione per evitare questo regolamento governativo sopra.


3

Questo standard fornisce una base comune per i sistemi operativi simili a Unix. Specifica come dovrebbe funzionare la shell, cosa aspettarsi da comandi come ls e grep e un numero di librerie C che gli autori C possono aspettarsi di avere a disposizione.

Ad esempio, le pipe utilizzate dagli utenti della riga di comando per mettere insieme i comandi sono specificate qui in dettaglio, il che significa che la funzione popen (pipe open) di C è standard POSIX, non ISO C standard.


3

POSIX è l'acronimo di Portable Operating System Interface ed è uno standard IEEE progettato per facilitare la portabilità delle applicazioni. POSIX è un tentativo da parte di un consorzio di fornitori di creare un'unica versione standard di UNIX.


0

POSIX definisce una serie di standard per un sistema operativo o un programma. L'obiettivo è scrivere un nuovo software compatibile con i sistemi simili a UNIX.

Ad esempio, un programma eseguito su Linux può anche essere compilato ed eseguito su altri sistemi simili a UNIX come Solaris, HP-UX e AIX ecc.

Gli esempi più popolari sono la GNU Bashconformità e l' gawkutilità POSIX al 100% .


0

Posix governa l'interoperabilità, la portabilità e in altre aree come l'uso e il meccanismo di fork, le autorizzazioni e gli standard del file system come / etc, / var, / usr e così via . Pertanto, quando gli sviluppatori scrivono un programma con un sistema conforme a Posix come ad esempio Linux, in genere non sempre è garantito l'esecuzione su un altro sistema conforme a posix come il sistema AIX di IBM o altre varianti commerciali di Unix. Posix è una buona cosa da avere in quanto tale facilita lo sviluppo del software per la massima portabilità per cui si sforza. Spero che questa risposta abbia un senso.

Grazie a Jed Smith e Tinkertim per aver segnalato il mio errore - il mio male !!! :(


Gli standard del filesystem sono gestiti al di fuori di POSIX.
Jed Smith,

Stai confondendo POSIX con cose come LSB (Linux Standard Base). Due (principalmente) sistemi operativi POSIX compatibili sarebbero FBSD e Linux, ma entrambi hanno un'organizzazione dei file system piuttosto diversa e installazioni di librerie predefinite.
Tim Post

0

Una specifica (progetto) su come rendere un sistema operativo compatibile con il sistema operativo UNIX recente (che Dio lo benedica!). Questo è il motivo per cui macOS e GNU / Linux hanno linee di comando del terminale molto simili, GUI, librerie, ecc. Perché entrambi sono stati progettati secondo il modello POSIX.

POSIX non dice agli ingegneri e ai programmatori come codificare ma cosa codificare.


-1

Alcuni fatti su POSIX che non sono così brillanti.

POSIX è anche l'interfaccia di chiamata di sistema o API ed ha quasi 30 anni.

È stato progettato per l'accesso ai dati serializzato all'archiviazione locale , utilizzando singoli computer con singole CPU.

La sicurezza non è stata una delle principali preoccupazioni in POSIX in termini di progettazione, portando negli anni numerosi attacchi alle condizioni di gara e costringendo i programmatori a aggirare queste limitazioni.

Si stanno ancora scoprendo gravi bug, bug che avrebbero potuto essere evitati con un design API POSIX più sicuro.

POSIX si aspetta che gli utenti emettano una chiamata sincrona alla volta e attendono i risultati prima di emettere la successiva. I programmatori di oggi prevedono di inviare molte richieste asincrone alla volta per migliorare la velocità complessiva.

Questa API sincrona è particolarmente dannosa per l'accesso a oggetti remoti e cloud, dove è importante latenza elevata.


L'API del kernel sincrono non deve necessariamente significare processi a thread singolo e I / O serializzati. Inoltre non ha nulla a che fare con le macchine SMP. Questi sono completamente indipendenti. (Mentre sono d'accordo che l'API del kernel di sincronizzazione non è ottimale, ma non così pesantemente come sembra nel tuo post.)
Peter - Ripristina Monica il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.