stringtranslate.com

grupo de procesos

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, a un proceso no se le permite unirse a un grupo de procesos que sea miembro de otra sesión; es decir, a un proceso no se le permite 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 membresía de grupo de proceso (y por lo tanto de sesión) que la imagen anterior.

Aplicaciones

La distribución de señales a grupos de procesos forma la base del control de trabajo empleado por los programas shell . El controlador de dispositivo TTY incorpora una noción de grupo de procesos en primer plano , al que envía señales generadas por interrupciones del teclado , en particular SIGINT ("interrupción", Control+ C), SIGTSTP ("parada terminal", + ) y SIGQUIT ("salir", + ). También envía las señales SIGTTIN y SIGTTOU a cualquier proceso que intente leer o escribir en el terminal y que no esté en el grupo de procesos de primer plano. El shell, a su vez, divide las canalizaciones de comandos que crea en grupos de procesos y controla qué grupo de procesos es el grupo de procesos de primer plano de su terminal de control , determinando así qué procesos (y por lo tanto qué canalizaciones de comandos) pueden realizar E/S y desde la terminal en cualquier momento.ControlZControl\

Cuando el shell forkes un nuevo proceso hijo para una canalización de comandos, tanto el proceso de shell padre como el proceso hijo convierten inmediatamente al proceso hijo en el líder del grupo de procesos para la canalización de comandos. De esta manera, se garantiza que el niño sea el líder del grupo de proceso antes de que el padre o el niño confíen en que así sea.

Cuando se utiliza una interfaz de usuario textual en un sistema tipo Unix, las sesiones se utilizan para implementar sesiones de inicio de sesión . Un único proceso, el líder de sesión , interactúa con el terminal de control para garantizar que todos los programas finalicen cuando un usuario "cuelga" la conexión del terminal. (Cuando un líder de sesión está ausente, se espera que los procesos en el grupo de procesos de primer plano de la terminal manejen los cuelgues).

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 en gran medida. Las interfaces gráficas de usuario, como donde se emplea el administrador de pantalla X , utilizan un mecanismo diferente para implementar sesiones de inicio de sesión.

Detalles

La llamada al sistema setsid se utiliza para crear una nueva sesión que contiene un único (nuevo) grupo de procesos, 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 número 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, uniendo así el proceso a un grupo de procesos existente o creando un nuevo grupo de procesos dentro de la sesión del proceso y el proceso se convierte en el líder del grupo de procesos del recién creado. grupo. [5] POSIX prohíbe la reutilización de un ID de proceso donde todavía existe un grupo de procesos con ese identificador (es decir, donde el líder de un grupo de procesos ha salido, pero aún existen otros procesos en el grupo). De este modo se garantiza que los procesos no se conviertan accidentalmente en líderes de grupo de procesos.

La llamada al sistemakill es capaz de dirigir señales a procesos individuales o a grupos de procesos. [2]

Ver también

Referencias

  1. ^ IEEE y The Open Group (2018). "3. Definiciones". Especificaciones básicas de Open Group, edición 7 . Artículo 296 . Consultado el 30 de agosto de 2020 . Conjunto de procesos que permite la señalización de procesos relacionados.
  2. ^ ab kill - Referencia de interfaces del sistema, especificación única de UNIX , versión 4 de The Open Group
  3. ^ IEEE y The Open Group (2018). "3. Definiciones". Especificaciones básicas de Open Group, edición 7 . Artículo 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.
  4. ^ setsid  - Referencia de interfaces del sistema, especificación única de UNIX , versión 4 de The Open Group
  5. ^ setpgid  - Referencia de interfaces del sistema, especificación única de UNIX , versión 4 de The Open Group
  6. ^ Karl-Bridge-Microsoft. "Objetos de trabajo: aplicaciones Win32". docs.microsoft.com . Consultado el 28 de agosto de 2022 .

Otras lecturas