Anteprima
Vedrai una selezione di 1 pagina su 5
Sistemi Operativi: monitor, Gestione thread livello utente e nucleo, Deadlock Pag. 1
1 su 5
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

Thread a livello kernel e thread a livello utente

SO2. La commutazione tra i thread non richiede l'intervento del nucleo.

Lo scheduling dei thread è indipendente da quello del nucleo.

Lo svantaggio del loro utilizzo è invece il fatto che le chiamate di sistema sono bloccanti e i vari thread non possono essere eseguiti parallelamente su diversi core di elaborazione. Inoltre non si sfrutta un eventuale parallelismo hardware.

Con i thread a livello kernel invece sono gestiti dal SO e le chiamate di sistema non sono bloccanti per l'intero processo, ma bloccano solo il thread che ha effettuato la chiamata. Permettono inoltre di eseguire i thread di uno stesso processo su diverse unità di elaborazione (non è che se ho 4 CPU vado 4 volte più veloce, in condizioni ottime ci si avvicina).

Nei thread a livello kernel il tempo di elaborazione della CPU è distribuito equamente per ogni thread (ogni thread riceve lo stesso tempo di CPU), mentre nei thread a livello utente ho che due processi A e B ricevono lo stesso tempo di CPU.

stesso tempomacchina, diviso equamente tra i processi (ogni processo riceve lo stessotempo di CPU).

Deve sempre esistere una relazione tra i thread a livello utente e quelli a livellokernel, e ci sono 3 opzioni di modelli di programmazione multithread:

  1. MODELLO DA MOLTI A UNO: molti thread a livello utente sono mappati inun singolo thread a livello kernel. Tuttavia, l’intero processo rimane bloccato nelmomento in cui un thread effettua una chiamata di sistema di tipo bloccante.Inoltre, poiché un solo thread alla volta può accedere al kernel, è impossibileeseguire vari thread parallelamente su diverse unità di elaborazione.
  2. MODELLO DA UNO A UNO: fa corrispondere un thread a livello utente ad unthread a livello kernel. In questo modo, se un thread effettua una chiamata disistema di tipo bloccante risulterà bloccato solo quel thread e non l’interoprocesso. Inoltre, più thread potranno essere eseguiti parallelamente su diversicore di elaborazione.

Lo svantaggio è che per ogni thread a livello utente dovrà essere creato un thread anche a livello kernel, che può sovraccaricare le prestazioni di un'applicazione (quindi molte realizzazioni di questo modello limitano il numero di thread supportabili dal sistema).

MODELLO DA MOLTI A MOLTI: fa corrispondere molti thread a livello utente ad un numero minore o uguale di thread a livello kernel. Se un thread invoca una chiamata di sistema di tipo bloccante, il kernel può schedulare un altro thread.

MODELLO A DUE LIVELLI: Simile al modello molti a molti, ma permette ad un particolare thread utente di essere associato ad un particolare thread del nucleo. Utile nel caso in cui fossero richieste prestazioni particolari per certi scopi.

9. Condizioni necessarie per il verificarsi di un deadlock

Esistono potenziali conflitti tra i processi che utilizzano risorse condivise. La maggior parte delle risorse prevede un utilizzo esclusivo (es. CD-ROM), ma non necessariamente i

deadlock coinvolgono dispositivi di I/O (es. database in rete). I deadlock possono verificarsi quando i processi ottengono accessi esclusivi a determinate "risorse" (dispositivi o oggetti software). Le risorse possono essere di diverso tipo, ma vengono comunemente classificate in due tipi diversi:
  1. risorse "con prerilascio": possono essere tolte ai processi senza problemi (es. memoria, CPU)
  2. risorse "senza prerilascio": se vengono tolte ai processi si ha il fallimento dell'elaborazione (es. stampanti)
In generale i deadlock coinvolgono risorse senza prerilascio. La sequenza dei passi necessari per l'uso di una risorsa è: 1) richiesta, 2) uso, 3) rilascio (se la risorsa non è disponibile il processo viene messo in attesa, talvolta viene risvegliato automaticamente quando la risorsa torna disponibile). Nei casi in cui la richiesta di una risorsa è bloccante, spesso la risorsa viene protetta dal SO tramite meccanismi di<p>sincronizzazione (come un semaforo).“Un insieme di processi è in deadlock se ogni processo dell’insieme è in attesadi un evento che solo un altro processo appartenente allo stesso insieme puòcausare”Un processo in deadlock non procede e non termina mai la sua esecuzione(processi in deadlock possono bloccare l’intero sistema).</p> <p>Le condizioni necessarie per avere una situazione di stallo sono 4 e devonoverificarsi contemporaneamente:</p> <ol> <li>MUTUA ESCLUSIONE: almeno una risorsa non deve essere condivisibile(ossia utilizzabile da un solo processo alla volta)</li> <li>POSSESSO E ATTESA: un processo deve essere in possesso di almeno unarisorsa e attendere di acquisire risorse già in possesso di altri processi.</li> <li>ASSENZA DI PRELAZIONE: le risorse possono essere rilasciate solo dalprocesso che le detiene, il rilascio non può essere forzato</li> <li>ATTESA CIRCOLARE: deve esistere un insieme di processi (Po, P1, P2, …, Pn)tale che Po attende una risorsa</li> </ol>Posseduta da P1, P1 una posseduta da P2, e
Dettagli
Publisher
A.A. 2019-2020
5 pagine
SSD Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher Dododoro48 di informazioni apprese con la frequenza delle lezioni di Sistemi operativi e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Pavia o del prof Lombardi Luca.