Algorithme du banquier [Résolu]

Signaler
Messages postés
49
Date d'inscription
lundi 19 février 2018
Statut
Membre
Dernière intervention
23 janvier 2020
-
Messages postés
49
Date d'inscription
lundi 19 février 2018
Statut
Membre
Dernière intervention
23 janvier 2020
-
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...

3 réponses

Messages postés
11483
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
7 juillet 2020
656
Messages postés
49
Date d'inscription
lundi 19 février 2018
Statut
Membre
Dernière intervention
23 janvier 2020

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 ...
Messages postés
49
Date d'inscription
lundi 19 février 2018
Statut
Membre
Dernière intervention
23 janvier 2020

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à..
Messages postés
11483
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
7 juillet 2020
656
tu progresses, et tu n'as toujours pas répondu à la question primordiale "Que signifie, concrètement, allouer une ressource à un processus?"
"concrètement", cela veut dire ceci:
ton énoncé montre la situation de départ.
que devient cette situation quand une resource est allouée à un processus, qu'est-ce que cela change? choisi un exemple (une resource et un processus), et explique ce qui change.

il n'y a aucune raison que les sommes des colonnes de S (au départ) soient égales aux nombres de resources existantes. l'article de wikipedia est défectueux, à mon avis, il crée de la confusion en montrant un exemple où le deux sont identiques.

tu te demandes à quoi sert A: qu'est-il écrit?
Messages postés
49
Date d'inscription
lundi 19 février 2018
Statut
Membre
Dernière intervention
23 janvier 2020

Mais du coup, pour P4, avec mes résultats,
- La ligne P = (Alloc. + Need) = (1 1 1 1) et pas (4 2 2 1)
- La ligne E ne change pas,
- La ligne R = (Exist - (Alloc. Need)) = ((6 3 4 2) - (1 1 1 1)) = (5 2 3 1) et pas (2 1 2 1)

Est ce que me trompe-je ?
Messages postés
11483
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
7 juillet 2020
656 >
Messages postés
49
Date d'inscription
lundi 19 février 2018
Statut
Membre
Dernière intervention
23 janvier 2020

réponse au #11, après avoir lu le #9: continue ta logique en #9, ne te laisse pas distraire par ce que tu crois comprendre de la réponse de ton camarade.
Messages postés
49
Date d'inscription
lundi 19 février 2018
Statut
Membre
Dernière intervention
23 janvier 2020

réponse au #10 ->
J'ai du mal a verbaliser ce que tu veux que je verbalise, mais je peux expliquer ce que j'ai compris :
A, c'est l'allocation des ressources à t = 0, à l'instant ou je prend les commandes, disons.
S, c'est les ressources que demande chaque processus pour se terminer.
E, c'est l'ensemble des ressources dans le système

J'ai besoin de "Dispo" qui est une variable qui ... varie.
Pour "A", c'est "Exist", ou "E" (6 3 4 2) - "Somme" ou "P" (5 3 2 2)
= (1 0 2 0)

Quand on alloue une ressource à un processus, on soustrait la ligne de "S" à "Dispo". Les ressources disponibles sont prises en fonction des besoin du processus. Elle ne sont plus disponibles pour les autres processus le temps de l’exécution du processus.
Quand il se termine, les ressources allouées, celles qui étaient déjà là à "A" plus celles de "S" se libèrent, et rejoignent les rangs de "Dispo".
Ce qui laisse la possibilité à des processus ayant besoin de plus de ressources de s’exécuter ?
Messages postés
11483
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
7 juillet 2020
656 >
Messages postés
49
Date d'inscription
lundi 19 février 2018
Statut
Membre
Dernière intervention
23 janvier 2020

réponse au #14: l'énoncé montre la situation initiale, avec A, S, P, E et R.
si on décide d'allouer une resource, par exemple une ressource de la première colonne au processus P1, que devient la situation, quel est le nouveau contenu de A, S, P, E et R? rien à verbaliser, juste montrer le résultat.
n'as-tu pas déjà le disponible dans la situation initiale? il suffit de le faire évoluer pendant que l'algorithme fait son travail.
Messages postés
49
Date d'inscription
lundi 19 février 2018
Statut
Membre
Dernière intervention
23 janvier 2020

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 ?
Messages postés
11483
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
7 juillet 2020
656
le #16 me semble juste.
Messages postés
49
Date d'inscription
lundi 19 février 2018
Statut
Membre
Dernière intervention
23 janvier 2020

Parfait, merci beaucoup, autant pour les conseils que les encouragements !