Impasse dans OperaSystème de synchronisation : qu'est-ce que l'attente circulaire (exemples)

⚡ Résumé intelligent

Un blocage dans un système d'exploitation se produit lorsqu'un ensemble de processus sont bloqués parce que chacun détient une ressource et attend une autre ressource détenue par un processus différent, créant ainsi une chaîne circulaire où aucun processus ne peut progresser.

  • (I.e. Définition: Un blocage paralyse des processus qui détiennent chacun une ressource en attendant l'autre.
  • 🧩 Quatre conditions : L'exclusion mutuelle, l'attente passive, l'absence de préemption et l'attente circulaire doivent toutes être respectées simultanément.
  • (I.e. Attente circulaire : Les processus forment une chaîne fermée, chacun attendant une ressource détenue par le suivant.
  • 🛡️ La prévention: Le non-respect de l'une quelconque de ces quatre conditions empêche la formation d'un blocage.
  • (I.e. Évitement: L'algorithme du banquier vérifie les demandes de ressources afin de maintenir le système dans un état sûr.
  • 🤖 Point de vue de l'IA : L'apprentissage automatique détecte les schémas de blocage, et Copilot aide à écrire et à examiner le code de verrouillage.

Impasse dans Operating système

Qu'est-ce que l'impasse ?

Deadlock est une situation qui se produit dans un le système d'exploitation Un interblocage se produit lorsqu'un processus entre en état d'attente car un autre processus en attente détient la ressource demandée. Ce problème est fréquent en multiprocessus, où plusieurs processus partagent un type spécifique de ressource mutuellement exclusive, appelé verrouillage logiciel.

Lorsqu'un blocage survient, aucun des processus impliqués ne peut se poursuivre, et le travail affecté s'arrête jusqu'à l'intervention du système d'exploitation.

Exemple de blocage

  • Un exemple concret serait la circulation à sens unique.
  • Ici, un pont est considéré comme une ressource.
  • Ainsi, lorsqu'un blocage survient, il peut être résolu si une voiture fait marche arrière (en préemptant les ressources et en revenant en arrière).
  • Plusieurs voitures devront peut-être être reculées en cas de situation de blocage.
  • La famine est donc possible.

Exemple de blocage

Exemple de blocage

Qu’est-ce que l’attente circulaire ?

Un processus attend une ressource détenue par un deuxième processus, qui attend lui-même une ressource détenue par un troisième processus, et ainsi de suite. Ce processus se poursuit jusqu'à ce que le dernier processus attende une ressource détenue par le premier. Cela crée une chaîne circulaire.

Par exemple, le processus A se voit allouer la ressource B alors qu'il demande la ressource A. De même, le processus B se voit allouer la ressource A alors qu'il demande la ressource B. Cela crée une boucle d'attente circulaire.

Exemple d'attente circulaire

Par exemple, un ordinateur possède trois clés USB et trois processus. Chaque processus utilise une clé USB. Ainsi, lorsqu'un processus demande une autre clé, les trois processus se retrouvent dans une situation de blocage, car chacun attend qu'une clé USB soit libérée alors qu'elle est encore en cours d'utilisation. Il en résulte une boucle de blocage.

Exemple d'attente circulaire

Exemple d'attente circulaire

Détection de blocage dans le système d'exploitation

Un blocage peut être détecté par le planificateur de ressources. Ce dernier aide le système d'exploitation à maintenir la disponibilité des ressources. track représente l'ensemble des ressources allouées aux différents processus. Une fois un blocage détecté, il peut être résolu en préemptant des ressources, en annulant un processus ou en terminant un ou plusieurs des processus bloqués.

Prévention des blocages dans le système d'exploitation

Il est essentiel de prévenir un blocage avant même qu'il ne survienne. Le système vérifie chaque transaction avant son exécution afin de s'assurer qu'elle ne provoque pas de blocage. Même une opération mineure susceptible d'en engendrer un ultérieurement est systématiquement bloquée.

La prévention des interblocages est un ensemble de méthodes permettant de garantir qu'au moins une des quatre conditions nécessaires ne puisse pas être remplie.

Pas de préemption

Une ressource ne peut être libérée que volontairement par le processus qui la détient, une fois que ce processus a terminé sa tâche.

  • Si un processus qui détient des ressources demande une autre ressource qui ne peut pas lui être immédiatement allouée, alors toutes ses ressources sont libérées.
  • Les ressources préemptées sont ajoutées à la liste des ressources que le processus attend.
  • Le processus ne redémarre que lorsqu'il peut récupérer ses anciennes ressources ainsi que les nouvelles qu'il demande.

Exclusion mutuelle

L'exclusion mutuelle est l'abréviation de mutex. Il s'agit d'un type particulier de système binaire. sémaphore Ce mécanisme sert à contrôler l'accès à une ressource partagée. Il intègre un mécanisme d'héritage de priorité afin d'éviter les problèmes d'inversion de priorité prolongée et de maintenir les tâches prioritaires bloquées le moins longtemps possible.

Les ressources partagées, telles que les fichiers en lecture seule, ne provoquent jamais de blocages, mais les ressources comme les imprimantes et les lecteurs de bande nécessitent un accès exclusif par un seul processus.

Tenez et attendez

Dans ce cas, les processus doivent être empêchés de monopoliser une ou plusieurs ressources tout en attendant simultanément une ou plusieurs autres.

Attente circulaire

Cette méthode impose un ordre total à tous les types de ressources. La prévention des attentes circulaires exige également que chaque processus demande les ressources dans un ordre d'énumération croissant.

Évitement des impasses Algorithms

Il est préférable d'éviter un blocage plutôt que d'intervenir une fois celui-ci survenu. L'évitement nécessite des informations supplémentaires, notamment sur l'utilisation des ressources. L'évitement des blocages est un modèle utile dans lequel chaque processus déclare le nombre maximal de ressources de chaque type dont il pourrait avoir besoin.

Évitement Algorithms

L'algorithme d'évitement des interblocages évalue dynamiquement l'état d'allocation des ressources afin qu'une situation d'attente circulaire ne puisse jamais se produire.

Pour une instance unique d'un type de ressource :

  • Utilisez un graphique d'allocation des ressources.
  • Un cycle dans le graphe est nécessaire et suffisant pour qu'il y ait interblocage.

Pour plusieurs instances d'un type de ressource :

  • Un cycle est nécessaire mais non suffisant pour provoquer un blocage.
  • Utilisez le bouton Algorithme du banquier.

Différence entre la famine et l'impasse

Voici quelques différences importantes entre l'impasse et la famine :

Deadlock Famine
Une situation de blocage survient lorsqu'un des processus est bloqué. La famine est une situation où tous les processus de faible priorité sont bloqués tandis que les processus de haute priorité s'exécutent.
L’impasse est un processus infini. La famine est une longue attente, mais pas un processus infini.
Chaque impasse engendre toujours la famine. Toute famine n'entraîne pas nécessairement une impasse.
Un blocage survient en raison de l'exclusion mutuelle, de l'attente et du maintien, de l'absence de préemption et de l'attente circulaire qui se produisent simultanément. Cela se produit en raison de priorités non maîtrisées et d'une mauvaise gestion des ressources.

Avantages de l’impasse

Voici les avantages de l'utilisation de la méthode de gestion des interblocages :

  • Cette situation convient parfaitement aux processus qui effectuent une seule brève période d'activité.
  • Aucune préemption n'est nécessaire en cas d'interblocage.
  • C'est une méthode pratique lorsqu'elle est appliquée à des ressources dont l'état peut être facilement sauvegardé et restauré.
  • Il est possible de l'appliquer via des vérifications à la compilation.
  • Aucun calcul n'est nécessaire lors de l'exécution, puisque le problème est résolu dès la conception du système.

Inconvénients de l’impasse

Voici les inconvénients de l'utilisation de la méthode de gestion des interblocages :

  • Cela retarde le lancement du processus.
  • Les processus doivent connaître à l'avance leurs besoins futurs en ressources.
  • Elle intervient plus souvent que nécessaire.
  • Il interdit les demandes de ressources incrémentales.
  • Elle comporte des pertes inhérentes liées à la préemption.

FAQ

Un interblocage nécessite la réunion simultanée de quatre conditions de Coffman : exclusion mutuelle, attente passive, absence de préemption et attente circulaire. La suppression d'une seule de ces conditions empêche la formation d'un interblocage.

La prévention élimine l'une des quatre conditions à l'avance afin d'éviter tout blocage. L'évitement autorise les conditions, mais utilise des vérifications d'exécution, telles que… Algorithme du banquier, afin de maintenir le système dans un état sûr.

En cas d'interblocage, les processus bloqués s'arrêtent complètement et ne changent jamais d'état. livelockLes processus changent constamment d'état et utilisent le processeur sans progresser. Le blocage (Livelock) est un cas particulier de pénurie de ressources.

La plupart des systèmes à usage général, y compris Windows Sous Linux, on utilise l'algorithme de l'autruche et on ignore simplement les rares blocages, car leur prévention est coûteuse. Les bases de données et les systèmes temps réel, quant à eux, exécutent des routines actives de détection et de récupération.

Un graphe d'allocation de ressources représente les processus et les ressources sous forme de nœuds reliés par des arêtes de requête et d'affectation. Un cycle dans le graphe signale un possible blocage ; avec des ressources à instance unique, un cycle indique toujours un blocage.

Non. Un véritable blocage est permanent, car les processus bloqués ne libèrent jamais leurs ressources d'eux-mêmes. Le système d'exploitation doit le résoudre en préemptant une ressource, en annulant une opération ou en terminant l'un des processus.

Les modèles d'apprentissage automatique analysent les schémas de requêtes de ressources afin de prédire et de signaler les blocages avant qu'ils ne surviennent. Les planificateurs IA peuvent réorganiser les requêtes ou ajuster les politiques de verrouillage, ce qui s'avère utile dans les bases de données, les plateformes cloud et les systèmes distribués.

Oui. GitHub Copilot peut détecter les erreurs d'ordonnancement des verrous, suggérer des méthodes d'acquisition de verrous cohérentes et générer des tests qui révèlent les interblocages. Considérez ses résultats comme une première analyse et vérifiez ensuite la logique de concurrence avec des outils d'analyse appropriés.

Résumez cet article avec :