Process control block (Unix)
Aspetto
Il Process control block nei sistemi Unix e Unix-like include tra le altre le seguenti informazioni.
Attributi non ereditati
Questi attributi non sono ereditati dai processi figli creati tramite fork()
- PID: identifica univocamente il processo nel sistema.
- parent parent PID: identifica il processo padre
Attributi ereditati non modificati da exec()
I processi figli creati tramite fork() ereditano una copia dei seguenti attributi, e successive invocazioni di exec() non li modificano:
- PGID: identifica il gruppo di processi di cui questo processo fa parte, ed anche il processo leader del gruppo. Tutti i processi possono modificarselo (con dei limiti) tramite la chiamata di sistema setpgrp()
- SID (Session ID): identifica la sessione di cui questo processo fa parte. Tutti i processi possono modificarselo (con dei limiti) tramite le chiamate di sistema setsid() e setpgrp()
- real UID corrente: identifica l'utente reale proprietario del processo. I processi privilegiati possono modificarselo tramite le chiamate di sistema setuid() e setreuid().
- real GID corrente: identifica il gruppo principale reale. I processi privilegiati possono modificarselo tramite le chiamate di sistema setgid() e setregid().
- umask corrente: indica i permessi da negare in fase di creazione di un nuovo File o Directory. Tutti i processi possono modificarsela tramite la chiamata di sistema umask()
- l'elenco dei GID supplementari (in numero dipendente dall'implementazione). I processi privilegiati possono modificarsela tramite la chiamata di sistema setgroups()
- l'elenco dei file descriptor correntemente aperti
- puntatore all'Inode della directory corrente. Tutti i processi possono modificarselo tramite la chiamata di sistema chdir()
- puntatore all'Inode della directory da considerare come radice del file system. I processi privilegiati possono modificarselo tramite la chiamata di sistema chroot()
- puntatore alla struttura che rappresenta il terminale controllante. Può anche non esservi alcun terminale controllante associato al processo.
Attributi ereditati e modificati da exec()
I processi figli creati tramite fork() ereditano una copia dei seguenti attributi, ma una successiva invocazione di exec() li può modificare:
- effective UID corrente: identifica l'utente da usare ai fini dei permessi. Normalmente è identico al real UID, ma può essere diverso in caso di programmi set User ID. I processi privilegiati possono modificarselo tramite le chiamate di sistema setuid() e setreuid()
- effective GID corrente: identifica il gruppo principale da usare ai fini dei permessi. Normalmente è identico al real GID, ma può essere diverso in caso di programmi set User ID. I processi privilegiati possono modificarselo tramite le chiamate di sistema setgid() e setregid()
- saved effective UID: è il valore dell'effective UID dopo l'ultimo caricamento di un programma tramite exec(). I processi privilegiati possono modificarselo tramite la chiamata di sistema setuid()
- saved effective GID: è il valore dell'effective GID dopo l'ultimo caricamento di un programma tramite exec(). I processi privilegiati possono modificarselo tramite la chiamata di sistema setgid()
- puntatori ai gestori dei segnali: ogni processo può modificarseli tramite la chiamata di sistema sigaction()