IPC significa Comunicación entre procesos.
Esta técnica permite que los procesos se comuniquen entre sí.
Dado que cada proceso tiene su propio espacio de direcciones y un espacio de usuario único, ¿cómo se comunican los procesos entre sí?
La respuesta es Kernel, el corazón del sistema operativo Linux que tiene acceso a toda la memoria. Entonces podemos solicitar al kernel que asigne el espacio que se puede usar para comunicarse entre procesos.
El proceso también se puede comunicar al tener un archivo accesible para ambos procesos. Los procesos pueden abrir y leer/escribir el archivo, lo que requiere muchas operaciones de E/S que consumen tiempo.
Diferentes tipos de IPCS
Hay varios IPC que permiten que un proceso se comunique con otros procesos, ya sea en la misma computadora o en una computadora diferente en la misma red.
- Tubos – Proporciona una forma para que los procesos se comuniquen entre sí mediante el intercambio de mensajes. Las canalizaciones con nombre proporcionan una forma para que los procesos que se ejecutan en diferentes sistemas informáticos se comuniquen a través de la red.
- Memoria compartida – Los procesos pueden intercambiar valores en la memoria compartida. Un proceso creará una parte de la memoria a la que puede acceder otro proceso.
- Cola de mensajes – Es una lista estructurada y ordenada de segmentos de memoria donde los procesos almacenan o recuperan datos.
- Semáforos – Proporciona un mecanismo de sincronización para los procesos que acceden al mismo recurso. No se pasan datos con un semáforo; simplemente coordina el acceso a los recursos compartidos.
10 Ejemplo de comando IPCS
ipcs es un comando de UNIX/Linux, que se utiliza para enumerar la información sobre la comunicación entre procesos. El comando ipcs proporciona un informe sobre System V IPCS (cola de mensajes, semáforo y memoria compartida).
Ejemplo 1 de IPCS:Enumere todas las instalaciones de IPC
El comando ipcs con la opción -a enumera todas las instalaciones de IPC que tienen acceso de lectura para el proceso actual. Proporciona detalles sobre la cola de mensajes, el semáforo y la memoria compartida.
# ipcs -a ------ Shared Memory Segments -------- key shmid owner perms bytes nattch status 0xc616cc44 1056800768 oracle 660 4096 0 0x0103f577 323158020 root 664 966 1 0x0000270f 325713925 root 666 1 2 ------ Semaphore Arrays -------- key semid owner perms nsems 0x0103eefd 0 root 664 1 0x0103eefe 32769 root 664 1 0x4b0d4514 1094844418 oracle 660 204 ------ Message Queues -------- key msqid owner perms used-bytes messages 0x000005a4 32768 root 644 0 0
Todas las instalaciones de IPC tienen una clave e identificador únicos, que se utilizan para identificar una instalación de IPC.
Ejemplo 2 de IPCS:enumerar toda la cola de mensajes
ipcs con la opción -q, enumera solo las colas de mensajes para las que el proceso actual tiene acceso de lectura.
$ ipcs -q ------ Message Queues -------- key msqid owner perms used-bytes messages 0x000005a4 32768 root 644 0 0
Ejemplo 3 de IPCS. Listar todos los semáforos
La opción ipcs -s se usa para listar los semáforos accesibles.
# ipcs -s ------ Semaphore Arrays -------- key semid owner perms nsems 0x0103eefd 0 root 664 1 0x0103eefe 32769 root 664 1 0x4b0d4514 1094844418 oracle 660 204
Ejemplo 4 de IPCS. Listar toda la memoria compartida
La opción ipcs -m con el comando ipcs enumera las memorias compartidas.
# ipcs -m ------ Shared Memory Segments -------- key shmid owner perms bytes nattch status 0xc616cc44 1056800768 oracle 660 4096 0 0x0103f577 323158020 root 664 966 1 0x0000270f 325713925 root 666 1 2
Ejemplo 5 de IPCS. Información detallada sobre una instalación de PCI
La opción ipcs -i proporciona información detallada sobre una instalación de ipc.
# ipcs -q -i 32768 Message Queue msqid=32768 uid=0 gid=0 cuid=0 cgid=0 mode=0644 cbytes=0 qbytes=65536 qnum=0 lspid=0 lrpid=0 send_time=Not set rcv_time=Not set change_time=Thu Aug 5 13:30:22 2010
La opción -i con -q proporciona información sobre una cola de mensajes en particular. La opción -i con -s proporciona detalles del semáforo. La opción -i con -m proporciona detalles sobre una memoria compartida.
Ejemplo 6 de IPCS. Lista los límites para la instalación de IPC
La opción ipcs -l proporciona los límites del sistema para cada instalación de ipc.
# ipcs -m -l ------ Shared Memory Limits -------- max number of segments = 4096 max seg size (kbytes) = 67108864 max total shared memory (kbytes) = 17179869184 min seg size (bytes) = 1
El comando anterior da los límites para la memoria compartida. -l se puede combinar con -q y -s para ver los límites de la cola de mensajes y los semáforos respectivamente.
La opción única -l proporciona los límites para las tres instalaciones de IPC.
# ipcs -l
Ejemplo 7 de IPCS. Lista de detalles del creador y del propietario para la instalación de IPC
La opción ipcs -c enumera el ID de usuario y el ID de grupo del creador y el ID de usuario y el ID de grupo del propietario. Esta opción se puede combinar con -m, -s y -q para ver los detalles del creador para una instalación de IPC específica.
# ipcs -m -c ------ Shared Memory Segment Creators/Owners -------- shmid perms cuid cgid uid gid 1056800768 660 oracle oinstall oracle oinstall 323158020 664 root root root root 325713925 666 root root root root
Ejemplo 8 de IPCS. Identificadores de proceso que accedieron a la instalación de IPC recientemente
La opción ipcs -p muestra la identificación del creador y la identificación del proceso que accedió a la función ipc correspondiente muy recientemente.
# ipcs -m -p ------ Shared Memory Creator/Last-op -------- shmid owner cpid lpid 1056800768 oracle 16764 5389 323158020 root 2354 2354 325713925 root 20666 20668
-p también se puede combinar con -m, -s o -q.
Ejemplo 9 de IPCS. Hora del último acceso
La opción ipcs -t muestra la hora de la última operación en cada instalación de ipc. Esta opción también se puede combinar con -m, -s o -q para imprimir para un tipo específico de instalación de ipc. Para la cola de mensajes, la opción -t muestra la última hora de envío y recepción, para la memoria compartida muestra la última conexión (parte de la memoria) y la marca de tiempo separada y para el semáforo muestra la última operación y los detalles de la hora cambiada.
# ipcs -s -t ------ Semaphore Operation/Change Times -------- semid owner last-op last-changed 0 root Thu Aug 5 12:46:52 2010 Tue Jul 13 10:39:41 2010 32769 root Thu Aug 5 11:59:10 2010 Tue Jul 13 10:39:41 2010 1094844418 oracle Thu Aug 5 13:52:59 2010 Thu Aug 5 13:52:59 2010
IPCS Ejemplo 10. Estado de uso actual
ipcs con el comando -u muestra el uso actual de todas las instalaciones de IPC. Esta opción se puede combinar con una opción específica para mostrar el estado de una instalación de IPC en particular.
# ipcs -u ------ Shared Memory Status -------- segments allocated 30 pages allocated 102 pages resident 77 pages swapped 0 Swap performance: 0 attempts 0 successes ------ Semaphore Status -------- used arrays = 49 allocated semaphores = 252 ------ Messages: Status -------- allocated queues = 1 used headers = 0 used space = 0 bytes