Abbiamo iniziato l’articolo dedicato all’introduzione dei sistemi operativi (a cui questo articolo farà riferimento) introducendo il concetto di astrazione. In questo secondo articolo analizzeremo l’astrazione fondamentale di ogni sistema operativo: il processo.

Tutto il software in esecuzione su un calcolatore, a volte compreso il sistema operativo stesso (o una sua parte), è organizzato in un certo numero di processi sequenziali, chiamati semplicemente processi. Un processo è l’istanza di un programma in esecuzione, esso contiene tutti i “valori” di quest’ultimo, compresi i valori del Program Counter (PC) e di tutti i registri.

Ogni processo è caratterizzato da:

  • Un quantitativo di CPU utilizzata;
  • Un quantitativo di memoria utilizzata;
  • Un certo numero di file aperti.

Sistemi mono-programmati e sistemi multi-programmati

L’introduzione dei processi permette di operare una divisione netta dei sistemi che li implementano, esistono infatti:

  • Sistemi mono-programmati;
  • Sistemi multi-programmati.

Nei sistemi mono-programmati il processore è in grado di eseguire un solo processo per volta. Un processo B non può essere avviato finché il processo A non è stato completamente eseguito e terminato. Nei sistemi multi-programmati il processore può comunque eseguire un solo processo per volta, tuttavia esso implementa un procedimento noto come pseudo-parallelismo. Con lo pseudo-parallelismo il processore riesce a portare avanti contemporaneamente più processi, eseguendo per un breve periodo un frammento di ognuno (questo ovviamente considerando un sistema mono-processore).

Un processo si dice sospeso quando viene interrotto per consentire l’esecuzione di un secondo processo. La sospensione di un processo a favore di un altro processo avviene attraverso l’operazione di context switch. Le operazioni di context switch sono gestite dall’algoritmo di scheduler. Analizzeremo nel dettaglio lo scheduler in un capitolo a parte.