Il s'agit d'un algorithme bancaire utilisé pour éviter une impasse et allouer des ressources en toute sécurité à chaque processus du système informatique. Le ' État S' examine tous les tests ou activités possibles avant de décider si l’allocation doit être accordée à chaque processus. Cela aide également le système d'exploitation à partager avec succès les ressources entre tous les processus. L'algorithme du banquier doit son nom au fait qu'il vérifie si une personne doit ou non se voir accorder un montant de prêt afin d'aider le système bancaire à simuler en toute sécurité l'allocation des ressources. Dans cette section, nous apprendrons le Algorithme du banquier en détail. Nous résoudrons également les problèmes en fonction des Algorithme du banquier . Pour comprendre l'algorithme du banquier, nous en verrons d'abord un exemple concret.
Supposons que le nombre de titulaires de comptes dans une banque particulière soit « n » et que l’argent total dans une banque soit « T ». Si un titulaire de compte demande un prêt ; Tout d’abord, la banque soustrait le montant du prêt de la totalité de la trésorerie, puis estime que la différence de trésorerie est supérieure à T pour approuver le montant du prêt. Ces mesures sont prises parce que si une autre personne demande un prêt ou retire un montant de la banque, cela aide la banque à gérer et à tout exploiter sans aucune restriction dans la fonctionnalité du système bancaire.
De même, cela fonctionne dans un système opérateur . Lorsqu'un nouveau processus est créé dans un système informatique, le processus doit fournir tous les types d'informations au système d'exploitation, telles que les processus à venir, les demandes de ressources, leur comptage et les retards. Sur la base de ces critères, le système d'exploitation décide quelle séquence de processus doit être exécutée ou attendue afin qu'aucun blocage ne se produise dans un système. C’est pourquoi on l’appelle également algorithme d'évitement de blocage ou détection de blocage dans le système d'exploitation.
Avantages
Voici les caractéristiques essentielles de l’algorithme du Banker :
- Il contient diverses ressources qui répondent aux exigences de chaque processus.
- Chaque processus doit fournir des informations au système d'exploitation sur les demandes de ressources à venir, le nombre de ressources et la durée pendant laquelle les ressources seront conservées.
- Il aide le système d'exploitation à gérer et à contrôler les demandes de processus pour chaque type de ressource du système informatique.
- L'algorithme a un attribut de ressource Max qui indique que chaque processus peut contenir le nombre maximum de ressources dans un système.
Désavantages
- Cela nécessite un nombre fixe de processus et aucun processus supplémentaire ne peut être démarré dans le système pendant l'exécution du processus.
- L'algorithme ne permet plus aux processus d'échanger leurs besoins maximaux lors du traitement de leurs tâches.
- Chaque processus doit connaître et indiquer à l’avance ses besoins en ressources maximales pour le système.
- Le nombre de demandes de ressources peut être accordé dans un délai déterminé, mais le délai d'attribution des ressources est d'un an.
Lorsqu'on travaille avec l'algorithme d'un banquier, celui-ci demande à savoir trois choses :
- Combien chaque processus peut demander pour chaque ressource du système. Il est désigné par le [ MAXIMUM ] demande.
- Dans quelle mesure chaque processus détient actuellement chaque ressource dans un système. Il est désigné par le [ ALLOUÉ ] Ressource.
- Il représente le nombre de chaque ressource actuellement disponible dans le système. Il est désigné par le [ DISPONIBLE ] Ressource.
Voici les termes importants relatifs aux structures de données appliqués dans l'algorithme du banquier :
tri de tableau Java
Supposons que n soit le nombre de processus et m le nombre de chaque type de ressource utilisé dans un système informatique.
Nedd[i][j] = Max[i][j] - Allocation[i][j].
L'algorithme du banquier est la combinaison de l'algorithme de sécurité et de l'algorithme de demande de ressources pour contrôler les processus et éviter les blocages dans un système :
Algorithme de sécurité
Il s'agit d'un algorithme de sécurité utilisé pour vérifier si un système est dans un état sûr ou s'il suit la séquence sûre de l'algorithme d'un banquier :
1. Il existe deux vecteurs Wok et Finition de longueur m et n dans un algorithme de sécurité.
Initialiser : Travail = Disponible
Terminer[i] = faux ; pour I = 0, 1, 2, 3, 4… n - 1.
2. Vérifiez l'état de disponibilité pour chaque type de ressources [i], tel que :
Dois-je]<= work
Terminer[i] == faux
Si le i n'existe pas, passez à l'étape 4.=>
3. Work = Work +Allocation(i) // pour obtenir une nouvelle allocation de ressources
Terminer[i] = vrai
Passez à l'étape 2 pour vérifier l'état de disponibilité des ressources pour le processus suivant.
4. Si Finish[i] == true ; cela signifie que le système est sûr pour tous les processus.
Algorithme de demande de ressources
Un algorithme de demande de ressources vérifie le comportement d'un système lorsqu'un processus effectue chaque type de demande de ressources dans un système sous forme de matrice de demande.
Créons un tableau de demandes de ressources R[i] pour chaque processus P[i]. Si la demande de ressourcesje[j] est égal à « K », ce qui signifie que le processus P[i] nécessite « k » instances de type de ressources R[j] dans le système.
1. Lorsque le nombre de ressources demandées de chaque type est inférieur au Besoin ressources, passez à l'étape 2 et si la condition échoue, cela signifie que le processus P[i] dépasse sa réclamation maximale pour la ressource. Comme l’expression le suggère :
classe de scanner Java
Si demande(i)<= need
Passez à l'étape 2 ;=>
2. Et lorsque le nombre de ressources demandées de chaque type est inférieur à la ressource disponible pour chaque processus, passez à l'étape (3). Comme l’expression le suggère :
Si demande(i)<= available
Sinon, le processus P[i] doit attendre la ressource car elle n'est pas disponible pour utilisation.=>
3. Lorsque la ressource demandée est allouée au processus en changeant d'état :
Disponible = Disponible - Demande
Allocation (i) = Allocation (i) + Demande (i)
Besoinje= Besoinje- Demandeje
Lorsque l'état d'allocation des ressources est sûr, ses ressources sont allouées au processus P(i). Et si le nouvel état n'est pas sûr, le processus P (i) doit attendre chaque type de requête R (i) et restaurer l'ancien état d'allocation de ressources.
Exemple: Considérons un système qui contient cinq processus P1, P2, P3, P4, P5 et les trois types de ressources A, B et C. Voici les types de ressources : A en a 10, B en a 5 et le type de ressource C en a 7.
Processus | Allocation ABC | Max. ABC | Disponible ABC |
---|---|---|---|
P1 | 0 1 0 | 7 5 3 | 3 3 2 |
P2 | 200 | 3 2 2 | |
P3 | 3 0 2 | 9 0 2 | |
P4 | 2 1 1 | 2 2 2 | |
P5 | 0 0 2 | 4 3 3 |
Répondez aux questions suivantes en utilisant l'algorithme du banquier :
- Quelle est la référence de la matrice des besoins ?
- Déterminez si le système est sûr ou non.
- Que se passera-t-il si la demande de ressource (1, 0, 0) pour le processus P1, le système peut-il accepter cette demande immédiatement ?
Ans. 2: Le contexte de la matrice des besoins est le suivant :
Besoin [i] = Max [i] - Allocation [i]
Besoin de P1 : (7, 5, 3) - (0, 1, 0) = 7, 4, 3
Besoin de P2 : (3, 2, 2) - (2, 0, 0) = 1, 2, 2
Besoin de P3 : (9, 0, 2) - (3, 0, 2) = 6, 0, 0
Besoin de P4 : (2, 2, 2) - (2, 1, 1) = 0, 1, 1
Besoin de P5 : (4, 3, 3) - (0, 0, 2) = 4, 3, 1
liste de liens en Java
Processus | Besoin ABC |
---|---|
P1 | 7 4 3 |
P2 | 1 2 2 |
P3 | 6 0 0 |
P4 | 0 1 1 |
P5 | 4 3 1 |
Par conséquent, nous avons créé le contexte de la matrice des besoins.
Rép. 2 : Appliquer l'algorithme du banquier :
Les ressources disponibles de A, B et C sont 3, 3 et 2.
Nous vérifions maintenant si chaque type de demande de ressources est disponible pour chaque processus.
Étape 1: Pour le processus P1 :
Besoin<= available< p>
7, 4, 3<= 2 3, condition is FAUX .=>
Nous examinons donc un autre processus, P2.
Étape 2: Pour le processus P2 :
Besoin<= available< p>
1, 2, 2<= 2 3, condition vrai=>
Nouveau disponible = disponible + Allocation
(3, 3, 2) + (2, 0, 0) => 5, 3, 2
De même, nous examinons un autre processus P3.
Étape 3: Pour le processus P3 :
Besoin P3<= available< p>
6, 0, 0<= 2 5, 3, condition is FAUX .=>
De même, nous examinons un autre processus, P4.
Étape 4: Pour le processus P4 :
Besoin P4<= available< p>
0, 1, 1<= 2 5, 3, condition is vrai=>
Nouvelle ressource disponible = Disponible + Allocation
formatage de chaîne Java
5, 3, 2 + 2, 1, 1 => 7, 4, 3
De même, nous examinons un autre processus P5.
Étape 5 : Pour le processus P5 :
Besoin P5<= available< p>
4, 3, 1<= 3 7, 4, condition is vrai=>
Nouvelle ressource disponible = Disponible + Allocation
7, 4, 3 + 0, 0, 2 => 7, 4, 5
Maintenant, nous examinons à nouveau chaque type de demande de ressources pour les processus P1 et P3.
Étape 6 : Pour le processus P1 :
Besoin P1<= available< p>
7, 4, 3<= 5 7, 4, condition is vrai=>
Nouvelle ressource disponible = Disponible + Allocation
7, 4, 5 + 0, 1, 0 => 7, 5, 5
Nous examinons donc un autre processus P2.
Étape 7 : Pour le processus P3 :
Besoin P3<= available< p>
6, 0, 0<= 5 7, 5, condition is true< p>
Nouvelle ressource disponible = Disponible + Allocation
7, 5, 5 + 3, 0, 2 => 10, 5, 7
Par conséquent, nous exécutons l'algorithme du banquier pour trouver l'état sûr et la séquence sûre comme P2, P4, P5, P1 et P3.
convertir une chaîne en entier
Ans. 3: Pour accorder la demande (1, 0, 2), nous devons d'abord vérifier que Demande<= available< strong>, c'est-à-dire (1, 0, 2)<= (3, 3, 2), since the condition is true. so process p1 gets request immediately.< p>
=>=>