Introduzione ai processi sotto Linux/Unix

Uno dei principali motivi del successo di Unix Ŕ senza dubbio dovuto alla sua capacitÓ di multitasking. Per multitasking si intende la possibilitÓ da parte del sistema operativo di far girare contemporaneamente pi¨ di una applicazione.

Ogni programma, ogni comando che si lancia, ogni servizio attivo sul sistema da origine a uno o pi¨ processi.
Ad ogni processo viene assegnato un numero che lo identifica univocamente, chiamato PID (Process IDentificator). Ogni processo, tranne init (a cui corrisponde il PID 1), Ŕ generato da un'altro processo di cui si definisce il PPID (Parent PID). Si parla quindi di processo padre (parent) e processo figlio (child).
Un processo consta di: codice eseguibile, posizione di esecuzione, dati che gestisce, file aperti, ambiente di esecuzione, credenziali.
Quando lo stesso programma Ŕ eseguito pi¨ volte nel sistema, anche da parte di utenti diversi, alcune parti dello stesso possono essere condivise (shared) in memoria: il codice in esecuzione e le eventuali librerie di sistema caricate, altre parti come i dati, i file aperti, il PID.
Un processo pu˛ generare una copia di se stesso (fork), cha ha PID diverso e PPID uguale al proprio PID.

La Schedulazione da parte del kernel
Nel kernel di un sistema operativo lo schedulatore (dispatcher) Ŕ responsabile della coordinazione dei processi in esecuzione per gestire i loro accessi alle risorse e assicurare che abbiano accesso alla CPU per un tempo relativo alla loro prioritÓ assegnata, senza rischiare che alcuni processi intasino completamente il CPU time ed altri non riescano ad utilizzarla minimamente.
La schedulazione Ŕ un'operazione del kernel che definisce i seguenti stati di processo:
R - running, il processo Ŕ in esecuzione;
S - sleeping, il processo Ŕ in attesa (input dell'utente, conclusione di altri processi ecc..);
Z - zombie, il processo Ŕ morto ed aspetta che il parent chieda un codice d'uscita.
Ad ogni processo Ŕ associata una prioritÓ, un valore che varia fra -20 e 19, che determina quanta CPU time rispetto agli altri il sistema gli deve dedicare.
La prioritÓ pre-impostata di un task Ŕ 0 (-20 Ŕ considerata la prioritÓ pi¨ alta). Solo l'amministratore puo resettare la prioritÓ di un processo per portarla al di sotto di 0, ma i normali utenti possono variare la prioritÓ per i valori positivi (usando il comando 'renice').
I nuovi processi ereditano la prioritÓ dei loro padri.

JOB
La shell Unix Ŕ il tipico mezzo con cui vengono lanciati processi sul sistema (oltre ad essere essa stessa un normale processo), la shell assegna ad ogni processo lanciato da un utente un numero di job, e permette di mandare in foreground o background al sua esecuzione.

Privacy Policy