Sistema V IPC vs POSIX IPC

  1. Quali sono le differenze tra System V IPC e POSIX IPC ?
  2. Perché abbiamo due standard?
  3. Come decidere quali funzioni IPC utilizzare?

Entrambi hanno gli stessi strumenti di base: semafori, memoria condivisa e code di messaggi. Offrono un’interfaccia leggermente diversa a quegli strumenti, ma i concetti di base sono gli stessi. Una differenza degna di nota è che POSIX offre alcune funzionalità di notifica per le code di messaggi che Sys V non possiede. (Vedi mq_notify() .)

L’IPC di Sys V è disponibile da molto tempo e ha un paio di implicazioni pratiche:

Innanzitutto, POSIX IPC è meno diffuso. Ho scritto un wrapper Python per POSIX IPC e la sua documentazione elenca ciò che so sulle implementazioni di POSIX IPC su varie piattaforms .

Su tutte le piattaforms elencate in tale documentazione, Sys V IPC è completamente implementato AFAIK, mentre è ansible vedere che POSIX IPC non lo è.

La seconda implicazione della loro età relativa è che POSIX IPC è stato progettato dopo l’utilizzo di Sys V IPC per un po ‘di tempo. Pertanto, i progettisti dell’API POSIX sono stati in grado di apprendere dai punti di forza e di debolezza dell’API Sys V. Di conseguenza, l’API POSIX è più semplice e più facile da usare IMO e la raccomando tramite l’API Sys V.

Devo notare che non ho mai eseguito test delle prestazioni per confrontare i due. Penserei che l’API più vecchia (Sys V) avrebbe avuto più tempo per essere ottimizzata sulle prestazioni, ma questa è solo una speculazione che naturalmente non può sostituire il test del mondo reale.

Per quanto riguarda il motivo per cui esistono due standard, POSIX ha creato i propri standard perché ritenevano che fosse un miglioramento rispetto allo standard Sys V. Ma se tutti sono d’accordo sul fatto che POSIX IPC è migliore, molti molti programmi utilizzano ancora l’IPC di Sys V e ci vorranno anni per portarli tutti su POSIX IPC. In pratica, non ne varrebbe la pena, quindi anche se tutto il nuovo codice usasse POSIX IPC a partire da domani, l’IPC di Sys V resterebbe fermo per molti anni.

Non possiamo dirti quale usare senza sapere molto di più su ciò che intendi fare, ma le risposte che hai qui dovrebbero darti informazioni sufficienti per decidere da solo.

  1. Credo che la differenza principale sia che tutti i POSIX IPC sono thread-safe, mentre la maggior parte di SysV IPC NON è [ 1 ].
  2. A causa delle guerre Unix [ 2 ]. La specifica Single UNIX (SUS) [ 3 ], alias POSIX, è stata creata per standardizzare le interfacce su sistemi basati su Unix.
  3. Probabilmente vuoi POSIX. Dipende esclusivamente dalle tue esigenze.

System V IPC è più vecchio e POSIX IPC è più recente. Tuttavia ci sono alcune differenze per alcuni aspetti. Non sempre Posix è meglio di System V.

  1. I semafori, le code e la memoria condivisa per Posix hanno nomi di stringhe Ascii, mentre in System V questi sono dati con un numero intero.

  2. I semafori System V consentono di essere rilasciati automaticamente se il processo muore (semop SEM_UNDO flag). Non esiste una cosa del genere per Posix.

  3. Su Linux e FreeBSD c’è un grande vantaggio delle code posix, dato che il gestore dato da mq_open è fondamentalmente un descrittore di file che può essere sottoposto a polling / epolled / selected / kqueued.

  • Systen V e POSIX IPC sono due implementazioni diverse ma correlate della stessa cosa.

“Unix System V, comunemente abbreviato SysV (e di solito pronunciato – sebbene raramente scritto – come” System Five “), è una delle prime versioni commerciali del sistema operativo Unix, originariamente sviluppato da American Telephone & Telegraph (AT & T) e prima uscita nel 1983. ”

-Wikipedia

“POSIX o” Portable Operating System Interface [per Unix] “è il nome di una famiglia di standard correlati specificati dall’IEEE per definire l’interfaccia di programmazione dell’applicazione (API)”

-Wikipedia

  • Systm V era lì prima. POSIX si è evoluto fuori dall’iniziativa di standardizzazione di IEEE.

  • GNU / Linux è partially compatibile con POSIX. Quale utilizzare dipende da quale sistema operativo si sta utilizzando questo IPC. La maggior parte dei venditori si sta spostando verso POSIX .

Programmazione di rete Unix: Interprocess Communications v. 2 di Richard Stevens offre una buona panoramica di entrambi.

Programmazione di rete Unix http://sofit.miximages.com/posix/51V1DSSA8NL._SL500_AA300_.jpg