Pages: [1]   Go Down
Print
Author Topic: Rilevare gli stalli (ESEMPIO)  (Read 3013 times)
0 Members e 1 Utente non registrato stanno visualizzando questa discussione.
zElOtO
Forumista
***
Offline Offline

Gender: Male
Posts: 845



WWW
« on: 18-06-2012, 10:20:42 »

Caso generale: n processi, m classi di risorse
  • vettore delle risorse esistenti E
  • vettore delle risorse disponibili A
  • matrice dell'allocazione corrente C
  • matrice delle richieste R

Nelle slide fa un esempio (Link Immagine)…vorrei sapere come si costruiscono le matrici C ed R dati quei dati d'esempio?
Logged

I computer sono incredibilmente veloci, accurati e stupidi. Gli uomini sono incredibilmente lenti, inaccurati e intelligenti. Insieme sono una potenza che supera l'immaginazione. (A. Einstein)

Damiano Cancemi
www.damianocancemi.com
www.nerdbren.com
www.nerdbren.com/blog
Flyer
Apprendista Forumista
**
Offline Offline

Posts: 100



« Reply #1 on: 18-06-2012, 11:13:55 »

Non hai bisogno di costruirle perchè sono dei dati che hai già.
Infatti in base a quelle due matrici e alle risorse disponibili riesci a capire se avrai deadlock o meno.
Logged
zElOtO
Forumista
***
Offline Offline

Gender: Male
Posts: 845



WWW
« Reply #2 on: 18-06-2012, 11:55:28 »

E come si fa a stabilire se si è in presenza di un deadlock in base a quei dati?

algoritmo:
 - cercare un processo Pi tale che la i-esima riga di R è <= A
     - trovato: aggiungi i-esima riga di C ad A e marca il processo Pi; torna al punto precedente
     - non trovato: esci


R1 = A    ->   A (2 1 1 0)
R2 < A    ->   A (4 1 1 1)
R3 = A    ->   A (4 2 3 1)

Quote
se rimane qualche processo non marcato, è presente un deadlock

Puoi spiegarmi come funziona?  pray
Logged

I computer sono incredibilmente veloci, accurati e stupidi. Gli uomini sono incredibilmente lenti, inaccurati e intelligenti. Insieme sono una potenza che supera l'immaginazione. (A. Einstein)

Damiano Cancemi
www.damianocancemi.com
www.nerdbren.com
www.nerdbren.com/blog
Daréios89
Forumista Eroico
*****
Offline Offline

Gender: Male
Posts: 2.679


La musica è la forma d'arte suprema.


« Reply #3 on: 18-06-2012, 12:28:21 »

Come dalla figura e come suggerisce il libro visto che il terzo processo costituisce una riga R uguale ad A si inizia da quella, poi sommi l' ultima riga di C ad A: 0 1 2 0 + 2 1 0 0 ottenendo: 2 2 2 0.

Solo che non ho capito perchè si prende l' ultima riga di R cioè l' ultimo processo e perchè non il secondo. Come si stabilisce se la riga è maggiore o minore?
Logged

"Utilizzare sempre de l'Hôpital.....è come andare a caccia di farfalle con un bazooka".
Flyer
Apprendista Forumista
**
Offline Offline

Posts: 100



« Reply #4 on: 18-06-2012, 12:47:55 »

Come ti dice il vettore A, hai a disposizione a livello di risorse  2 1 0 0.
Dalla matrice R sai quante risorse richiedono ancora i processi.
Hai che P1 richiede  2 0 0 1. Quindi non è possibile soddisfarla perchè l'ultima risorsa non è disponibile in A.
P2 richiede 1 0 1 0 e anche qua non puoi soddisfarla perchè la terza risorsa non è disponibile.
P3 richiede invece 2 1 0 0 e in questo caso hai tutte le risorse disponibili per soddisfare la richiesta.
Quindi scegli P3 e supponi che occuperà le risorse fino al termine della sua esecuzione. Quindi quando finisce sommi ad A la riga P3 di R e di C e in A adesso avrai disponibili 4 2 2 0 risorse.
Adesso puoi soddisfare P2 e così via.
Logged
zElOtO
Forumista
***
Offline Offline

Gender: Male
Posts: 845



WWW
« Reply #5 on: 18-06-2012, 15:09:12 »

Come ti dice il vettore A, hai a disposizione a livello di risorse  2 1 0 0.
Dalla matrice R sai quante risorse richiedono ancora i processi.
Hai che P1 richiede  2 0 0 1. Quindi non è possibile soddisfarla perchè l'ultima risorsa non è disponibile in A.
P2 richiede 1 0 1 0 e anche qua non puoi soddisfarla perchè la terza risorsa non è disponibile.
P3 richiede invece 2 1 0 0 e in questo caso hai tutte le risorse disponibili per soddisfare la richiesta.
Quindi scegli P3 e supponi che occuperà le risorse fino al termine della sua esecuzione. Quindi quando finisce sommi ad A la riga P3 di R e di C e in A adesso avrai disponibili 4 2 2 0 risorse.
Adesso puoi soddisfare P2 e così via.

Perchè 4 2 2 0 risorse e non 2 2 2 0 (0 1 2 0 + 2 1 0 0)?

Comunque grazie per la spiegazione, sei stato molto esauriente!
Logged

I computer sono incredibilmente veloci, accurati e stupidi. Gli uomini sono incredibilmente lenti, inaccurati e intelligenti. Insieme sono una potenza che supera l'immaginazione. (A. Einstein)

Damiano Cancemi
www.damianocancemi.com
www.nerdbren.com
www.nerdbren.com/blog
Flyer
Apprendista Forumista
**
Offline Offline

Posts: 100



« Reply #6 on: 18-06-2012, 15:38:14 »

Si scusami hai ragione, 2 2 2 0. Avevo guardato un pezzo della riga sopra  ok
Logged
zElOtO
Forumista
***
Offline Offline

Gender: Male
Posts: 845



WWW
« Reply #7 on: 18-06-2012, 15:57:06 »

Grazie ancora  ok
Logged

I computer sono incredibilmente veloci, accurati e stupidi. Gli uomini sono incredibilmente lenti, inaccurati e intelligenti. Insieme sono una potenza che supera l'immaginazione. (A. Einstein)

Damiano Cancemi
www.damianocancemi.com
www.nerdbren.com
www.nerdbren.com/blog
Jo
Matricola
*
Offline Offline

Posts: 22


« Reply #8 on: 23-07-2012, 09:35:48 »

Ma invece,sempre in questo stesso esempio,come si arriva al passo successivo in cui dice che A è pari a (4 2 2 1)??
Logged
Daréios89
Forumista Eroico
*****
Offline Offline

Gender: Male
Posts: 2.679


La musica è la forma d'arte suprema.


« Reply #9 on: 23-07-2012, 15:11:58 »

Ma invece,sempre in questo stesso esempio,come si arriva al passo successivo in cui dice che A è pari a (4 2 2 1)??

Non si vede più l' immagine....comunque arrivati a quel punto il vettore A è A(2, 2, 2, 0) dopo aver eseguito il terzo processo, adesso se guardi la matrice R escludendo ovviamente l' ultima riga hai:

2001
1010

Ovviamente con un vettore di risorse disponibili (2, 2, 2, 0) NON puoi soddisfare le esigenze del primo processo (2001)
perchè l' ultima risorsa non è disponibile in A, invece il secondo (1010) può avere le risorse, quindi andiamo a prendere l' iesima riga di C, nel nostro caso la seconda, e la sommiamo all' attuale vettore A.

2001+2220= (4,2,2,1).
Logged

"Utilizzare sempre de l'Hôpital.....è come andare a caccia di farfalle con un bazooka".
Jo
Matricola
*
Offline Offline

Posts: 22


« Reply #10 on: 23-07-2012, 15:55:44 »

Grazie,sei stato chiarissimo! 
Logged
Pages: [1]   Go Up
Print
Jump to: