SISTEMI

« Older   Newer »
  Share  
DarkSoul™
view post Posted on 21/5/2013, 05:39     +1   -1




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.
 
Top
Ðargør
view post Posted on 21/5/2013, 06:22     +1   -1




RISOLUZIONE STALLO:
1)mediante prerilascio:in alcuni casi e' possibile togliere una risorsa ad un processo e assegnarla ad un altro e a volte e' necessario un intervento manuale. Togliere una risorsa ad un processo assegnandola ad un altro e al suo termine riassegnarla al primo che questi se ne accorga dipende dal tipo di risorsa in oggetto.Spesso questa soluzione e' impossibile o difficile. Il processo da sospendere va scelto tra quelli che hanno risorse che si possono facilmente restituire
2)mediante ritorno ad uno stato precedente:si mette un punto di controllo sui processi, ovvero lo stato del processo e' scritto in un file in modo da poter ripartire in un momento successivo.Il punto di controllo contiene l'immagine della memoria e lo stato delle risorse, cioe' quali risorse assegnate in quell'istante al processo.Se si verifica stallo ripristina a situazione precedente.
3)mediante eliminazione processo:si elimina uno o piu' processi nel ciclo.Se non fosse di aiuto si eliminera' un altro processo e cosi' via fino a quando non si interrompe il ciclo.

EVITARE STALLO:
Si possono evitare gli stalli solo se certe informazioni sono disponibili in anticipo.
STATI SICURI E NON SICURI:uno stato e' detto sicuro se non e' in stallo e se possono essere soddisfatte tutte le richieste. In uno stato sicuro il sistema puo' garantire che tutti i processi avranno termine, mentre in uno stato non sicuro non c'e' nessuna garanzia di questo tipo.

ALGORITMO BANCHIERE PER RISORSA SINGOLA:e' un algoritmo che permette di evitare situazioni di stallo. L'algoritmo considera ogni richiesta nel momento in cui si presenta e analizza se essa porta ad uno stato sicuro.Se lo fa soddisfa la richiesta altrimenti la postposta.Per vedere se uno stato e' sicuro il banchiere controlla di avere abbastanza risorse a disposizione per poter soddisfare le richieste del
cliente che si trova piu' vicino al massimo in modo che esso termini e le risorse vengano restituite; puo' procedere al cliente successivo piu' vicino al massimo. Se possono essere tutti soddisfatti e le risorse restituite si ha uno stato sicuro.

ALGORITMO BANCHIERE PER RISORSA MULTIPLA:
E= risorse esistenti / A= risorse disponibili
1)Si cerchi una riga R per la quale le risorse ancora non richieste sono meno di quelle di A.Se non esiste questa riga il sistema e' in stallo
2)Il processo della riga scelta richiedere tutte le risorse e finisce.Si marchi allora il processo come terminato e si aggiungono al vettore A tutte le risorse che deteneva
3)Si ripetono i punti 1 e 2 fino a quando o tutti processi sono marcati e si puo' dire che lo stato era sicuro, oppure ci si trova in stallo e quindi lo stato di partenza non esce sicuro.

NEGAZIONE CONDIZIONE DI ATTESA CIRCOLARE:
L'attesa circolare puo' essere eliminata in diverse maniere. Ad es. si puo' imporre che ogni processo abbia assegnata ad ogni istante una singola risorsa.Se il processo ha bisogno di una seconda risorsa, esso deve rilasciare la prima.Questo metodo e' inaccettabile in alcuni casi,ad esempio nel caso in cui un processo debba copiare un lungo file da un nastro ad una stampante.
Un altro metodo consiste nel dare una numerazione globale a tutte le risorse presenti.I processi possono richiedere le risorse quando vogliono ma tutte le richieste devono essere fatte seguendo l'ordinamento numerico.

Mutua esclusione->fare sempre lo spooling di tutto
Hold and wait->richiedere tutte le risorse all'inizio
Mancanza di prerilascio->sottrarre a forza le risorse assegnate
Attesa circolare->ordinare numericamente le risorse

BLOCCO A 2 FASI:
Nella prima fase il processo prova a bloccare tutti i record di cui ha bisogno, uno alla volta.Se ci riesce inizia la seconda fase eseguendo gli aggiornamenti e rilasciando i lock.Nella prima fase non sono fatti lavori reali.Se durante la prima fase si ha bisogno di qualche record che e' stato bloccato, il processo rilascia tutti i suoi lock e ripete la prima fase.

MANCANZA DI RISORSE(Starvation)
e' un problema in relazione con lo stallo. In un sistema dinamico e' necessaria qualche politica che stabilisca l'ordine ed il tempo di utilizzo delle risorse, dato che le richieste si fanno sempre.Questa politica pero' puo' far si che alcuni processi non siano mai serviti pur essendo in stallo.
La mancanza di risorse si puo' evitare usando la politica di allocazione della risorsa FirsIN FirstOut. Cosi' il processo che attende piu' termpo sara' il prossimo ad essere servito.
 
Top
1 replies since 21/5/2013, 05:39   38 views
  Share