Sistema V IPC vs POSIX IPC

  1. Quais são as diferenças entre o System V IPC e o POSIX IPC ?
  2. Por que temos dois padrões?
  3. Como decidir quais funções do IPC usar?

Ambos possuem as mesmas ferramentas básicas – semáforos, memory compartilhada e filas de mensagens. Eles oferecem uma interface ligeiramente diferente para essas ferramentas, mas os conceitos básicos são os mesmos. Uma diferença notável é que o POSIX oferece alguns resources de notificação para filas de mensagens que o Sys V não possui. (Veja mq_notify() .)

O Sys V IPC existe há mais tempo e tem algumas implicações práticas –

Primeiro, o POSIX IPC é menos amplamente implementado. Eu escrevi um wrapper Python para POSIX IPC e sua documentação lista o que eu sei sobre as implementações POSIX IPC em várias plataformas .

Em todas as plataformas listadas nessa documentação, o Sys V IPC é completamente implementado pelo AFAIK, enquanto você pode ver que o POSIX IPC não está.

A segunda implicação de sua idade relativa é que o POSIX IPC foi projetado depois que o Sys V IPC foi usado por um tempo. Portanto, os projetistas da API POSIX puderam aprender com os pontos fortes e fracos da API do Sys V. Como resultado, a API POSIX é mais simples e fácil de usar, e eu recomendo isso com a API do Sys V.

Devo observar que nunca executei nenhum teste de desempenho para comparar os dois. Eu pensaria que a API mais antiga (Sys V) teria tido mais tempo para ser ajustada no desempenho, mas isso é apenas especulação que obviamente não substitui os testes do mundo real.

Quanto ao porquê existem dois padrões – o POSIX criou seu padrão porque eles acharam que era uma melhoria no padrão Sys V. Mas se todos concordassem que o POSIX IPC é melhor, muitos e muitos programas ainda usam o Sys V IPC e levaria anos para portá-los todos para o POSIX IPC. Na prática, não valeria a pena o esforço, portanto, mesmo que todo o novo código usasse o POSIX IPC a partir de amanhã, o Sys V IPC permaneceria por muitos anos.

Não podemos dizer qual você deve usar sem saber muito mais sobre o que você pretende fazer, mas as respostas que você tem aqui devem lhe dar informações suficientes para decidir por conta própria.

  1. Eu acredito que a principal diferença é que todos os POSIX IPC são thread-safe, enquanto a maioria dos SysV IPC não é [ 1 ].
  2. Por causa das guerras Unix [ 2 ]. A especificação Single UNIX (SUS) [ 3 ], conhecida como POSIX, foi criada para padronizar interfaces em sistemas baseados em Unix.
  3. Você provavelmente quer POSIX. Depende exclusivamente de suas necessidades.

O IP do System V é mais antigo e o POSIX IPC é mais recente. No entanto, existem algumas diferenças para alguns aspectos. Nem sempre o Posix é melhor que o System V.

  1. Os semáforos, filas e memory compartilhada para Posix possuem nomes de strings Ascii, enquanto que no System V eles são dados com um número inteiro.

  2. Os semáforos do System V permitem ser liberados automaticamente se o processo for interrompido (semop SEM_UNDO flag). Não existe tal coisa para Posix.

  3. No Linux e FreeBSD existe uma grande vantagem de filas posix, já que o manipulador dado por mq_open é basicamente descritor de arquivo que pode ser pesquisado / epolled / selected / kqueued.

  • Systen V e POSIX IPC são duas implementações diferentes, mas relacionadas da mesma coisa.

“O Unix System V, comumente abreviado SysV (e geralmente pronunciado – embora raramente escrito – como” System Five “), é uma das primeiras versões comerciais do sistema operacional Unix. Foi originalmente desenvolvido pela American Telephone & Telegraph (AT & T) e lançado pela primeira vez em 1983. ”

-Wikipedia

“POSIX ou” Interface do Sistema Operacional Portátil [para Unix] “é o nome de uma família de padrões relacionados especificados pelo IEEE para definir a interface de programação de aplicativos (API)”

-Wikipedia

  • Systm V estava lá antes. O POSIX evoluiu a partir da iniciativa de padronização do IEEE.

  • O GNU / Linux é partially compatível com o POSIX. Qual deles usar depende de qual sistema operacional você está usando este IPC. A maioria dos fornecedores está se movendo em direção ao POSIX .

Programação de rede Unix: Interprocess Communications v.2 de Richard Stevens dá uma boa olhada em ambos.

Programação de rede Unix http://sofpt.miximages.com/posix/51V1DSSA8NL._SL500_AA300_.jpg