Torna alla pagina di Sistemi Operativi
:: Appunti caotici ::
Lezione 3
Gestione dei thread
Pag 1
Sommario
...
Pag 2
Creazione di thread
Eseguendo una fork() all'interno di un thread, posso avere la duplicazione di tutti i thread del processo o solo di quello chiamante, a seconda di come è stato configurato il sistema operativo.
Esecuzione in thread
Per rivestire il thread di un nuovo codice, diverso da quello di partenza (condiviso), dovrei lanciare una funzione di exec().
Quindi, perché due thread appartenenti a uno stesso processo eseguano operazioni diverse, posso operare in due modi:
- o faccio delle call() a porzioni diverse del codice condiviso
- o uso una exec() e tanti saluti al secchio
Pag 3
Cancellazione dei thread
Esistono due modalità di cancellazione di un thread:
- asincrona, con terminazione immediata indipedentemente dall'operazione che sta svolgendo in quel momento
- differita, marcando il thread come "da far morire" e verificando periodicamente se sono in punti del codice in cui è possibile terminarlo, o aspettando semplicemente che il thread finisca la sua computazione (terminazione ordinaria)
Sincronizzazione e comunicazione
Se ho due processi che lavorano insieme ed ho un thread che vuole comunicare con l'altro processo, la comunicazione può avvenire:
- con tutti i thread del processo destinatiario
- con un sottoinsieme di thread
- con uno specifico
Pag 4
Processi leggeri
Sono un'astrazione che permette di separare i vari thread di un processo utente e raggrupparli in diversi modi a seconda di quello che voglio fare a livello kernel.
Torna alla pagina di Sistemi Operativi