Related
Introduzione
Per ora abbiamo visto che ci sono più processi che si alternano lo stato di esecuzione sul computer, però non è sempre così, alcune applicazioni sono organizzate in modo parallelo e non perché lo decide il SO ma perché lo ha deciso il programmatore dell’applicazione, ogni esecuzione dell’applicazione si chiama Thread.
Ad esempio per un’applicazione grafica possiamo avere:
- Un thread per gli input del mouse
- Uno per disegnare su schermo
- Un altro per effettuare i calcoli richiesti
oss: Ricordiamo che di per sé è un processo unico ma ci sono più threads.
Risorse
Diversi threads di uno stesso processo condividono tutte le risorse del processo tranne lo stack delle chiamate e il processore.
Il resto delle risorse è completamente condiviso, per esempio:
se un thread acquisisce un dispositivo di I/O (un file), è come se l’avesse acquisito l’intero processo quindi, anche tutti gli altri thread di quel processo vedono quel file.
oss: se non ho abbastanza processori non è detto che tutti i thread vadano in esecuzione
Il concetto di processo come visto prima ha 2 caratteristiche principale:
- Gestione delle risorse che per quanto riguarda i processi vanno visti come blocco unico
- Scheduling ovvero che i processi possono contenere diverse tracce ovvero diversi threads Nel caso di più threads vanno trattati in maniera diversa.
Vantaggio dei Thread
I Thread rispetto hai processi sono più efficienti, è inoltre più semplice crearli, terminarli e fare lo switching.
Ogni processo viene creato con un thread al suo interno, dopo il programmatore può utilizzare questo thread per
Dopodiché è possibile fare le seguenti operazioni:
- Spawn: permette creare altri thread con una chiamata di sistema (più leggera del fork dato che ha meno istruzioni da fare, non crea tutti gli spazi necessari per un processo)
- Block: che permette di interrompere l’esecuzione del thread (non per I/O ad esmpio perchè deve aspettare un altro thread)
- Unblock: rimuove il blocco a un thread
- Finish: si può eliminare un thread
Ricordiamo che tutte queste operazioni vengono svolte all’interno dello stesso processo e che un processo deve sempre avere almeno un thread.
Rappresentazione dei Threads
Column
NOTE
NOTE
ULT vs KLT
Definition
Bisogna fare una differenza fra Thread a livello Utente (ULT) e Thread a livello di Sistema (KLT)
- Nel primo caso vediamo che se ci sono Thread a livello utente, per il sistema operativo i thread non esistono, ci sono delle librerie a livello utente che gestiscono i thread.
- Nel secondo caso, il sistema operativo prevede i thread anche a livello di kernel e quindi li “vede”.
- Nel terzo caso vediamo come si potrebbero usare entrambe le cose.
Nella maggior parte dei sistemi operativi moderni si utilizza il secondo metodo, quindi il sistema operativo è a conoscenza dei thread.
Vantaggi ULT
- Switch del thread in esecuzione più efficiente (non richiede il mode switch al kernel)
- Ogni applicazione applicazione può avere una politica di scheduling differente.
- Permettono di usare i thread anche sui sistemi operativi che non li offrono nativamente.
Svantaggi ULT
- Se un thread si blocca, si bloccano tutti i thread di quel processo (KLT può bloccare i thread singolarmente)
- Anche se il si hanno più processori o cores, tutti i thread dello stesso processo devono usare un solo processore comune.
- Se il sistema operativo non ha i KLT, niente thread per le routine del sistema operativo stesso