Quatre conditions nécessaires à l'impasse
Conditions d'exclusion mutuelle : La ressource est exclusive et utilisée exclusivement, et les processus utilisent les ressources mutuellement. une ressource ne peut être utilisée que par un seul processus à la fois. Si d'autres processus postulent pour une ressource et que la ressource est occupée par un autre processus, le demandeur attend que la ressource soit libérée par l'occupant. (Apprentissage recommandé : Tutoriel vidéo MySQL)
Condition de non-privation : Les ressources obtenues par le processus ne seront pas privées de force par d'autres processus avant d'être épuisées , mais seulement La ressource peut être libérée par le processus qui a obtenu la ressource.
Conditions de demande et de rétention : Chaque fois qu'un processus postule pour une partie des ressources dont il a besoin, il continuera à occuper les ressources allouées tout en sollicitant de nouvelles ressources.
Condition d'attente de boucle : Lorsqu'un blocage se produit, il doit y avoir une file d'attente de processus {P1, P2,...,Pn}, dans laquelle P1 attend les ressources occupées par P2, et P2 attend les ressources occupées par P3. Ressources,...,Pn attendent les ressources occupées par P1, formant une boucle d'attente de processus. Les ressources occupées par chaque processus dans la boucle sont demandées par un autre processus. en même temps, c'est-à-dire que le processus précédent occupe les ressources occupées par le dernier processus.
Ce qui précède donne quatre conditions nécessaires qui conduisent à une impasse. Tant qu'une impasse se produit dans le système, au moins une des quatre conditions ci-dessus est vraie. En fait, l'établissement d'une attente de boucle implique l'établissement des trois premières conditions. Il semble toutefois inutile de les énumérer. Cependant, la prise en compte de ces conditions est bénéfique pour la prévention des blocages, car l'apparition d'un blocage peut être évitée en détruisant l'une d'entre elles. les quatre conditions.
Prévention des impasses
Nous pouvons éviter les impasses en détruisant les quatre conditions nécessaires à l'impasse. Puisque l'exclusion mutuelle des ressources est une caractéristique inhérente à l'utilisation des ressources, elle ne peut pas changer.
Détruire la condition « inaliénable » : Lorsqu'un processus ne peut obtenir toutes les ressources dont il a besoin, il est en état d'attente. Pendant la période d'attente, les ressources qu'il occupe seront implicitement libérées et ré-ajoutées au système. liste des ressources du système. Vous pouvez Il est utilisé par d'autres processus, et le processus en attente ne peut être redémarré et exécuté que s'il récupère ses ressources d'origine et les ressources nouvellement appliquées.
Détruisez les « conditions de demande et de maintien » : la première méthode est l'allocation statique, c'est-à-dire que chaque processus s'applique à toutes les ressources dont il a besoin lorsqu'il commence à s'exécuter. La seconde est l'allocation dynamique, ce qui signifie que chaque processus n'occupe pas de ressources système lorsqu'il sollicite les ressources requises.
Détruisez la condition « d'attente circulaire » : adoptez l'allocation ordonnée des ressources. L'idée de base est de numéroter toutes les ressources du système de manière séquentielle et d'utiliser des nombres plus grands pour celles qui sont rares et rares lors de la candidature. pour les ressources, vous devez suivre la numérotation. Dans l'ordre, un processus peut postuler à un processus avec un numéro plus grand seulement s'il obtient un numéro plus petit.
Pour plus d'articles techniques liés à MySQL, veuillez visiter la colonne Tutoriel MySQL pour apprendre !
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!