Il 0% ha trovato utile questo documento (0 voti)
2 visualizzazioni14 pagine

Lez1 ProcessiThread

Caricato da

carlobanana81
Copyright
© © All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd
Il 0% ha trovato utile questo documento (0 voti)
2 visualizzazioni14 pagine

Lez1 ProcessiThread

Caricato da

carlobanana81
Copyright
© © All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd
Sei sulla pagina 1/ 14

LIBRO: da pag.

2 a
PROGRAMMA e PROCESSO pag.8 e da pag.21
Processo = programma in esecuzione. a pag.28

Programma = entità passiva


Processo = entità attiva

Rappresentazione dei processi


Process Control Block (PCB)
Stati di un processo

interruzione

salvataggio dello stato di evoluzione del processo in esecuzione che lascia la CPU nel suo descrittore
e caricamento dello stato di esecuzione del nuovo processo nei registri della CPU.
Modelli di computazione

Modelli di computazione per i processi:


➢ modello di computazione indipendente
➢ modello di computazione con cooperazione (due o
più processi, per poter evolvere, necessitano di
scambiarsi informazioni.)
➢ modello di computazione con competizione (due o
più processi entrano in conflitto sull’uso di risorse)
Operazioni sui processi
Ogni SO multiprogrammato prevede dei meccanismi per la gestione dei processi:
✓ creazione
✓ terminazione
✓ interazione tra processi
Sono operazioni realizzate da system call

System call di LINUX

➢ generare un processo figlio (child), che è copia del processo padre (parent) in esecuzione:
pid fork();
➢ attendere la terminazione di un processo figlio: pid wait ();
➢ terminare un processo figlio restituendo un codice di stato (di terminazione) al processo
padre: void exit ();

Creazione di processi
Cosa succede se il padre termina prima del figlio?
▪ il processo figlio viene "adottato" dal processo init (PID=1), in quanto il kernel
vuole evitare che un processo divenga "orfano" (cioè senza un PPID)
▪ quando un processo termina, il kernel esamina la tabella dei processi per vedere
se aveva figli; in tal caso, il PPID di ogni figlio viene posto uguale a 1

Cosa succede se il figlio termina prima del padre?


▪ generalmente il padre aspetta mediante la funzione wait che il figlio finisca ed
ottiene le varie informazioni sull'exit status
▪ Un processo che sta aspettando che il padre accetti il suo codice di terminazione
è chiamato processo zombie.
▪ Se il padre non termina e non esegue mai una wait(), il codice di terminazione
non sarà mai accettato ed il processo resterà sempre uno zombie.
▪ La presenza di molti processi zombie costringe l'amministratore ad intervenire.
“PROCESSI PESANTI” e “PROCESSI LEGGERI”
Un processo può essere visto come l’unione di due componenti:
✓ lo spazio di indirizzamento del processore e le risorse assegnate al processo
stesso
✓ l’esecuzione delle istruzioni del programma (utilizzo della CPU)
Nei moderni sistemi operativi le due cose possono essere divise
➢ La parte del processo che include le risorse viene detto «processo pesante» o
task
➢ La parte del processo che utilizza la CPU viene denominata «processo leggero» o
thread
Un processo può quindi essere suddiviso in più sottoprocessi detti thread.

Multithreading = molteplicità di flussi


in esecuzione all’interno di un
processo pesante
Processi multi-threaded
Task = insieme di threads che riferiscono lo stesso codice e gli stessi dati.

codice e dati non sono caratteristiche del singolo thread, ma del task al quale appartiene:

Thread = {PC, registri, stack}

Task = {thread1, thread2, ..., threadN, codice , dati}


Proprieta` dei Threads

Condivisione di memoria: a differenza dei processi (pesanti) , un thread può


condividere variabili con altri thread.
Vantaggi
❖ maggiore efficienza: le operazioni di context switch, ed in generale di
gestione dei thread (creazione etc.) sono più economiche rispetto ai
processi
❖ l’utilizzo dei Thread offre la possibilità di sfruttare al meglio architetture
multiprocessore

Un segmento di codice si dice thread-safe, se è in grado di supportare


l’esecuzione da parte di più thread, garantendo che nessuno possa accedere a dati
inconsistenti (cioè durante il loro aggiornamento).
TCB (Thread Control Block)

➢ Un identificatore di Thead (TID)


➢ Un Program counter
➢ Un insieme di registri
➢ Uno stato di esecuzione (running, ready, blocked)
➢ Uno stack di esecuzione
➢ Un contesto
➢ Uno spazio di memoria per le variabili locali
➢ Un puntatore al PCB DEL PROCESSO
STATI DI UN THREAD

CORREGGERE IL DIAGRAMMA SUL LIBRO A PA.27


Realizzazione di Threads
User Level
Vengono implementati grazie ad apposite librerie di funzioni che operano a livello utente
(thread package) che contengono funzioni per creare, terminare, sincronizzare,
effettuare lo scheduling ed il cambio di contesto

Kernel Level (Linux,Unix e Windows)


La gestione è affidata al kernel tramite chiamate di sistema, vengono gestiti come tutti gli
altri processi.

Soluzione mista (Solaris)


Permette di creare dei thread a livello utente che devono essere preventivamente definiti
a livello kernel. Creazione di thread, politiche di assegnazione della CPU e
sincronizzazione a livello utente.
Sistemi Operativi e Thread
Elaborazione dei processi (thread)

➢ elaborazione sequenziale - un processo viene eseguito una istruzione


alla volta dalla prima all’ultima e l’esecuzione della prima istruzione di un
processo successivo avviene dopo il termine dell’esecuzione dell’ultima
istruzione del processo precedente

➢ elaborazione parallela - prevede l’utilizzo di più processori che


permette di eseguire più processi (o blocchi di istruzioni indipendenti di
uno stesso processo) parallelamente

➢ elaborazione concorrente - un processore multitasking che permette


la sovrapposizione nel tempo di più processi (o blocchi di istruzioni
indipendenti di uno stesso processo)

Potrebbero piacerti anche