¿Por qué necesitamos comunicaciones entre procesos?

¿De qué es la comunicación entre procesos (IPC)?

Los métodos de IPC incluyen tuberías y tuberías con nombre; colas de mensajes, semáforos; memoria compartida; y enchufes.

Ese último, los sockets , es cómo la mayoría de las comunicaciones ocurren a través de Internet. Sin sockets, su navegador no podría abrir una conexión a un servidor web y sus aplicaciones no podrían conectarse a servicios de backend (a menudo esenciales).

El resto de los métodos IPC enumerados permiten la comunicación entre dos o más procesos (o subprocesos) que se ejecutan en la misma máquina .

Las tuberías se utilizan para unir múltiples comandos. Por ejemplo, puede encadenar los siguientes cuatro comandos usando tuberías:

gato myfile.txt | grep “foo” | corte -c1 | cabeza -20

Es posible escribir la salida de un comando en un archivo y luego leer el siguiente comando del archivo. Pero este método es mucho más conciso y no requiere escribir ningún dato. Además, puede canalizar desde comandos que no terminan (por ejemplo, netcat) y obtener resultados incrementales de los comandos posteriores.

Las canalizaciones con nombre son como canalizaciones pero están representadas por archivos en el sistema de archivos. Los procesos pueden leerlos y escribirles como si fueran archivos reales. Los he usado tal vez media docena de veces en los últimos 20 años. No son tan comunes como otros métodos de IPC pero tienen sus usos.

Las colas de mensajes son un medio para pasar datos estructurados entre procesos / hilos. Un mensaje consta de cierta información de encabezado y el cuerpo del mensaje. La cola a menudo es administrada por el sistema operativo. (Las colas de mensajes en el espacio del usuario se pueden usar para la comunicación entre subprocesos). Los procesos pueden leer y escribir mensajes en la cola para comunicar información entre ellos.

Los semáforos y la memoria compartida proporcionan una forma para que dos procesos lean y escriban el mismo bloque de memoria de forma segura. Los semáforos se usan para sincronizar el acceso a la memoria compartida para que los procesos no intenten leer y escribir los mismos datos al mismo tiempo y terminen golpeándose entre sí. (Por ejemplo, leyendo una cadena a medio sobrescribir). La memoria compartida tiene la ventaja de que puede resultar en un rendimiento significativamente mayor que cualquiera de los métodos anteriores. Esto puede ser particularmente importante en sistemas que requieren mucha memoria y rendimiento, como las bases de datos. Las mejoras de rendimiento vienen con algunas complicaciones adicionales (por ejemplo, los punteros deben almacenarse como compensaciones de la página base) y riesgos (el bloqueo incorrecto puede destruir la memoria).

More Interesting

¿Vale la pena ir a la universidad por algo de lo que no sabes nada?

¿Usar solo la tarjeta gráfica incorporada en la computadora portátil usará la misma potencia que la computadora portátil sin una tarjeta dedicada?

¿Microsoft Surface Pro 3 es bueno para los estudiantes de CS?

Estoy muy interesado en buscar la interacción hombre-computadora. ¿Cuál sería un título universitario ideal para llegar allí?

¿Cuál es la reputación del programa de informática de Cornell, en comparación con otros programas principales? ¿Qué tan bueno es Cornell con trabajos en grandes empresas tecnológicas (por ejemplo, Facebook, etc.), frente a Carnegie Mellon o Stanford?

En Xcode, ¿por qué no puedes construir y ejecutar un archivo C ++? Por ejemplo, ¿por qué tiene que crear un proyecto completo si lo único que desea ejecutar es un archivo C ++ para programar concursos, etc.?

¿Qué es el hack funtenna?

¿Pueden los gerentes ser reemplazados por inteligencia artificial?

¿Existe un límite superior teórico en RAM que se pueda instalar en una computadora?

¿Cuáles son los pros y los contras del uso de redes neuronales artificiales frente a los controles clásicos?

¿Qué debemos preparar antes de comenzar las pruebas automatizadas de comercio electrónico?

¿Se puede aplicar el aprendizaje automático para un entorno completamente aleatorio?

¿Cómo es hacer un largo viaje en un súper yate? ¿Cómo se compararía con tomar un crucero?

¿Qué bajo mayor es bueno para el aprendizaje automático?

¿Cómo se estructura un virus informático?