Pregunta

  1. Qué IPC entre las colas de mensajes, la memoria compartida y los semáforos es el más fácil de convertir a la red IPC y cuál es el más difícil.

  2. ¿Sería más fácil convertir la memoria compartida de System V a la red IPC o la memoria compartida de Posix a la red IPC

¿Fue útil?

Solución

Como dijo Henrik Gustafsson:

  1. Las colas de mensajes son, con mucho, el mecanismo IPC más fácil para convertir a la red. Los semáforos no están diseñados para transmitir datos, y la memoria compartida generalmente necesita acceso controlado por semáforo (o un mecanismo equivalente) para proporcionar un control adecuado incluso en una sola máquina, y mucho menos en una red. Dicho esto, las colas de mensajes del Sistema V son probablemente el mecanismo de IPC menos utilizado.

  2. La conversión de cualquier mecanismo de memoria compartida es aproximadamente igual de difícil. El punto clave a tener en cuenta es que, de hecho, rara vez, si alguna vez, utiliza 'solo memoria compartida'; También hay otras herramientas de sincronización en uso.

Otros consejos

  1. Yo diría que las colas de mensajes son, con mucho, sobre la base de que las operaciones que realiza en una cola de mensajes tienen asignaciones casi idénticas a las operaciones de socket.
  2. Probablemente igual de difícil, te sugiero que implementes un poco más de abstracción amigable con la red además de shm ... como una cola de mensajes. La memoria compartida no es muy adecuada para la creación de redes, aunque existen algunas implementaciones habilitadas para la red, pero las que me he encontrado son, de hecho, abstracciones con fugas.
  1. Los semáforos no son realmente un mecanismo de comunicación, son para la sincronización. La memoria compartida se puede usar a través de una red ( Memoria compartida distribuida ), pero es bastante difícil implementar. Las colas de mensajes son fáciles porque se asignan directamente a los sockets de red.

  2. Probablemente sería una dificultad bastante similar; ambas API son similares, solo tienen una interfaz diferente.

(1). Lo más fácil es colas de mensajes y lo más difícil es la memoria compartida.

Creo que es porque las colas de mensajes solo requieren un puntero a la estructura de datos de la cola de mensajes, donde la memoria compartida requiere que se conecte la memoria compartida al espacio de direcciones de proceso de ambos procesos y la asignación de memoria compartida es difícil cuando los dos procesos están activados diferentes maquinas

(2). Es más fácil convertir la memoria compartida de Posix que la memoria compartida de System V a la red IPC.

Creo que se debe a que Posix admite semáforos basados ??tanto en la memoria como con nombre y no requiere la intervención del kernel, mientras que el Sistema V requiere la intervención del sistema operativo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top