Bonjour,
Je veux bien avoir quelqu'un qui peut m'aider à propos d'un sujet de Moniteur de Hoare.
Mon problème est le suivant:
1/voici l'interface:
Ressources:Moniteur
var max_ressources :entier;
....
proc Allouer (N:entier,...);
proc Libérer (N:entier,...);
Fin ressources
2/Sujet:
lorsq'un processus désire obtenir l'accès a plusieurs ressources critiques d'une même classe, il est souhaitable qu'il puisse acquérir ces ressources sous forme d'une seule requete.il en est de même pour la libération de l'accès à ses ressources.
Les solutions de l'allocateur multiple comportent les points suivants:
i-lors de l'appel d'une requête de N ressources, le nombre de ressources disponibles peut être suffisant et conduire donc, à satisfaire immédiatement cette requête alors qu'il existe ,d'autres requêtes plus élevés en attente.Une telle approche comporte un risque de "famine" pour les processus demandant beaucoup de ressources.
ii-lors d'une restitution de M ressources, le nombre de ressources disponibles peut permettre de satisfaire éventuellement plusieurs requête en attentes.il n'y a alors plus en relation entre processus libérant des ressources et un seul processus demandeur.En effet, une libération peut conduire à satisfaire plusieurs demandeurs.
3/Ce que je demande:
L'écriture de des procédures (Allouer et Libérer) pour résoudre ce problème avec deux stratégie:
i-FIFO:
Cette stratégie consiste à servir les requête dans leur ordre d'arrivé.Lors de l'appel d'une requête de N ressources, il ne peut pas satisfaire une nouvelle requête s'il existe déjà au moins une requête en attente.
ii-Ascenceur:
cette stratégie à pour but d'éviter la famine en assurant une répartition équitable des requêtes servis.Pour cela, on assure une satisfaction des requêtes selon un ordre croissant lorsqu'il y a des requêtes en attente, une requête peut être servie si le nombre de ressources est suffisant.
Il est nécessaire dans cette stratégie d'associer une condition à chaque niveau de requête de 1 à MAX_RESSOURCES.
De cette façon, il est possible de réveiller à coup sur un processus ayant demandé un nombre fixé de ressources.
Par ailleurs, il faut gérer le seuil de la dernière requête servie de façon à connaitre, lors d'une restitution de ressources, à partir de quel seuil des requêtes peuvent être servies.
Merci de bien m'aider.