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

Aplicaciones

La distribución de señales a los grupos de procesos constituye la base del control de tareas empleado por los programas de shell . El controlador de dispositivo TTY incorpora una noción de un 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 de 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 en 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 en primer plano de su terminal controladora , determinando así qué procesos (y, por lo tanto, qué canalizaciones de comandos) pueden realizar E/S hacia y desde el terminal en un momento dado.ControlZControl\

Cuando el shell forkes un nuevo proceso secundario para una secuencia de comandos, tanto el proceso principal como el secundario convierten inmediatamente al proceso secundario en el líder del grupo de procesos para la secuencia de comandos. De esta manera, se garantiza que el secundario sea el líder del grupo de procesos antes de que el principal o el secundario confíen en que así sea.

Cuando se utiliza una interfaz de usuario textual en un sistema tipo Unix, se utilizan sesiones 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 no hay un líder de sesión, se espera que los procesos del grupo de procesos en primer plano del terminal se encarguen de los bloqueos).

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 las que se utilizan con 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 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 necesitan necesariamente 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, donde el proceso se convierte en el líder del grupo de procesos del grupo recién creado. [5] POSIX prohíbe la reutilización de un ID de proceso cuando todavía existe un grupo de procesos con ese identificador (es decir, cuando el líder de un grupo de procesos ha salido, pero todavía existen otros procesos en el grupo). De este modo, garantiza que los procesos no puedan convertirse accidentalmente en líderes de un grupo de procesos.

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

Véase también

Referencias

  1. ^ IEEE y The Open Group (2018). "3. Definiciones". Especificaciones básicas de The Open Group , número 7. § 296. Consultado el 30 de agosto de 2020. Colección de procesos que permite la señalización de procesos relacionados .
  2. ^ ab kill – Referencia de interfaces del sistema, la 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 The Open Group , número 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.
  4. ^ setsid  – Referencia de interfaces del sistema, La especificación única de UNIX , versión 4 de The Open Group
  5. ^ setpgid  – Referencia de interfaces del sistema, La 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 .

Lectura adicional