Algorithme du banquier

Résolu
CH4BRN Messages postés 49 Date d'inscription   Statut Membre Dernière intervention   -  
CH4BRN Messages postés 49 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je ne sais pas si je poste mon sujet au bon endroit mais j'ai besoin d'aide pour comprendre le fonctionnement d'un algorithme.

J'ai un énoncé de base :



Et les resultats d'un camarde, que je suppose justes




Est ce que quelqu'un pourrait m'aider à comprendre comment trouver ces résultats ?

Je sais que S est la matrice de ce dont on besoin les processus pour se terminer, mais je n'avance pas.

Merci d'avance...
A voir également:

3 réponses

yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
1
CH4BRN Messages postés 49 Date d'inscription   Statut Membre Dernière intervention   1
 
Au risque de vous surprendre, j'ai déjà lu ce sujet.
je ne vous demande pas de faire le travail à ma place, je voudrais qu'on m'aide à avancer, qu'on m'explique.
Je n'arrive vraiment pas à avancer...

Et cet énoncé, c'est mon cours ! Je n'ai pas plus de cours que ça pour comprendre ...
0
CH4BRN Messages postés 49 Date d'inscription   Statut Membre Dernière intervention   1
 
Je vais essayer de vous exposer mes reflexions, du coup.

Il faut trouver p1. Dans le résultats que j'ai, il y a trois lignes dans p1 :
p : 1 2 1 0
e : 6 3 4 2
r : 5 1 3 2

E ne change jamais, c'est donc la valeur qu'on donne dans l'énoncé. 6 3 4 2, c'est le nombre de ressources existantes dans le systeme.

Mais comment trouver la ligne P ?

J'ai demandé de l'aide à mon prof, et il m'a dit :

E c est le total des ressources du système
R c'est les ressources restantes a allouer

Pour E ça confirme ce que je pensais. Mais pour P ?

Je rame complétement..

Je me dis que A, c'est peut-être P0, avant P1, P2, etc

Et dans tous les exemples que je trouve sur internet, il y a une colonne ou une matrice "maximum"
C'est juste que mon prof l'a pas appelé comme ça là et que j'arrive pas à l'identifier. Ou alors elle n'est pas là..
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
je pense que c'est une mauvaise idée d'utiliser les réponses de quelqu'un d'autre, cela va t’empêcher de comprendre. mieux vaut trouver les tiennes.
qu'as-tu compris de l'algorithme? à quoi sert-il? n'hésite pas à faire référence aux sites que tu as analysés sur internet.
0
CH4BRN Messages postés 49 Date d'inscription   Statut Membre Dernière intervention   1
 
C'est que les examens approchent, et faute de mieux, j'ai utilisé ce que j'avais. :)

C'est un algorithme qui sert a affecter des ressources à des processus et tester si cette affectation permet de rester ou non dans un état sûr (la possibilité qu'il entre en interblocage ou non).

Mais c'est super abstrait ça, ça ne m'aide pas du tout.

En colonne, ce sont les ressources, la mémoire ;
En ligne ce sont les processus.

pN sont différentes affectations de ressources qui permettent de rester en état sûr ?

J'ai regardé la page wiki :
https://fr.wikipedia.org/wiki/Algorithme_du_banquier
Et ça confirmerait bien ce que je pensais sur pN, que c'est un instantané de l'affectation.

État à l'instant t d'un ordinateur : ressources actuellement attribuées et ressources demandées, pour cinq processus (P1 à P5) et quatre ressources (A à D)

Et j'ai regardé ces deux vidéo, qui ont toutes deux des colonnes "maximum" :

https://www.youtube.com/watch?v=-VoZvNvYt-A
https://www.youtube.com/watch?v=2V2FfP_olaA

Je me dis que "Need" doit correspondre a ma matrice S
"Allocation" corresponde à une ligne de P
"Available" c'est R ?
et... maximum serait "E" ?
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > CH4BRN Messages postés 49 Date d'inscription   Statut Membre Dernière intervention  
 
Tu écris "Mais c'est super abstrait ça, ça ne m'aide pas du tout." Ce qui confirme que tu dois mieux comprendre. Regarde bien ton énoncé. Que signifie, concrètement, "affecter une ressource à un processus"?

As-tu compris l'article de wikipedia? Quand tu écris "ça confirmerait bien ce que je pensais sur pN", de quel pN s'agit-il précisément?
0
CH4BRN Messages postés 49 Date d'inscription   Statut Membre Dernière intervention   1
 
Déjà, merci d'avoir adopté cette démarche avec moi. Exactement ce dont j'avais besoin, au vu du contexte.

Dans ma compréhension de la chose :
Un processus à besoin d'une ressource pour s’exécuter puis se terminer. Allouer (meilleur terme je pense) une ressource à un processus, c'est la lui rendre disponible, et donc lui réserver (ou la "consommer"?).

Là, en relisant wikipedia, je me dis :
Aurais-je depuis le début voulu donner un deuxième sens a pN alors qu'il ne signifie qu'une chose : "processus-N" ?

Et que du coup, une ligne P, celle de P1 par exemple, correspondrait à une ligne de "ressources attribuées" de l'exemple de wikipedia ?



Mais ce qui me met dans la panade c'est qu'à aucun endroit on me dit "il y a n instances de la ressource x".
MAIS, ne serait-ce pas, justement, la ligne "E" ?

Il faudrait donc l'allocation des ressources pour chaque processus (P1, P2, etc.) en tenant compte de E, (qu'on décrémenterait au fur et à mesure) ?

Mais du coup à quoi sert A ? C'est pour l'ensemble ?
0
CH4BRN Messages postés 49 Date d'inscription   Statut Membre Dernière intervention   1
 
Les "ressources restantes à allouer" c'est en fait les "ressources demandées", je pense.
Mais c'est là que je ne comprend pas, pourquoi le total des colonnes de S ne fait pas "6 3 4 2".
Ca n'a juste rien à voir en fait ?
0
CH4BRN Messages postés 49 Date d'inscription   Statut Membre Dernière intervention   1
 
Du coup, ma résolution :

j'ai fais P4, mon neo_dispo est (2 1 2 1)

P1 possède des valeurs inférieures ou égales :

Alloc de P1 (3 0 1 1)
Need de P1 (1 1 0 0)
neo_alloc. de P1 --> (4 1 1 1)
neo_dispo. -> (2 1 2 1) - (1 1 0 0) = (1 0 2 1)
P1 se termine :
P1 libère (4 1 1 1)
dispo. -> (1 0 2 1) + (4 1 1 1) = (5 1 3 2)

P2 possède des valeurs inférieures ou égales :

Alloc de P2 (0 1 0 0)
Need de P2 (0 1 1 2)
neo_alloc. de P2 --> (0 2 1 2)
neo_dispo. -> (5 1 3 2) - (0 1 1 2) = (5 0 2 0)
P2 se termine :
P2 libère (0 2 1 2)
dispo. -> (5 0 2 0) + (0 2 1 2) = (5 2 3 2)

P3 possède des valeurs inférieures ou égales :

Alloc de P3 (1 1 1 0)
Need de P3 (3 1 1 0)
neo_alloc. de P3 --> (4 2 2 0)
neo_dispo. -> (5 2 3 2) - (3 1 1 0) = (2 1 2 2)
P3 se termine :
P3 libère (4 2 2 0)
dispo. -> (2 1 2 2) + ( 4 2 2 0) = (6 3 4 2)

P5 possède des valeurs inférieures ou égales :

Alloc de P5 (0 0 0 0)
Need de P5 (2 2 2 0)
neo_alloc. de P5 --> (2 2 2 0)
neo_dispo. -> (6 3 4 2) - (2 2 2 0) = (4 1 2 2)
P5 se termine :
P5 libère (2 2 2 0)
dispo. -> (4 1 2 2) + (2 2 2 0) = (6 3 4 2)

Tous les processus peuvent s'achever sans interblocage, l’état est sûr ?
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
le #16 me semble juste.
0
CH4BRN Messages postés 49 Date d'inscription   Statut Membre Dernière intervention   1
 
Parfait, merci beaucoup, autant pour les conseils que les encouragements !
0