En un sistema operativo compatible con POSIX , un grupo de procesos denota una colección de uno o más procesos . [ 1 ] Entre otras cosas, un grupo de procesos se utiliza para controlar la distribución de una señal ; cuando una señal se dirige a un grupo de procesos, la señal se entrega a cada proceso que es miembro del grupo. [ 2 ]
De manera similar, una sesión denota una colección de uno o más grupos de procesos. [ 3 ] Un proceso no puede crear un grupo de procesos que pertenezca a otra sesión; además, un proceso no puede unirse a un grupo de procesos que sea miembro de otra sesión , es decir, un proceso no puede migrar de una sesión a otra.
Cuando un proceso reemplaza su imagen con una nueva imagen (llamando a una de las execfunciones ), la nueva imagen está sujeta a la misma pertenencia al grupo de procesos (y por lo tanto a la misma sesión) que la imagen anterior.
Aplicaciones
La distribución de señales a grupos de procesos constituye la base del control de trabajos empleado por los programas de shell . El controlador del dispositivo TTY incorpora la noción de un grupo de procesos en primer plano , al que envía señales generadas por interrupciones de teclado , en particular SIGINT ("interrupción", Control+C ), SIGTSTP ("parada de terminal", + ) y SIGQUIT ("salida", + ). También envía las señales SIGTTIN y SIGTTOU a cualquier proceso que intente leer o escribir en la terminal y que no pertenezca al grupo de procesos en primer plano. El shell, a su vez, divide las tuberías de comandos que crea en grupos de procesos y controla qué grupo de procesos es el grupo de procesos en primer plano de su terminal controladora , determinando así qué procesos (y, por lo tanto, qué tuberías de comandos) pueden realizar operaciones de entrada/salida hacia y desde la terminal en un momento dado.ControlZControl\
Cuando el intérprete de comandos forkagrega un nuevo proceso hijo a una secuencia de comandos, tanto el proceso padre como el hijo lo convierten inmediatamente en el líder del grupo de procesos de dicha secuencia. Esto garantiza que el hijo sea el líder del grupo de procesos antes de que el padre o el hijo dependan de ello.
En sistemas tipo Unix con interfaz de usuario textual , se utilizan sesiones para gestionar el inicio de sesión . Un único proceso, el líder de sesión , interactúa con la terminal para asegurar que todos los programas finalicen cuando un usuario cierra la conexión. (Si no hay un líder de sesión, los procesos del grupo de procesos en primer plano de la terminal se encargan de gestionar las desconexiones).
Cuando se utiliza una interfaz gráfica de usuario , el concepto de sesión se pierde en gran medida y la noción de sesiones del núcleo se ignora casi por completo. Las interfaces gráficas de usuario, como aquellas que emplean el gestor de pantalla X , utilizan un mecanismo diferente para implementar las sesiones de inicio de sesión.
Detalles
La llamada al sistemasetsid se utiliza para crear una nueva sesión que contiene un único grupo de procesos (nuevo), con el proceso actual como líder de la sesión y líder del grupo de procesos de ese único grupo de procesos. [ 4 ] Los grupos de procesos se identifican mediante un entero positivo, el ID del grupo de procesos , que es el identificador del proceso que es (o fue) el líder del grupo de procesos. Los grupos de procesos no necesariamente tienen que tener líderes, aunque siempre comienzan con uno. Las sesiones se identifican mediante el ID del grupo de procesos del líder de la sesión. POSIX prohíbe el cambio del ID del grupo de procesos de un líder de sesión.
La llamada al sistema setpgidse utiliza para establecer el ID del grupo de procesos de un proceso, uniéndolo así a un grupo de procesos existente o creando un nuevo grupo de procesos dentro de la sesión del proceso, convirtiéndose este en el líder del grupo recién creado. [ 5 ] POSIX prohíbe la reutilización de un ID de proceso cuando aún existe un grupo de procesos con ese identificador (es decir, cuando el líder de un grupo de procesos ha finalizado, pero otros procesos en el grupo aún existen). De esta manera, garantiza que los procesos no se conviertan accidentalmente en líderes de grupos de procesos.
La llamada al sistemakill es capaz de dirigir señales tanto a procesos individuales como a grupos de procesos. [ 2 ]
Véase también
- cgroups
- Administrador de objetos de Windows , específicamente objetos de trabajo y límites de recursos asociados [ 6 ]
Referencias
- Especificación única de UNIX , Edición 6
- ↑ IEEE y The Open Group (2018). "3. Definiciones" . The Open Group Base Specifications Issue 7. § 296. Consultado el 30 de agosto de 2020.
Una colección de procesos que permite la señalización de procesos relacionados.
- 1 2 – Referencia de interfaces del sistema, Especificación única de UNIX , Versión 5 de The Open Group
- ↑ IEEE y The Open Group (2018). "3. Definiciones" . The Open Group Base Specifications Issue 7. § 343. Consultado el 30 de agosto de 2020.
Una colección de grupos de procesos [...]. Cada grupo de procesos es miembro de una sesión.
- ↑ – Referencia de interfaces del sistema, Especificación única de UNIX , Versión 5 de The Open Group
- ↑ – Referencia de interfaces del sistema, Especificación única de UNIX , Versión 5 de The Open Group
- ↑ Karl-Bridge-Microsoft (7 de enero de 2021). "Objetos de trabajo - Aplicaciones Win32" . docs.microsoft.com . Consultado el 28 de agosto de 2022 .
Lecturas adicionales
- McKusick, Marshall Kirk; Neville-Neil, George V. (2 de agosto de 2004). «Gestión de procesos en FreeBSD: Grupos de procesos y sesiones» . Diseño e implementación del sistema operativo FreeBSD . Addison Wesley. ISBN 0-201-70245-2.
- Grupos de señales y procesos de UNIX
- Proceso (informática)
- POSIX