Gruppo di processo - Process group

In un sistema operativo conforme a POSIX , un gruppo di processi denota una raccolta di uno o più processi . Tra l'altro, un gruppo di processi viene utilizzato per controllare la distribuzione di un segnale ; quando un segnale è diretto a un gruppo di processi, il segnale viene consegnato a ciascun processo che è un membro del gruppo.

Allo stesso modo, una sessione denota una raccolta di uno o più gruppi di processi. Un processo non può creare un gruppo di processi che appartiene a un'altra sessione; inoltre, non è consentito a un processo di unirsi a un gruppo di processi che è membro di un'altra sessione, ovvero non è consentito a un processo di migrare da una sessione all'altra.

Quando un processo sostituisce la sua immagine con una nuova immagine (chiamando una delle funzioni ), la nuova immagine è soggetta alla stessa appartenenza al gruppo di processi (e quindi alla sessione) della vecchia immagine. exec

Applicazioni

La distribuzione dei segnali ai gruppi di processi costituisce la base del controllo del lavoro impiegato dai programmi shell . Il driver del dispositivo TTY incorpora una nozione di gruppo di processi in primo piano , al quale invia segnali generati da interruzioni della tastiera , in particolare SIGINT ("interrupt", Control+ C), SIGTSTP ("terminal stop", Control+ Z) e SIGQUIT ("quit", Control+ \). Invia anche i segnali SIGTTIN e SIGTTOU a tutti i processi che tentano di leggere o scrivere sul terminale e che non sono nel gruppo di processi in primo piano. La shell, a sua volta, partiziona le pipeline di comandi che crea in gruppi di processi e controlla quale gruppo di processi è il gruppo di processi in primo piano del suo terminale di controllo , determinando così quali processi (e quindi quali pipeline di comandi) possono eseguire I/O e dal terminale in qualsiasi momento.

Quando la shell è un nuovo processo figlio per una pipeline di comandi, sia il processo della shell padre che il processo figlio trasformano immediatamente il processo figlio nel leader del gruppo di processi per la pipeline dei comandi. In questo modo, è garantito che il bambino sia il leader del gruppo di processo prima che il genitore o il bambino facciano affidamento su questo. fork

Laddove un'interfaccia utente testuale viene utilizzata su un sistema simile a Unix, le sessioni vengono utilizzate per implementare le sessioni di accesso . Un unico processo, il session leader , interagisce con il terminale di controllo per assicurare che tutti i programmi vengano terminati quando un utente "riaggancia" la connessione del terminale. (Laddove un leader di sessione è assente, i processi nel gruppo di processi in primo piano del terminale dovrebbero gestire i blocchi.)

Laddove viene utilizzata un'interfaccia utente grafica , il concetto di sessione è in gran parte perso e la nozione di sessioni del kernel è ampiamente ignorata. Le interfacce utente grafiche, come quelle in cui viene utilizzato il display manager di X , utilizzano un meccanismo diverso per implementare le sessioni di accesso.

Particolari

La chiamata di sistema viene utilizzata per creare una nuova sessione contenente un singolo (nuovo) gruppo di processi, con il processo corrente sia come leader della sessione che come leader del gruppo di processi di quel singolo gruppo di processi. I gruppi di processi sono identificati da un numero intero positivo, l' ID del gruppo di processi , che è l' identificatore del processo che è (o era) il leader del gruppo di processi. I gruppi di processo non devono necessariamente avere leader, anche se iniziano sempre con uno. Le sessioni sono identificate dall'ID del gruppo di processi del leader della sessione. POSIX vieta la modifica dell'ID del gruppo di processi di un leader di sessione. setsid

La chiamata di sistema viene utilizzata per impostare l'ID del gruppo di processi di un processo, unendo così il processo a un gruppo di processi esistente o creando un nuovo gruppo di processi all'interno della sessione del processo con il processo che diventa il leader del gruppo di processi del nuovo gruppo di processi creato gruppo. POSIX proibisce il riutilizzo di un ID di processo in cui esiste ancora un gruppo di processi con quell'identificatore (cioè dove il leader di un gruppo di processi è uscito, ma esistono ancora altri processi nel gruppo). Garantisce quindi che i processi non diventino accidentalmente leader del gruppo di processi. setpgid

La chiamata di sistemakill è in grado di indirizzare segnali sia a singoli processi che a gruppi di processi.

Guarda anche

Riferimenti

  1. ^ IEEE e The Open Group (2018). "3. Definizioni" . Le specifiche di base del gruppo aperto Edizione 7 . §296 . Recuperato il 30.08.2020 . Un insieme di processi che consente la segnalazione dei processi correlati.
  2. ^ a b kill  – System Interfaces Reference, The Single UNIX Specification , Issue 7 da The Open Group
  3. ^ IEEE e The Open Group (2018). "3. Definizioni" . Le specifiche di base del gruppo aperto Edizione 7 . § 343 . Recuperato il 30.08.2020 . Una raccolta di gruppi di processi [...]. Ogni gruppo di processi è un membro di una sessione.
  4. ^ setsid  – System Interfaces Reference, The Single UNIX Specification , Issue 7 da The Open Group
  5. ^ setpgid  – System Interfaces Reference, The Single UNIX Specification , Issue 7 da The Open Group

Ulteriori letture