Sei sulla pagina 1di 4

I processi

Possiamo definire un processo come unastrazione di un programma in esecuzione.


Essi rendono possibile avere pi operazioni contemporanee anche quando vi una sola
cpu a disposizione.
Ma che differenza c tra programma e processo?(leggere soltanto)

Il sistema operativo deve mantenere lo stato del processo in particolari strutture dati.
Il sistema operativo costituito da un certo numero di processi(detti anche processi
sequenziali), ogni processo ha la sua cpu virtuale(a noi fa comodo pensarli cos in realt
la cpu o le cpu, nei sistemi multiprocessori, si sposta da processo a processo dando
lillusione del parallelismo).

Esempio di un pc che fa multiprogrammazione, i processi sono caricati in memoria


ognuno con il suo contatore di programma virtuale(vi anche un pc fisico che viene
condiviso da tutti), quando un processo in esecuzione il pc(contatore di programma)
virtuale viene caricato in quello fisico, analogalmente quando un processo termina il pc
fisico viene copiato in quello logico. Quello che si osserva da questo grafico che in un
determinato istante solo un processo davvero in esecuzione sulla cpu.

In un sistema multiprogrammato la cpu passa rapidamente da un processo a un altro per


questo non possiamo avere garanzie sulla velocit(relativa o assoluta ) dei processi
velocit relativa: non possiamo garantire che un processo arrivi a un determinato punto
del suo codice in un determinato tempo
velocit assoluta: non possiamo garantire che il processo A raggiunga il punto x della sua
esecuzione prima che il processo B raggiunga il punto y della sua esecuzione
Garanzie sulla velocit possono essere garantite nei sistemi real time, dove si vuole che
determinati eventi avvengano prima di altri.
Per esemplificare meglio quanto detto leggere questo esempio:

Creazione del processo:


I sistemi operativi hanno bisogno di modi per creare i processi, gli eventi che possono
causare la creazione di un processo sono:
1)inizializzazione del sistema
2)esecuzione di una chiamata di sistema di creazione di un processo(un processo
invia una chiamata di sistema per creare un nuovo processo, utile quando un
lavoro pu essere fatto da molti processi che cooperano)
3)richiesta dellutente di creare un processo
4)inizio di un job in modalit batch
Generalmente al bootstrap del sistema vengono creati alcuni processi, sia attivi cio
quelli visibili sia in background(chiamati demoni) es: un processo che rimane in ascolto
per vedere se arrivano nuove email.
In unix un processo viene creato mediante la chiamata della funzione fork() crea una
copia esatta del chiamante (lo spazio per il processo viene direttamente allocato nello
spazio di memoria del padre), il processo cos creato sar uguale al padre, succivamente
il figlio eseguir unaltra chiamata execve per eseguire un altro programma;

Chiusura di un processo:

Solitamente le cause della chiusura di un processo sono:


1)uscita normale
2)uscita su errore
3)errore critico
4)terminato da un altro processo
1)Quando un processo termina il suo lavoro,esegue una chiamata di sistema, solitamente
exit(in UNIX), che indica al sistema operativo che ha finito
2)il processo scopre un errore es:lutente digita il comando javac ciao.java, ma il file
ciao.java non esiste
3)errore causato dal processo, spesso dovuto a un difetto di programma es:
numero/0, riferimento a spazi di memoria non allocati ecc
4)il processo esegue una chiamata di sistema per chiuderne altri es: kill(in unix).
Stati di un processo:
I processi possono trovarsi in tre stati:
1)in esecuzione(CPU Effettivamente in utilizzo)
2)pronto(temporaneamente sospeso[non ha la cpu])
3)bloccato(incapace di proseguire)
Fra i tre stati sono possibili 4 transazioni:

Transazione 1: il processo non pu continuare


Transazione 2: lo scheduler decide che un processo stato esguito per abbastanza
tempo
Transazione 3: lo scheduler decide che tutti i processi sono stati eseguiti per un
intervallo di tempo equo, quindi viene ripresa lesecuzione del processo che era stato
interrotto
Transazione 4: Input disponibile, quindi il processo che era stato bloccato pu
continuare, se la cpu libera viene innescata la transazione 3 altrimenti, va nello stato di
pronto.

Il dispositivo che si occupa del context switch chiamato dispatcher

Implementazione dei processi:


Il sistema operativo tiene traccia dei processi in un array, chiamata tabella dei processi,
con una voce per processo chiamata: PCB(process control block)

Lo stato dei registri viene salvato nel PCB e ripristinato in occasione del
context switch .

Come viene data lillusione di pi processi in esecuzione su una o pi cpu?(non


fondamentale)
A ogni classe di I/O viene assegnato un vettore di interrupt, contenente lindirizzo della
procedura di servizio dellinterrupt. Supponiamo che il processo utente 3 sia in
esecuzione quando avviene un interrupt su disco. Il pc di 3, la parola di stato del
programma e altri dati vengono spinti sullo stack(questo tutto ci che fa lhardware,
dora in avanti tutte le azioni sono software).
Tutti gli interrupt salvano i registri del processo nel PCB, poi linformazione che era stata
spinta nello stack dellinterrupt viene rimossa e il puntatore allo stack impostato in
modo che punti a uno stack temporaneo usato dal gestore del processo. Viene poi
richiamata una procedura per effeture il lavore richiesto dallinterrupt. Una volta fatto
questo lo scheduler decide cosa fare dopo e i registri del processo scelto vengono
ripristinati.