Nos tienen algún tipo de software en nuestra empresa que utiliza memoria compartida. Lo usa para transmitir datos de un proceso a otros procesos. Se podrían usar sockets para ello, pero dado que es uno-a-muchos, se debería crear un socket separado para cada proceso de consumidor que no es realmente óptimo. En las computadoras modernas que usan un archivo compartido probablemente harían el trabajo, pero este software se desarrolló a mediados de los 90 cuando los discos eran bastante lentos, y este software tiene requisitos de latencia bastante estrictos. Utiliza un tipo de buffer circular donde el proceso de productor escribe sus datos. Los semáforos se utilizan para la sincronización, por lo que otros procesos no verán datos parcialmente actualizados.
En la mayoría de los subprocesos modernos de software se utilizan generalmente en lugar de múltiples procesos que utilizan memoria compartida.
En cuanto a los tubos, el uso más común para ellos son las del shell:
ps ax | grep java
Creo canalizaciones con nombre se sustituyen en gran medida por los zócalos. Incluso si todavía tienen sus usos, no estoy al tanto de ninguno de ellos.
También le recomendamos que lea the relevant chapter of the Art of Unix Programming por Eric Steven Raymond. Ofrece una visión general muy buena de los métodos IPC de Unix y sus usos.
Gracias a todos Creo que esto dará una idea de la tarifa sobre el uso de IPC. –
De nada :). – Arunmu