Corso di Sistemi Operativi

Funzioni di un SO: gestione dei processi I

 

Data la complessità di un SO, esso può avere componenti alquanto diverse tra loro e un sistema può differire da un altro per moltissimi aspetti.
Tuttavia all’interno di un qualsiasi SO è quasi sempre possibile trovare dei sottosistemi che interagiscono tra loro per realizzare le funzioni necessarie alla gestione dell’intero sistema di elaborazione:
1. Gestione dei processi
2. Gestione della memoria principale
3. Gestione della memoria secondaria
4. Gestione del file system
5. Gestione dei dispositivi di I/O
6. Protezione delle risorse
7. Interprete dei comandi

Un concetto chiave in tutti i sistemi operativi è il processo, ovvero l’istanza di un programma in esecuzione, che è costituito da:
1. il codice eseguibile (detto anche testo);
2. i dati su cui il codice lavora;
3. una lista (più o meno lunga) di strutture dati e informazioni che occupano risorse di sistema.
E’ indispensabile comprendere che programma e processo sono due cose distinte.
Un programma è un’entità passiva, un codice binario che può risiedere in un sistema di memorizzazione (come il disco) anche se il computer è spento e la cui durata può essere (almeno in teoria) infinita.
Di contro, un processo è un’entità attiva, che scaturisce da un programma quando questo viene mandato in esecuzione e la cui durata è variabile e dipende dall’ambiente di esecuzione.
Inoltre per esistere un processo ha bisogno che il computer sia almeno acceso :-).

Per chiarire meglio il concetto facciamo un esempio.
Quando in un sistema Microsoft WindowsÒ eseguiamo l’applicazione “Notepad” (“Blocco note” nella versione italiana), il sistema crea un processo a partire dal programma notepad.exe che si trova nella directory di sistema (tipicamente C:\WINDOWS).
Il processo non esiste finché non ne invochiamo esplicitamente la creazione, mentre il programma era già nel computer quando il sistema è stato avviato.
Se, inoltre, mandiamo più volte in esecuzione il programma (attenti a non esagerare!), vedremo aprirsi tante finestre dell'editor quante sono state le nostre selezioni: ciascuna copia del Notepad non è altro che un'istanza dello stesso programma notepad.exe, e per il sistema ognuna di esse è un processo distinto.
Altrettanto avviene in qualsiasi altro SO, anche se esistono varianti che al momento non è il caso di considerare.

Per potere eseguire un programma è necessario che esso sia caricato in memoria principale, insieme ad una serie di informazioni indispensabili, come ad es. valori di variabili e il puntatore alla prima istruzione da eseguire (noto come program counter, spesso indicato con la sigla pc), che complessivamente prendono il nome di contesto del processo.
Durante l’esecuzione il pc viene continuamente aggiornato per puntare alla locazione di memoria che contiene l’istruzione da eseguire al passo successivo.
Se un SO permette l’esecuzione contemporanea di più processi, detti anche task, allora si dice che il SO è multitasking o multiprogrammato.
Tutti i sistemi attuali sono multitasking, classici esempi di sistemi monoprogrammati sono le versioni di MS-DOS precedenti alla 5.0.

In sistemi con un solo processore (per intenderci, la stragrande maggioranza dei PC) non è possibile che più processi vengano eseguiti contemporaneamente dall’unica CPU, ma esistono dei meccanismi del SO che consentono di avere l’illusione che ciò avvenga, attraverso un continuo passaggio da un processo all’altro; si parla perciò di pseudo-parallelismo, per distinguerlo dal parallelismo reale che avviene nei sistemi con più CPU.
Perché il multitasking possa funzionare è necessario che il SO, prima di passare da un processo ad un altro, salvi il contesto del processo che sta eseguendo attualmente, in modo che quando esso verrà rimesso in esecuzione, potrà proseguire dal punto in cui era stato sospeso senza accorgersi di nulla.
Quando un processore passa da un processo ad un altro si dice che esegue un cambio di contesto, ovvero un context switch.
Nella prossima puntata continueremo a parlare di processi.

 

Torna all'indice Generale del corso di Corso di Sistemi Operativi di Software Planet