15.06.2013 Views

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 ...

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!