Algorithme du banquier [Résolu]

Messages postés
47
Date d'inscription
lundi 19 février 2018
Statut
Membre
Dernière intervention
2 août 2019
- - Dernière réponse : CH4BRN
Messages postés
47
Date d'inscription
lundi 19 février 2018
Statut
Membre
Dernière intervention
2 août 2019
- 2 août 2019 à 16:31
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...
Afficher la suite 

3 réponses

Meilleure réponse
Messages postés
8308
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 août 2019
412
1
Merci
bonjour, avant tout: https://www.commentcamarche.net/faq/10925-demander-de-l-aide-pour-vos-exercices-sur-ccm

Dire « Merci » 1

Heureux de vous avoir aidé ! Vous nous appréciez ? Donnez votre avis sur nous ! Evaluez CommentCaMarche

CCM 58732 internautes nous ont dit merci ce mois-ci

CH4BRN
Messages postés
47
Date d'inscription
lundi 19 février 2018
Statut
Membre
Dernière intervention
2 août 2019
-
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 ...
Commenter la réponse de yg_be
Messages postés
47
Date d'inscription
lundi 19 février 2018
Statut
Membre
Dernière intervention
2 août 2019
0
Merci
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à..
yg_be
Messages postés
8308
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 août 2019
412 -
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?
CH4BRN
Messages postés
47
Date d'inscription
lundi 19 février 2018
Statut
Membre
Dernière intervention
2 août 2019
-
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 ?
yg_be
Messages postés
8308
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 août 2019
412 > CH4BRN
Messages postés
47
Date d'inscription
lundi 19 février 2018
Statut
Membre
Dernière intervention
2 août 2019
-
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.
CH4BRN
Messages postés
47
Date d'inscription
lundi 19 février 2018
Statut
Membre
Dernière intervention
2 août 2019
-
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 ?
yg_be
Messages postés
8308
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 août 2019
412 > CH4BRN
Messages postés
47
Date d'inscription
lundi 19 février 2018
Statut
Membre
Dernière intervention
2 août 2019
-
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.
Commenter la réponse de CH4BRN
Messages postés
47
Date d'inscription
lundi 19 février 2018
Statut
Membre
Dernière intervention
2 août 2019
0
Merci
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 ?
yg_be
Messages postés
8308
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 août 2019
412 -
le #16 me semble juste.
CH4BRN
Messages postés
47
Date d'inscription
lundi 19 février 2018
Statut
Membre
Dernière intervention
2 août 2019
-
Parfait, merci beaucoup, autant pour les conseils que les encouragements !
Commenter la réponse de CH4BRN