Un SO esegue una varietà di “programmi”:
- i sistemi a lotti (batch) eseguivano lavori (job)
- un sistema a partizione di tempo esegue programmi utente (task)
Spesso i termini lavoro e processo sono utilizzati in modo intercambiabile
Informalmente un processo può essere considerato come un programma in esecuzione
Un programma di per sé non è un processo
Il programma, anche detto sezione testo, è un’entità passiva, mentre il processo è un’entità attiva
Un processo include:
- contatore di programma (program counter)
- pila (stack)
- sezione di dati (data section)
Stato del processo
L’esecuzione di un processo deve progredire in maniera sequenziale
Mentre un processo è in esecuzione è soggetto a cambiamenti di stato
Ogni processo può trovarsi in uno tra i seguenti stati:
- nuovo (new): il processo viene creato
- in esecuzione (running): quando è in memoria ed ha il controllo della CPU
- in attesa (waiting): quando è temporaneamente sospeso in attesa di un evento, quale la terminazione di I/O, lo scadere di un timer, la ricezione di un messaggio, ..
- pronto (ready): quando è in memoria e pronto per l’esecuzione, ma non ha il controllo della CPU e attende di essere assegnato ad un’entità di elaborazione
- terminato (terminated): quando termina l’esecuzione e abbandona il sistema