La comunicación entre procesos de Linux (IPC) tiene varias formas, las siguientes describirán brevemente:
una. Pipe
Pipeline es el modo IPC inicial admitido por Linux. Los tubos se pueden dividir en canales sin nombre, canales con nombre, etc.
(1) Canalización anónima, que tiene varias características:
1) El canal es semidúplex y solo puede admitir un flujo de datos en una sola dirección; debe establecerse cuando se requiere la comunicación entre dos procesos. Dos tuberías;
2) Una tubería sin nombre se crea utilizando la función pipe () y solo se puede usar entre procesos padre e hijo o entre procesos hermanos;
3) La tubería es para ambos extremos de la comunicación. En otras palabras, es esencialmente un archivo separado que solo existe en la memoria;
4) Operaciones de lectura y escritura de datos: un proceso escribe datos en la canalización y los datos escritos se agregan al final del búfer de tubería. Otro proceso lee los datos en la cabecera del búfer en la tubería.
(2) Canalizaciones con nombre
Una tubería con nombre también es semidúplex, pero permite la comunicación entre procesos que no están relacionados. Específicamente, la canalización conocida proporciona un nombre de ruta asociado con él, y existe en el sistema de archivos en forma de FIFO (primero en entrar, primero en salir). Esto permite que incluso los procesos no relacionados se comuniquen entre sí a través de FIFO, siempre y cuando tengan acceso a las rutas ya proporcionadas.
Vale la pena señalar que solo tiene sentido escribir datos en la tubería cuando la tubería tiene un final de lectura. De lo contrario, el proceso que escribe datos en la tubería recibe la señal SIGPIPE del kernel, la aplicación puede personalizar el manejador de señales o ignorar la señal directamente.
Dos. Semáforo
Un semáforo es un contador que controla el acceso simultáneo de recursos mediante múltiples procesos o procesos entre procesos. A menudo se implementa como un mecanismo de bloqueo. Esencialmente, el semáforo es una variable protegida y solo se puede acceder a través de la inicialización y dos operaciones atómicas estándar (P /V).
(Las operaciones P, V también se suelen denominar espera (s), señal (es)) y
tres. Señales
Las señales son uno de los métodos más antiguos de comunicación entre procesos que se utilizan en los sistemas Unix. El sistema operativo señala a un proceso determinado que se ha producido un evento predeterminado, el proceso que recibe la señal puede elegir procesar la señal de diferentes maneras. Primero, se puede usar el mecanismo de procesamiento predeterminado &mdash, el proceso se interrumpe o sale y el proceso se ignora. La señal, y la función de procesamiento que personaliza la señal, realiza la acción correspondiente.
El kernel produce señales para que los procesos respondan a diferentes eventos, que son la fuente de la señal. La fuente de la señal puede ser: excepción, otros procesos, interrupción de terminal (Ctrl-C, Ctrl + \\, etc.), control de trabajo (frente, administración de procesos en segundo plano, etc.), cantidad de asignación (tiempo de espera de la CPU o archivo demasiado grande, etc.), núcleo Notificaciones (por ejemplo, listas para E /S, etc.), alarmas (temporizadores).
Cuatro. Cola de mensajes
Una cola de mensajes es una lista enlazada de mensajes que permite que uno o más procesos le escriban mensajes y uno o más procesos leen mensajes. Linux mantiene una tabla de vectores de cola de mensajes: msgque para representar todas las colas de mensajes en el sistema.
Message Queue Server supera la falta de información de señalización, y la canalización solo puede soportar las desventajas de flujos de bytes sin formato y limitaciones de búfer.
Cinco. Memoria compartida
La memoria compartida se asigna a una parte de la memoria a la que pueden acceder otros procesos. Esta memoria compartida se crea mediante un proceso y luego se pueden montar otros procesos en esta memoria compartida. La memoria compartida es el mecanismo de IPC más rápido, pero como el mismo Linux no puede implementar el control síncrono y requiere un programa de usuario para el control de acceso concurrente, generalmente combina otros mecanismos de comunicación para lograr la comunicación entre procesos, como los semáforos.
Cinco. Sockets
Los sockets también son un mecanismo de comunicación entre procesos, pero la principal diferencia entre este y otros métodos de comunicación es que puede implementar la comunicación de procesos entre diferentes hosts. Un socket se puede considerar como un punto final para la comunicación entre procesos. El nombre de cada socket es único, otros procesos pueden acceder, conectarse y comunicar datos.
Cómo desinstalar el JDK incorporado en Linux, muchos de nosotros podemos encontrar Java bajo el si
RedHat Linux proporciona protección de servidor de seguridad para aumentar la seguridad del sistema.
¿Por qué debería haber prioridad de proceso? Esto no parece requerir demasiada explicación. Despué
Permítame hablar sobre mi entorno: sistema redhat5.4, la dirección IP es 192.168.0.10 Debian es el s
Cómo ocultar la versión de PHP en el servidor Linux
Olvidé la solución de contraseña bajo liunx
Diferencia tipo bus MCU y bus no bus
Sistema de auditoría de espacio de usuario de Linux
Interfaz gráfica de Linux y método de operación de cambio de interfaz de texto
Tutorial de inicio para múltiples instancias de Oracle bajo la plataforma Linux
Redhat /Centos NIC enlace tutorial básico
Introducción al módulo de visualización de información del servicio Apache del sistema Linux
Implemente fácilmente la copia de seguridad y restauración de datos en Windows Vista
El nuevo disco Xiaobai 516 U inicia la instalación de GHOST Win7 (1)
Navegador Win10 Sparta admitirá el protocolo de seguridad HSTS
El sistema de Windows XP se inicia en la solución de la tarjeta de escritorio muerta
Cómo utilizar el área de función de acceso directo del navegador Taobao
¿Cómo lidiar con el error de error de inicio de sesión de QQ "0x00060017" en el sistema Win7?
Funciones de imagen de recuperación de configuración y copia de seguridad del sistema Win8.1