DarkSoul™ |
|
| STALLO: situazione che vede 2 o + processi che sono in attesa di un evento che non si potra' mai verificare. Puo' verificarsi solo con risorse non prerilasciabili
RISORSA: Dispositivo hardware o informazione che puo' essere: PRERIL:si puo' rimuovere da un processo che la sta usando senza provocare effetti dannosi NON PRERIL:non puo' essere ceduta ad un altro processo senza provocare il fallimento dell'esecuzione in atto
Per usare una risorsa e' necessario:1)Richiedere la risorsa 2)usare la risorsa 3) rilasciare la risorsa Le risorse vengono richiamate:a)con chiamate di sistema REQUEST b)con utilizzo file speciali, aperti con OPEN
STALLO:Un insieme di processi si trova in una sit. di stallo se ogni processo dell'insieme aspetta un evento che soolo un altro processo dell'insieme puo' provocare
CODIZ. X STALLO: 1)mutua esclusione:ogni risorsa e' assegnata ad un solo processo oppure e' disponibile 2)hold and wait:i processi che hanno gia' richiesto ed ottenuto delle risorse ne possono richiedere altre 3)mancanza di prerilascio:le risorse che sono gia' state assegnate ad un processo non gli possono essere tolte in modo forzato;ma devono essere rilasciate indirettamente dal processo che le detiene 4)attesa circolare:deve esistere una catena circolare di processi ognuno dei quali aspetta il rilascio di una risorsa da parte del processo che lo segue Devono essere tutte presenti perche' si abbia uno stallo
STRATEGIE X TRATTARE STALLO: 1)Ignorare il problema (algoritmo dello struzzo) 2)Cerca d scoprire le situazioni di stallo e risolverle 3)Cercare dinamicamentre di evitare le situazioni di stallo con un'accorta politica di allocazione delle risorse 4)Prevenire le situazioni di stallo negando una delle 4 condiz. necessarie
ALGORITMO STRUZZO:conviene ignorare il problema-> meglio uno stallo occasionale che una regola che imponga ad ogni utente di usare un unico processo,aprire un unico file o visualizzare un'unica copia di una risorsa
IDENT. STALLO CON UNA RISORSA PER CLASSE:questo algoritmo considera a turno ogni nodo radice di quello che ritiene sara' un albero e fa una ricerca di tipo anticipato su di esso. Se ritorna ad un nodo gia' incontrato,allora ha trovato un ciclo. Se visita tutti gli archi uscenti da un certo nodo,torna al nodo precedente. Se torna alla radice e non puo' piu' andare oltre il sottografo raggiungibile dal nodo corrente non contiene cicli. Se questa proprieta' si verifica per tutti i nodi il sistema non e' stallo
IDENT.stallo con risorse multiple per ogni classe:E vettore di risorse esistenti, A di risorse disponibili, C matrice allocazione corrente, R matrice risorse richieste Tutte e 4 permettono di capire se ci troviamo in stallo. ALGORIT. IDENT. STALLO:si basa su confronto fra vettori.Inizialmente ogni processo si considera come non marcato. Con l'avanzamento dell'algoritmo i processi saranno marcati, indicando che essi sono disponibili a terminare e cioe' che non sono in stallo. Algoritmo: 1)cerca un proceso non marcato Pi, per cui l'i-esima riga di R e' < di A 2)se si trova un processo di questo tipo,aggiunge l'i-esima riga di C ad A,marca il processo e torna ad 1 3)se non esiste nessun processo di questo tipo l'algoritmo termina; Al termine se ci sono processi non marcati sono in stallo.
|
| |