Comunicación de procesos de Linux y comunicación de hilos

La forma de comunicación entre procesos bajo Linux:

  1. Las tuberías (tuberías) y las tuberías con nombre (tuberías con nombre)
      se pueden utilizar para la comunicación entre procesos con parentesco. Una tubería conocida supera la restricción de que las tuberías no tienen nombre. Por lo tanto, además de tener las funciones de tuberías, también permite procesos no relacionados Intercomunicación

  2. La señal de señal (señal)
      es un método de comunicación más complejo, que se utiliza para notificar al proceso receptor que se ha producido un evento, además de la comunicación entre procesos, el proceso también puede enviar señales al proceso en sí mismo; Linux además de admitir la señal semántica de la función de señal temprana de Unix , Y también admite la función de señal sigaction, cuya semántica se ajusta al estándar Posix.1 (de hecho, esta función se basa en BSD. Para lograr un mecanismo de señal confiable, BSD también puede unificar la interfaz externa y volver a implementar la función de señal con la función de seguirction)

  3. Message Queue (Message Queue) La
      cola de mensajes es una lista vinculada de mensajes, incluida la cola de mensajes del sistema V de la cola de mensajes Posix. Los procesos con permisos suficientes pueden agregar mensajes a la cola, y los procesos con permisos de lectura pueden leer mensajes de la cola. La cola de mensajes supera las deficiencias de que la señal transporta menos información, la canalización solo puede transportar flujos de bytes sin formato y el tamaño de la memoria intermedia es limitado.

  4. La memoria compartida
      permite que múltiples procesos accedan al mismo espacio de memoria, la forma más rápida disponible de IPC. Está diseñado para la baja eficiencia de otros mecanismos de comunicación. A menudo se utiliza junto con otros mecanismos de comunicación, como los semáforos, para lograr la sincronización y la exclusión mutua entre procesos.

  5. El semáforo se
    utiliza principalmente como un método de sincronización entre procesos y entre diferentes hilos del mismo proceso.

  6. Socket (Socket) es un
      mecanismo de comunicación entre procesos más general que se puede utilizar para la comunicación entre procesos entre diferentes máquinas. Originalmente fue desarrollado por la rama BSD del sistema Unix, pero ahora generalmente se puede portar a otros sistemas similares a Unix: las variantes de Linux y System V admiten sockets.

En términos generales, el proceso en Linux contiene los siguientes elementos clave:

  • Hay un programa ejecutable
  • Tiene espacio de pila de sistema dedicado
  • El núcleo tiene su bloque de control (bloque de control del proceso), que describe los recursos ocupados por el proceso, de modo que el proceso pueda aceptar la programación del núcleo.
  • Con espacio de almacenamiento independiente.

El propósito de la comunicación entre subprocesos se utiliza principalmente para la sincronización de subprocesos, por lo que los subprocesos no tienen un mecanismo de comunicación para el intercambio de datos como la comunicación de proceso. Método de comunicación entre hilos en el sistema Linux :

  • Mecanismo de bloqueo : incluye bloqueo de mutex, condición variable, bloqueo de lectura-escritura y bloqueo de giro.
      Mutexes aseguran que solo un hilo pueda acceder a un recurso compartido a la vez. Cuando el bloqueo está ocupado, el hilo que intenta bloquearlo ingresa al estado de bloqueo (libera recursos de la CPU para que ingrese al estado de espera desde el estado de ejecución). El hilo de espera que puede obtener el bloqueo cuando se libera el bloqueo depende de la programación del núcleo.
      Bloqueo de lectura y escritura Cualquier hilo que intente bloquear (ya sea lectura o escritura) se bloquea cuando está bloqueado en modo de escritura y está en estado de escritura. El hilo de "lectura" no se bloquea cuando está bloqueado en modo de lectura y en el estado de lectura El hilo de "escritura" está bloqueado. El modo de lectura se comparte y el modo de escritura se excluyen mutuamente.
      Las variables de condición pueden bloquear procesos atómicamente hasta que cierta condición sea verdadera. La prueba de la condición se lleva a cabo bajo la protección del mutex. Las variables de condición siempre se usan con bloqueos mutex.
      Cuando el bloqueo de giro está bloqueado, el subproceso no está bloqueado, pero sondea en un bucle para ver si se puede obtener el bloqueo. Por lo tanto, los bloqueos giratorios son adecuados para arquitecturas paralelas (procesadores múltiples) o para situaciones en las que el bloqueo se mantiene por un corto tiempo y no desea incurrir en gastos generales durante el cambio de hilo.

  • Semáforo : incluye semáforo de hilo sin nombre y semáforo de hilo con nombre

  • Mecanismo de señal (señal) : similar al procesamiento de señal entre procesos

162 artículos originales publicados · elogiados 58 · 90,000 visitas

Supongo que te gusta

Origin blog.csdn.net/ThreeAspects/article/details/104416706
Recomendado
Clasificación