Torna alla pagina di Sistemi Operativi
:: Appunti caotici ::
Lezione 2
Tecniche di prevenzione del deadlock
Pag 1
Sommario
...
Pag 2
Principio della prevenzione
...
Mutua esclusione
...
Pag 3
Possesso ed attesa (1)
...
Possesso ed attesa (2)
Tecniche:
- un processo chiede e ottiene tutte le risorse prima di iniziare l'esecuzione. Se ad esempio un processo deve aprire 4 file, li apre tutti e 4 in una sola botta, e non uno alla volta, moltiplicando per quattro il rischio di avere un hold & wait. Se il sistema operativo non riesce a dargli tutti gli accessi, il processo non viene attivato. Se il vantaggio di tale sistema è che non avrò mai situazioni di attesa circolare, lo svantaggio purtroppo non è da poco. Può infatti passare molto (troppo) tempo prima che il processo usi le risorse da lui bloccate all'apertura, rallentando di conseguenza il parallelismo di utilizzo delle risorse del sistema. Viene di fatto ritardata l'evoluzione della computazione di più processi anche se non strettamente necessario. Come direbbe Puree, è come usare un bazooka per uccidere un moscerino. Come direi io, è come sposarsi per poter indossare un anello.
- un processo che possiede alcune risorse e vuole chiederne altre deve rilasciare tutte le risorse che possiede e chiedere tutte quelle che servono, incluse eventualmente anche alcune di quelle che già possedeva. Una volta ottenuta una risorsa, il processo ci fa quindi tutte le computazioni opportune, per poi rilasciarla e accedere a un'altra. Lo svantaggio di tale sistema è che bisogna strutturare opportunamente il programma tenendo conto che una risorsa (e il suo contenuto), terminato l'uso, possa essere modificata da altri processi. Il programmatore deve tener conto di tutte queste cose nella scrittura del codice, facendo chiamate e rilasci opportuni, o il sistema operativo potrebbe rifiutarne l'esecuzione.
Pag 4
Possesso ed attesa (3)
Problemi:
- scarso utilizzo delle risorse, perché le prendo a blocchi
- possibile starvation, perché alcuni processi potrebbero essere ritardati indefinitamente (se altri processi hanno chiesto le risorse che gli servono e non le mollano più)
Nessun rilascio anticipato (1)
...
Pag 5
Nessun rilascio anticipato (2)
La tecnica è possibile solo se posso sempre garantire la consistenza nell'uso della risorsa, come se non l'avessi mai usata.
Siamo sostanzialmente nello stesso approccio dell'hold & wait, con la differenza che qui non devo attendere il termine d'uso della risorsa da parte del processo.
Nessun rilascio anticipato (3)
...
Pag 6
Attesa circolare (1)
...
Attesa circolare (2)
...
Pag 7
Attesa circolare (3)
...
Torna alla pagina di Sistemi Operativi