La comunicación entre procesos del sistema operativo Linux

  

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) Las tuberías sin nombre se crean utilizando la función pipe () y solo se pueden usar entre procesos primarios e hijos o entre procesos hermanos;

3) Canalizaciones 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áforos

Los semáforos son contadores que controlan el acceso simultáneo de los recursos mediante múltiples procesos o subprocesos en los 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, así como 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.), problema de la cantidad de asignación (tiempo de espera de la CPU o archivo demasiado grande, etc.), kernel Notificaciones (como I /O Ready, 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.

Copyright © Conocimiento de Windows All Rights Reserved