08/08/2013 M. Malatesta 2-Stati di un processo-05
1
Modulo T3
2-Stati di un processo
Corso di Informatica
Prerequisiti
Concetto intuitivo di coda
Cooperazione e competizione
Prerilascio di una risorsa
Concetto intuitivo di interruzione
08/08/2013 M. Malatesta 2-Stati di un processo-05
3
Introduzione
I primi elaboratori richiedevano ai programmatori ampie conoscenze dell’hardware sottostante (memoria, processore, unità a disco, ecc) Le tecnologie informatiche portarono allo sviluppo di software di base che
evitava al programmatore di dover conoscenze la parte elettronica del computer: il sistema operativo (SO).
Quali criteri può seguire il nucleo per assegnare la CPU ai processi?
Cosa succede se un processo richiede un’operazione di I/O?
Come rappresentare gli stati in cui si può trovare un processo?
Un processo che svolge calcoli ha priorità rispetto a uno che fa I/O?
A queste domande diamo una risposta in questa Unità.
08/08/2013 M. Malatesta 2-Stati di un processo-05
4
Stati di un processo
Durante il suo ciclo di vita, l’avanzamento di un processo può essere considerato come una serie di transizioni di stato.
Normalmente, per semplicità didattica, consideriamo un sistema hardware monoprocessore. Distinguiamo i soli tre stati seguenti:
1. attesa 2. pronto 3. esecuzione
Il passaggio di un processo da uno stato ad un altro prende il nome di transizione ed è effettuato dal nucleo in base a delle tecniche che vedremo in seguito.
08/08/2013 M. Malatesta 2-Stati di un processo-05
5
Stati di un processo
- attesa
Un processo P si trova in stato di attesa, o blocco, quando esso attende l’ottenimento di una risorsa (hardware o software) esterna alla CPU.
Possiamo distinguere:
attesa passiva (il processo non occupa la risorsa e quando questa si libera segnala la sua disponibilità, mediante la tecnica delle interruzioni)
attesa attiva (il processo detiene la risorsa fino a quando non si liberi, tecnica nota come busy waiting).
I processi in attesa, sono mantenuti in una lista dei processi bloccati..
Uno dei motivi per cui un processo P va in stato di attesa potrebbe essere la necessità di sincronizzarsi con un altro processo P’. Quando la
sincronizzazione avviene, P viene rimosso dallo stato di blocco.
Stati di un processo
- pronto
Un processo P si trova in stato di pronto quando esso attende il solo ottenimento della CPU per poter avanzare, disponendo di tutte le altre risorse.
I processi in stato di pronto (più precisamente i loro descrittori) sono mantenuti in una lista detta lista dei pronti (ready list).
La lista dei pronti viene mantenuta ordinata e gestita come una coda semplice o come una coda con priorità.
08/08/2013 M. Malatesta 2-Stati di un processo-05
7
Stati di un processo
- esecuzione
Un processo P si trova in stato di esecuzione quando, disponendo di tutte le risorse (la CPU e tutte quelle di cui necessita), avanza realmente.
08/08/2013 M. Malatesta 2-Stati di un processo-05
8
Grafo degli stati
Le transizioni di un processo da uno stato ad un altro possono essere rappresentate mediante il seguentte schema, detto grafo degli stati.
08/08/2013 M. Malatesta 2-Stati di un processo-05
9
Transizioni di stato
- pronto esecuzione
Quando il processore si rende libero, il nucleo decide quale processo prelevare dalla ready list e gli si assegna il processore, consentendogli così di avanzare.
Il nucleo sceglie di volta in volta il processo da mandare in esecuzione, in base ad un algoritmo detto schedulatore a basso livello o schedulatore a breve termine (short term scheduler), o semplicemente schedulatore che sfrutta tecniche descritte più avanti..
Quando l’avanzamento di un processo si interrompe in favore di un altro, si dice che avviene una commutazione di contesto (context switching).
Ovviamente questa operazione richiede il salvataggio ed il conseguente caricamento dei registri, della mappa della memoria, di tabelle, liste ecc.
Transizioni di stato
- esecuzione pronto
Il nucleo toglie al processo P in corso di esecuzione l’uso della CPU e P commuta in stato di pronto.
Ciò può avvenire quando:
il processo P termina;
scade il quanto di tempo di CPU assegnato a P;
sopraggiunge un processo P’ a priorità maggiore.
Negli ultimi due casi si ha il prerilascio della risorsa CPU da parte di P.
08/08/2013 M. Malatesta 2-Stati di un processo-05
11
Transizioni di stato
- esecuzione blocco
Il processo P per avanzare necessita di una risorsa diversa dalla CPU; sono necessari i seguenti passi:
P richiede la risorsa attraverso una chiamata di sistema al nucleo;
il nucleo verifica se esiste un processo P’ in grado di soddisfarla;
se P’ è disponibile, il nucleo sincronizza P con P’ e quando sarà il suo turno, P riprenderà ad avanzare.
Ovviamente, il nucleo nel sincronizzare i processi, dovrà verificare se si tratti di una competizione per l’uso di una stessa risorsa, o se di una cooperazione.
Naturalmente, nel caso di sistemi multiprocessore, al nucleo spetterà il delicato compito di gestire il flusso di tutti i processi sui vari processori e tutte le interazioni fra i vari processi che possono essere contemporaneamente in memoria o in esecuzione.
08/08/2013 M. Malatesta 2-Stati di un processo-05
12
Transizioni di stato
- esecuzione blocco
Se P’ è un processo, la sincronizzazione avviene mediante una chiamata di sistema al nucleo.
Se P’ è uno pseudoprocesso (come i driver di I/O, che hanno il compito di far comunicare i processi con i dispositivi di I/O), la sincronizzazione avviene mediante il trattamento di un segnale di interruzione.
Quando un processo richiede l’intervento di un dispositivo di I/O:
1. il processo viene posto dal nucleo in stato di blocco fino all’arrivo del segnale di interruzione da parte del dispositivo.
2. il segnale di interruzione produce il wake up del driver corrispondente che trasferisce il dato.
3. il processo richiedente viene risvegliato
08/08/2013 M. Malatesta 2-Stati di un processo-05
13
Transizioni di stato
- blocco pronto
Il processo viene risvegliato, cioè ottiene la risorsa richiesta e solo potenzialmente è in grado di avanzare (waking up).
Viene inserito nella ready list e al momento opportuno passerà in stato di esecuzione.
Struttura del nucleo
Il nucleo, o kernel, è costituito da un insieme di routine assembly, che risiede in una apposita area di memoria principale.
Gli algoritmi del nucleo che svolgono le transizioni di stato di un processo devono essere veloci per evitare che il nucleo occupi troppo tempo macchina, sottraendolo ai processi utente.
Dato che le dimensioni del nucleo vanno generalmente mantenute ridotte (nucleo minimo) è interessante notare che le sue routine assembly possono essere implementate attraverso firmware e in tal caso si hanno notevoli vantaggi in termini di velocità operativa (nucleo microprogrammato).
08/08/2013 M. Malatesta 2-Stati di un processo-05
15
Kernel mode e user mode
Come sappiamo, il nucleo ha il compito di gestire le risorse in modo che gli utenti non possano usufruirne direttamente e ciò per motivi di sicurezza e integrità dell’intero sistema.
Una delle soluzioni adottate a questo scopo è fare in modo che l’esecuzione di istruzioni potenzialmente pericolose, dette istruzioni privilegiate sia compito esclusivo del nucleo del SO.
Quando è in esecuzione il nucleo del SO si dice che la CPU è in stato supervisore (Kernel Mode), altrimenti si dice che si trova in stato problema (User Mode).
08/08/2013 M. Malatesta 2-Stati di un processo-05
16
Kernel mode e user mode
La transizione da User Mode a Kernel Mode si verifica proprio grazie alle istruzioni (non privilegiate) che abbiamo già definito chiamate di sistema o SC (Supervisor Call o System Call) che possono essere indicate con
SC (parametro)
dove parametro indica il particolare servizio richiesto al nucleo.
08/08/2013 M. Malatesta 2-Stati di un processo-05
17
Kernel mode e user mode
La transizione da Kernel Mode a User Mode avviene invece con una istruzione privilegiata che restituisce la CPU al processo interrotto e che ha la forma
LPS (parola_di _stato)
dove parola_di_stato indica l’indirizzo di memoria che contiene la rappresentazione del nuovo stato in cui si dovrà portare subito dopo l’esecuzione dell’istruzione LPS()
Interruzioni
Quindi il compito delle routine del nucleo è quello di gestire le interruzioni. Possiamo avere i seguenti tipi di interruzione :
interne (sincrone): causate dall’esecuzione di un’istruzione cui consegue la chiamata di primitive del sistema del tipo SVC() (ad esempio, l’istruzione int(i) con cui si chiede l’utilizzo di un interrupt i);
esterne (asincrone): causate da dispositivi esterni alla CPU (pseudoprocessi).
08/08/2013 M. Malatesta 2-Stati di un processo-05
19
La portabilità
La portabilità di un programma si riferisce alla possibilità di adattarlo, con il minimo sforzo e le minime modifiche, ad un’altra piattaforma hardware o software nella quale presenti le stesse funzionalità.
Quindi definendo in modo astratto (indipendente dalla particolare macchina concreta) le funzioni del nucleo, si comprende come sia possibile implementarle su una macchina diversa, in modo però che esibiscano lo stesso comportamento.
08/08/2013 M. Malatesta 2-Stati di un processo-05
20
Il successo di UNIX
UNIX (e tutte le distribuzioni basate su questo, come Linux) deve la sua diffusione alla sua maggiore portabilità rispetto ad altri SO.
Gli ideatori (D.Ritchie e K Thompson) hanno scritto tutto il SO linguaggio C, mentre alcune parti del nucleo sono scritte in assembly della macchina ospite.
Queste parti vengono riassemblate (trasformate in esegsuibile) lle varie piattaforme e consentono di avere l’intero SO disponibile con tute le sue funzionalità
08/08/2013 M. Malatesta 2-Stati di un processo-05
21
API e portabilità
Spesso tra il nucleo e i programmi degli utenti viene interposto un ulteriore strato software costituito dalle API (Application Program Interface).
Le API:
sono una serie di funzioni raccolte in una libreria che consentono all’utente di utilizzare facilmente i molti servizi del nucleo (SC per i processi, per i file, per la memoria, ecc);
dipendono dal particolare SO ma conservano la stessa interfaccia. La loro implementazione in diversi ambienti è lasciata al progettista del compilatore C, ma resta assicurata la portabilità dei programmi utente.
Argomenti
Stati di un processo – attesa
– pronto – esecuzione
Grafo degli stati
Transizioni di stato – pronto esecuzione – esecuzione pronto – esecuzione blocco – blocco pronto
Struttura del nucleo
Kernel mode e user mode
interruzioni
La portabilità
Il successo di UNIX
API e portabilità
08/08/2013 M. Malatesta 2-Stati di un processo-05
23
Altre fonti di informazione
A. Lorenzi, D.Rossi – I fondamenti della programmazione-ATLAS