Dispensa in PDF - Dipartimento di Scienze Ambientali, Informatica e ...
Dispensa in PDF - Dipartimento di Scienze Ambientali, Informatica e ...
Dispensa in PDF - Dipartimento di Scienze Ambientali, Informatica e ...
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
Carnielli Efrem: Programmazione a componenti<br />
Programmazione a componenti<br />
Se il sistema operativo gestisce i thread, anche ciascun thread è identificato da un<br />
numero, detto TID (Thread IDentifier).<br />
Ad un thread sono associate le seguenti strutture dati:<br />
• Lo stack delle chiamate <strong>di</strong> funzione;<br />
• I registri del processore, tra cui il program counter.<br />
Le altre <strong>in</strong>formazioni sono associate al processo e con<strong>di</strong>vise tra i thread generati da<br />
quel processo. La commutazione <strong>di</strong> thread lascia comunque allocate un certo<br />
numero <strong>di</strong> risorse con<strong>di</strong>vise tra tutti i thread dello stesso processo, mentre la<br />
commutazione tra processi prevede che tutte le risorse allocate da uno stesso<br />
processo vengano rilasciate e occupate da un altro processo. A questo punto è più<br />
chiaro perché un thread è un processo “leggero” e perché la commutazione <strong>di</strong><br />
contesto tra thread dello stesso processo è meno gravosa rispetto alla<br />
commutazione <strong>di</strong> processi (magari identici).<br />
In molti casi il concetto <strong>di</strong> thread e processo è lo stesso, <strong>in</strong>fatti un processo ha<br />
sempre almeno un thread (il processo stesso), ma <strong>in</strong> alcuni casi un processo può<br />
avere più thread che avanzano <strong>in</strong> parallelo.<br />
L’efficienza, <strong>in</strong> term<strong>in</strong>i computazionali e funzionali, data dai thread è effettiva solo<br />
se sono def<strong>in</strong>iti a livello <strong>di</strong> Sistema Operativo; molti l<strong>in</strong>guaggi li offrono a livello<br />
utente (come java) def<strong>in</strong>iti e gestiti dal programmatore, e ciò non implica che lo<br />
“schedul<strong>in</strong>g” sia fatto a livello kernel.<br />
1.2.2 Commutazione <strong>di</strong> contesto<br />
A questo punto facciamo un esempio per ricordare le attività che comporta il<br />
contest switch cercando <strong>di</strong> capire quanto sia costoso.<br />
Riferendoci alla figura 1.4 ve<strong>di</strong>amo che abbiamo un sistema s<strong>in</strong>gle thread, e<br />
supponiamo <strong>di</strong> avere un browser web che fa richiesta <strong>di</strong> <strong>in</strong>formazioni ad un web<br />
server; i dati si trovano sul DB e il web server <strong>in</strong>oltra la richiesta al DB server.<br />
Supponiamo <strong>in</strong>oltre che il web server ed il DB server sono due processi che si<br />
trovano sulla stessa macch<strong>in</strong>a.<br />
10