Pergunta

  1. Quais IPC entre as filas de mensagens, a memória compartilhada e os semáforos é mais fácil de converter no IPC de rede e qual é o mais difícil.

  2. Seria mais fácil converter o System V Compartilhado Memória em Rede IPC ou Memória Compartilhada POSIX em Rede IPC

Foi útil?

Solução

Como Henrik Gustafsson disse:

  1. As filas de mensagens são de longe o mecanismo IPC mais fácil de se converter em rede. Os semáforos não foram projetados para transmitir dados, e a memória compartilhada geralmente precisa de acesso controlado por semáforo (ou um mecanismo equivalente) para fornecer controle adequado mesmo em uma única máquina, muito menos em uma rede. Dito isto, as filas de mensagens do sistema V são provavelmente o mecanismo IPC menos amplamente usado.

  2. A conversão de qualquer mecanismo de memória compartilhada é aproximadamente igualmente difícil. O ponto principal a ser observado é que, de fato, você raramente usa 'Just Compartilhe Memory'; Existem outras ferramentas de sincronização em uso também.

Outras dicas

  1. Eu diria que as filas de mensagens, com base no fato de que as operações que você executa em uma fila de mensagens têm mapeamentos quase idênticos nas operações de soquete.
  2. Provavelmente igualmente difícil, sugiro que você implemente um pouco mais de abstração amigável à rede no topo do SHM ... como uma fila de mensagens. A memória compartilhada não é muito adequada para a rede, embora existam algumas implementações habilitadas para a rede, mas as que encontrei são abstrações com vazamento.
  1. Semáforos não são realmente um mecanismo de comunicação, são para sincronização. A memória compartilhada pode ser usada em uma rede (Memória compartilhada distribuída), mas isso é bastante difícil de implementar. As filas de mensagens são fáceis porque são mapeadas diretamente nos soquetes de rede.

  2. Provavelmente seria uma dificuldade bastante semelhante; Ambas as APIs são semelhantes, elas apenas têm uma interface diferente.

(1). A mais fácil são as filas de mensagens e a mais difícil é a memória compartilhada.

Eu acho que é porque as filas de mensagens exigem apenas um ponteiro para a estrutura de dados da fila de mensagens, onde, como a memória compartilhada, é difícil anexar a memória compartilhada ao espaço de endereço do processo dos processos e alocar a memória compartilhada é difícil quando os dois processos estão em diferentes máquinas.

(2). É mais fácil converter a memória compartilhada POSIX do que o System V compartilhou a memória no IPC de rede.

Eu acho que é porque o POSIX suporta a memória e o nome dos semáforos e não requer intervenção do kernel, enquanto o sistema V requer intervenção do SO.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top