CA2119988A1 - Methode d'analyse d'interblocages dans un systeme d'exploitation - Google Patents

Methode d'analyse d'interblocages dans un systeme d'exploitation

Info

Publication number
CA2119988A1
CA2119988A1 CA002119988A CA2119988A CA2119988A1 CA 2119988 A1 CA2119988 A1 CA 2119988A1 CA 002119988 A CA002119988 A CA 002119988A CA 2119988 A CA2119988 A CA 2119988A CA 2119988 A1 CA2119988 A1 CA 2119988A1
Authority
CA
Canada
Prior art keywords
lock
execution
deadlock
cycle
unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Abandoned
Application number
CA002119988A
Other languages
English (en)
Inventor
Jean-Paul Dubourreau
Thierry Jacquin
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Bull SA
Original Assignee
Bull SA
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Bull SA filed Critical Bull SA
Publication of CA2119988A1 publication Critical patent/CA2119988A1/fr
Abandoned legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/524Deadlock detection or avoidance

Abstract

Abrégé : Ce procédé d'analyse d'interblocages dans un système d'exploitation d'une machine utilise une méthode qui consiste à rechercher, pour toute unité d'exécution bloquée sur un verrou, l'unité d'exécution qui détient ce verrou et lorsque l'unité d'exécution est elle-même en attente sur un verrou à remonter la chaîne jusqu'à trouver un cycle. De façon remarquable, lorsque la machine comporte un multiprocesseur symétrique et fonctionne dans un environnement UNIX, ce procédé utilise de manière itérative une fonction spécifique qui permet de passer d'une unité d'exécution et de l'ensemble des processeurs vers tout type de verrous (en attente active ou passive) en parcourant l'une après l'autre les unités d'exécution pourreconstituer élément par élément un interblocage et donc un cycle. Il permet en outre, lorsqu'une mémoire virtuelle est utilisée et que toutes les informations utiles ne se trouvent pas en mémoire physique, d'assister un utilisateur pour agencer l'ensemble des chaînes fourni par ledit procédé pour reconstituer le cycle déterminant l'interblocage. Pas de figure.

Description

21~L9~8 , . , Proeédé d'analyse d'interblocages dans un systeme d'exploitation.

La présente invention concerne un procédé d'analyse d'interblocages dans un système d'exploitation d'une machine consistant à rechercher pour toute unité
s d'exécution (~Melée par l'homme du métier "thread") bloquée sur un verrou (appelé également par l'hornme du métier "lock"), l'unité d'exécution qui détient ce verrou et lorsque cette unité d'execution est elle-même en attente sur un autre verrou de remonter la chame jusqu'à trouver un cycle.

o Un tel procédé d'analyse d'~nterblocages est habituellement u~lisé et ce procédé
traditionnel est par exemple décrit dalls "Modern Operating Systems", Tanenbaum 1992 (Prentice-Hall International Editions).

Pour résoudre les problèmes d'interblocage la ~éorie des graphes est utilisée et le s présent ouvrage propose une modélisation dans laquelle le graphe de dépendanced'un système est constitué de deux familles de noeuds: les processus et les ressources que nous transposerons pour s'adapter à notre application en des verrous et des unités d'exécution connectés au moyen d'arcs selon la sémantique suivante.
Un a~c connectant une unité d'exécution à un verrou signifie que l'unité d'exécution 20 est bloquée en attente de ce verrou. A l'inverse, un arc cormectant un verrou à une unité d'exécution signilie que l'unité d'exécution détient ce verrou qui lui est donc temporairement af~ecté. Ainsi, si une unité d'exécution Tl est en attente d'u~
verrou Ll qui est alors detenu par une unité d'exécution T2 qui ne peut relâcher ce verrou Ll car l'unité T2 est elle même en attente d'un verrou L2 détenu par l'uni$é
25 Tl, un cycle est formé dang le graphe et les deux unités d'exécution Tl et T2 sont irrémédiablement bloquées, il y a interblocage. Dans le présent exemple le cyclefo~né dans le ~raphe est le suivant: Tl ~ Ll ~ T2 ~ L2~ Tl.

Ce t~pe de procédé peut donner des résultats satisfaisants lorsqu'il est appliqué à
30 l'analyse d'interblocages dans un système d'exploitadon d'une machine comportant un seul processeur, mais il montre ses limites et ne peut donc être efficacementu'dlisé avec un système d'exploitation d'une mac~ine comportant un multiprocesseur symétrique et ceci d'autant plus quand la maclline fonctionne dans un envirormement UNIX (marque déposée par llNIX System Laboratories Inc.).
35 En ei~et, pour des raisons de performances, un système d'exploitation de ce type favorise l'utilisation de verrous "actifs", c'est~ e de verrous qui lorsqu'ils sont rencon~és engendrent une attente active; Cette attente active est de manière habituelle justifiée pour le cas de figure dans lequel un verrou n'est pas libre mais 21~99~

dont le détenteur dudit verrou est actiE sur un autre processeur. Dans un tel cas, ne pas attendre activement un verrou qui a une très ~orte probabilité d'être assez rapidement libéré, serait préjudiciable. En outre, les tra*ants d'exception ou d'interruption n'ayant pas leur propre contexte d'exécution, ne peuvent être 5 autori~ ~s à s'endormir dans l'attente d'un verrou et doivent par conséquent attendre également de manière active. Ceci peut conduire à un empilement d'attentes actives sur un processeur, car une unité d'exécution qui est en attente active sur un verrou peut de plus être interrompue alors que le traitant d'interrup~on lui-même peut attendre activement un verrou.
Dans la recherche d'interblocage passant par l'analyse d'une telle situation, leveTrou bloquant l'unité d'exécution n'est pas celui qui a provoqué son attente (et qui de plus, a pu être libéré depuis), rnais celui attendu par le traitant d'interruption.

15 Il peut, de plus, arriver qu'un traitant d'inte~uption soit lui-même interrompu pour une raison de priorité supérieure, et ceci ainsi de suite, aboutissant à un empilement pouvant alors atteindre plusieurs étages. Si dans cet empilement de traitants d'interruption, plusieurs sont en attente d'un verrou, le verrou bloquant l'unité d'exécution est celui attendu par le traitant d'interruption de plus haute 20 priorité. Dans un tel cas, le procédé traditionnel ne permet pas de constituer le graphe reel de dépendances, et en particulier, de définir de manière iiable les arcs allant des noeuds de type unité d'exécution vers les noeuds de type verrou.

La présente invention propose un procédé d'analyse d'interblocages qui ne présente 25 pas les limites et donc les inconvénients du procédé connu et en particulier lorsqu'il est utilisé avec un système d'exploitation d'une machine comportant un ~nultiprocesseur symétrique et fonc$ionnant dans un environnement IJN~.

Pour cela le procédé d'analyse d'interblocages du genre mentionné dans le 30 préambule est remarquable en ce que, en outre, lorsque la machine comporte unmultiprocesseur symétr~que et fonctionne dans un environnement UNIX, il utilise de manière itérative une fonction spécifique qui permet de passer d'une unité
d'exéculion e$ de l'ensemble des processeurs vers tout type de verrous en parcourhnt l'une après l'autre les unités d'exéc~tion pour reconstituer élément par 35 élément un interblocage et donc un cycle.

Ainsi, ~srâce au procédé selon l'invention un interblocage peut être efficacement arlalysé même dans le cas d'un système d'exploitation gérant un multiprocesseur ... ~. ~
2 ~ 8 8 symétrique et fonctio~mant dans un environnement UNIX. En effet, le processeur exécutant l'unité d'exécution concernée est ainsi con~u, l'ensemble des unités d'exécution va ê~e parcouru et des éléments du cycle seront extraits unité
d'exécution par unité d'exécution jusqu'à reconstituer un cycle et sortir un état s complet qui peut être exploité par l'utilisateur et ceci pour tout type de verrou: en attente active ou passive. L'application d'un tel procédé permet de rendre l'utilisateur complètement indépendant du mécanisme interne des verrous. De plus, le traitement de l'information existante, c'est-à-dire de l'infolmation présente et directement accessible en mémoire, est totale~nent automatisé, ce qui présente un o autre important avantage relativement au procédé traditionnel dont l'application était manuelle et par conséquent en fonction des difficultés pouvait être excessivement longue et rebutaIlte ou tout sirnplement ne pas aboutir à la moindre informationmanquante.

S Avec tout outil de mise au point sont ~ourrues les primitives de base qui peImettent d'aller voir ce qu'exécute une uIIité d'exécution ou un processeur et savoir dans quel état est un verrou, un utilisateur peut donc utiliser de manière générale le procédé traditionnel ou le présent procédé. Cependant, le présent procédé employé
dans son principe va à l'encontre de la technique traditionnelle, car la démarche 20 naturelle est de faire correspondre une unité d'exécutiorl à un verrou sans se préoccuper de l'état des processeurs et sans aller vérifier commellt les unités d'exécution ont été interrornpues ni tenir compte des priorités de recherche.

Se dégage également un autre aspect intéressant. ~u-delà de l'interblocage lié aux 25 verrolls, une unité d'exécution peut être parfo~ls interrompue dans l'attente d'un événement qui peut être l'attente d'une ressource diffiérente du système, ceci apparaît dans la ch~ne d'éléments consdtuant l'interblocage et donc permet d'expliquer toute attente pour quelque raison que ce soit.

30 De m8me, le procédé traditionnel peut s'avérer inefficace pour analyser un interblocage dans un système d'exploitation à mémoire virtuelle. En effet, seules les informations présentes en mémoire physique sont directement u~lisables pour rechercher un cycle, toute in~ormation permetta~t la détection d'un cycle qui n'est pas en mémo~e physique empêichant alors de retrouver ledit cycle. Cela signifie 3s donc qu'il n'est pas disposé d'un graphe complet, certains arcs et certains noeuds pouvant dans ce cas de figure ne pas 8tre repérés en mémoire physique.

Un autre but de la présente invention consiste à fournir une solution efficace aux : . ~

2119~
:` 4 ~ :
problèmes posés au procédé traditionnel lorsqu'il est utilisé une mémoire virtuelle par le système et que par conséquent toutes les informations utiles ne se trouvent pas obligatoirement en mémoire physique.

5 Pour cela, le présent procédé est remar~nable en ce que, après avoir détecté
l'ensemble des châînes de dépendaIIces entre verrous et unités d'exécution, les informations relatives à la pile *exécution de chaque unité d'exécution sont également délivrées, ces in~ormations autorisant alors l'utilisateur à agencer l'ensemble des cha^1nes de manière à reconstituer le cycle déterminant o l'interblocage.

Ainsi, pour dormer la possibilité à l'utilisateur de résoudre ce problème d'informations non présentes en mémoire physique, dans une de ses étapes spécifiques le procédé permet de détecter l'ensemble des cha~es de dépendances 5 entre verrous et unités d'exécution et délivre ensuite les informations relatives à la pilè d'exécution de chaque unité d'exécution. Ces dernières informations permettent à l'opérateur de connecter un sous-ensemble de cha~nes afin de reconsti~uex le cycle caractérisant l'interblocage.

20 En fait, une totale automatisation de la recherche d'un cycle ne peut être atteinte que si toutes les informations sont présentes en mémoire physique, or avec l'utilisation d'une mémoire virtuelle la probabilité que certaines informations ne soient pas stockées en mémoire physique est loin cl'être nulle et dans ce cas là le rnode de recherche n'est plus complètement autornatique mais correspond à un 25 mode assisté. Lorsqu'une in~ormation n'est pas présente en mémoire physique, selon le proc~dé, l'u~lisateur se voit présenter des informations concernant la pile d'exécution et ces informations permett~ont alors à l'u~lisateur, qui ne doit pas pour cela posséder de connaissances pointues en matière de verrous, de retrouver de manière automatique le (ou les) morceau(x) de cycle manquant lors de la 30 rec~erche, la cormaissance du contexte par l'utilisateur permettant alors de reconstituer dans son intégralité le cycle. L'acquis nécessaire pour cela à
l'utilisateur peut se limiter à la connaissance de relations entre un certain nombre de tâches dans le système et une connaissaIIce grossière de l'arborescence et de la spécification (fonctionnalités). La recherche de l'interblocage se fait alors en mode 35 assisté par l'utilisateur, mais ce dernier est rendu complètement indépendant du ;.
mécanisme interne des verrous puisqu'il n'a pas besoin de savoir comment sont programmés lesdits verrous, ni quel l~pe de verrou est concerné par l'application en ques~ion.

2 1 1 9 ~q ~

s ~::

De cette manière, mode totalement automatique et mode assisté par l'utilisateur cohab*ent, tant que les informations nécessaires sont disponibles en mémoire physique, c'est le premier rnode automatique qui est opérationnel pour la recherche 5 d'un cycle dans un graphe et dès qu'une information u~le manque le mode assisté
par l'utilisateur prend le relais pour la reconstitution à par~r des morceaux trouvés de l'ensemble du cycle.

Une telle analyse avec détection d'interblocage peu$ ê~e ensuite aisément lo exploitée. Les verrous et les t~ches impliqués dans l'interblocage sont ainsi connus et perrnettent de modifier utilement une prograrnmation. Lorsque le cycle est caractérisé, les unités d'exécution impliquées dans le cycle, les fonctions des unités d'exécution qui détiennent les verrous, les types de vexrou, de même que les opérations effectuées par les unités d'exécution au moment où ces dernieres ont été
15 bloquées sont déterminées permettant ainsi de retrouver la programmation et de détecter éventuellement des violations de hiérarchie. Puis ensuite la correction des interblocages peut être e~ectuée par les développeurs en u~lisant un analyseur d'interblocages statique.

20 L'analyse des interblocages selon le présent procédé a pour but essentiel de mettre en évidence un défaut du système en remontant à son orig~ne et ceci avec le plus de précision possible de maniere à le corriger clans une phase ultérieure de développement.

25 La description suivante au regard des dessins ar~exés, le tout donné à titre d'exemple non limitatif, fera bien comprendre comment l'invention peut etre r~alisée.

La figure 1 représente un schéma décrivant les différelltes étapes d'application du 30 procédé traditionnel d'analyse d'interblocages.

La figure 2 propose un schéma décrivant les di~érentès étapes d'application du procédé selon l'invention adapté à l'analyse d'interblocages pour une mac~ine comportant un mllltiprocesseur symétrique et fonctionnant dans Im environnement 35 UNIX.

La figure 3 propose de plus, une adaptation de certaines étapes décrites sur le schéma de la figure 1 et montrées sllr la figure 2 utilisable avec un système à

::
211.9~9~'8 mémoire virtuelle.

Sur la figure 1, les difl~érentes étapes du procédé traditionnel d'analyse d'interblccages sont décrites sous la fo~ne d'un algorithme.
s Pour une meilleure appréhension de l'in~ention, suivent quelques précisions relativemen~ à la te~ninologie employée. De ma~ière générale, un interblocage est susceptible de se produire lorsqu'un système d'exploitation fait de l'alloca~on dynam-ique de ressources car il permet à une tâche de commencer son exécution lo avant d'avoir acquis toutes les ressources nécessaires. Un verrou est un exemple de mécanisme régulant l'accès aux ressources qui supportent un nombre limité d'accès concuIrents. Egalement, un système peut exécuter simultanément plusieurs processus, un processus comportallt une séquence d'ins~uctions machine ainsi queles informations relatives à l'état de son exécution. Chaque processus peut êtres firactionné pour être exécuté par une pluralité de processeurs, la fraction duprocessus s'exécutant sur un processeur donné à un instant donné est appelé une unité d'exécution. Comme cela a été précédemment énoncé, le procédé tradidonnel consiste à rechercher pour toute unité d'exécution bloquée sur un verrou, l'unité
d'exécu~on qui détient le verrou, et, si cette unité d'exécution est elle-même en 20 attente sur un allt~e verrou de remonter la chaîne jusqu'à trouver un cycle. Un cycle détecté dans le graphe de dépendances indique qu'il a été trouvé un interblocageimpliquant les processus et les ressources~ s ledit cycle, le graphe de dépendances étant ici constitué de deux familles de noeuds, d'une paIt les verrous et d'autre part les processus ou les unités d'exécution.

Une fois le graphe de dépendances obtenu, le procédé traditionnel décrit avec lafigure 1 est appliqué. Ainsi la première étape Sl d'initialisation ~N] peut être a~si explimée: pour tout noeud N (verrou ou unité d'exécution) du graphe, appeler lescinq étapes suivantes avec N comme point de départ. L'étape S2 correspond à
30 l'initialisation d'une liste L vide [LE], alors que tous les arcs connectant les noeuds sont declarés non marqués [AUl. A l'étape S3.A [L+Nl, le noeud couraIlt est ajouté
à la f;n de la liste L, tandis qu'à l'étape S3.B [2xN ?] est posée la question: "Le noeud courant N apparâît-il deux fois darls la liste L ?" Si la réponse est oui (Y), cette double appa~'don démontre que le graphe contient un cycle (listé dans la liste 35 L) et le procédé est arrête le cycle étant trouvé lCF]. Si ài l'inverse la réponse est non (N), il y a passage à l'étape S4 [(C~UA)N 7] où la question suivante est posée:
"Existe-t-il des arcs issus du noeud courallt et non marqués ?". Si la réponse est oui, l'étape suivante est l'étape S5.A [PRUA + M~ au cours de laquelle est choisi au 21199~8 hasard un arc sortant non marqué pour ê~e marqué, pu~s à l'étape S5.B [NCN], le noeud pointé par cet arc est considéré comme le nou~eau noeud courant et il y a retour à l'étape S3.A. Si, par contre, la réponse à la question de l'étape S4 est non, le procédé est dans une impasse et c'est l'étape S6.A rN-l] qui permet de revenir au s noeud précédent (celui qui était le noeud courant juste avant ce dernier) qui est alors considéré comme le noeud courant. A l'étape S6.B [N-l = lN ?3 une ques~on se pose: "Le noeud est-il le noeud initial?". Si la réponse est non, il y a retour à
l'étape S4, alors que si la réponse est oui, à l'étape S6.C [ON ?] ulle dernièrequestion est posée: "Exis$e-t-il un autre noeud ?". Une réponse néga~ve en~a~ne 10 un arrêt du procédé informant qu'à par~r du noeud courant, il n'existe pas de cycle dans le ~aphe tNCIG]. Enfin, si la réponse est oui, il y a re$our à l'étape Sl pour alyse du ou des noeuds restants.

Sur la figure 2 est proposé un schéma décrivant les différentes étapes du procédé
lS selon l'invention qui permettent d'adapter efficacement le procédé traditiormel à
l'analyse d'interblocages pour une machine comportant un multiprocesseur symétrique et fonctionnant dans un environnement ~N~. Cette adaptation est avantageusement obtenue g~ce à la fonction spécifique définissant les arcs connect~t les unités d'exécution pour l'ensemble des processeurs aux verrous. En20 effet, conformément à l'idée de l'invention, le proclédé est rema~quable en ce qu'il utilise de manière itérative une fonction spécifique qui pelmet de passer d'une unité
d'exécution et de l'ensemble des processeurs vers tout ~pe de verrous en parcou~ t l'une après l'au~e les mutés d'exécution pour reconstituer élément parélément un interblocage et donc un cycle.

Pour cela, l'étape S4 est remplacée par les étapes décrites ci-après pen~etta~t de mettre en oeuvre ladite onction spécifique. Les étapes Sl à S3 (S3.A ~ S3.B), S5 (S5.A + S5.B~ et S6 (S6.A + S6.B ~ S6.C) du procédé traditiormel sont conservées 30 Ainsi, dans le présent procédé selon l'invention, à une réponse négative à laquestion posée à l'étape S3.B de la méthode tradidomlelle correspond l'étape S'4.A
au cours de laquelle est posée la question [T ?]: "Le noeud courarlt est-il du type u~ité d'exécution ?". Si la réponse est négative, la question suivante est posée à
l'étape S'4.B ~L ?]: "Le noeud courant est-il url verrou ?". Si la réponse est 35 négative, le procédé est dans une impasse et il y a passage à l'étape S6.A duprocédé traditiormel (voir figule 1) pour un traitement équivalent (S6.A, S6.B, S6.C). Si au corltraire le noeud courant est u~ verrou, cela signifile que l'unité
d'exécution T est l'unité détentrice du velTou L ou bien l'unité inte~ompue par un 21 1 99~
- : ~

traitant d'~ntermption détenteur du verrou L. Dans ce cas, l'étape S'4.C suit avec la question [N ~ T ?]: IIExiste-t-il un arc connectant le noeud courant N vers l'unité
d'exécution T ?". Une réponse af~native entrca~ne le passage à l'étape S5.A du procédé traditionnel. Une réponse négative est suivie de l'étape S'4.D où il ests défini un auc du noeud courant N vers l'unité T N ~ T ] puis du passage à l'étape S5.A du procédé traditionnel.

A l'inverse, lorsque la réponse à la question [T ?] de l'étape S'4.A est af~native la question suivante est posée à l'étape S'5 [NS ?]: "L'unité courante T est-elle o endorrnie (en attente) ?". Une réponse af~native entrâ~ne l'étape S'6.A où la question suivante est posée [L ?]: "L'évènement attendu est-il un verrou ?". Si la réponse est oui alors à l'étape S'6.B est posée la question [N ~ L ?]: "Existe-t~
un arc connectant le noeud courant N au verrou L ?". Si la réponse est oui, il y a passage à l'étape S5.A du procédé traditionnel, si la réponse est non c'est l'étape 15 S'6.C où il est défini un arc du noeud courarlt N vers le verrou L [N ~ L], l'étape S'6.C étant suivie du passage à l'étape S5.A du procédé traditionnel.

En outre, une réponse négative à la question [L ?] de l'étape S'6.A signifie quel'attente est relative à un évènement autre qu'un verrou et alors à l'étape S'6.D, il est 20 ajouté un noeud de type neutre [N + 1], puis à l'étape S'6.E est posée la question rN ~ N + 1 ?]: "Existe-t-il un arc connectant le noeud courant précédent N au nouveau noeud courant N + 1?". Une réponse affirmative est suivie du passage à
l'étape S5.A du procédé traditionnel, alors qu'une réponse négative entra~ne l'étape S'6.F où un arc est défi~i connectant le noeud N au nouveau noeud courant N + 1 2s [N ~ N -~ 1], puis il y a passage à l'étape SS.A du procédé traditionnel. n est à
préciser qu'un noeud de type neu~e correspond à tout évènement qui n'est ni un verrou ni une unité d'exécution et qui pourrait être par exemple un signal attendu par une unité d'exécution. 4 ' '`' ': '.. ~
30 Une réponse négative à la question de l'étape S'5 signifile que l'unité d'exécution courallte est active. Tous les processeurs doivent être parcourus de Po à Pn c'est l'étape S'7 où une question est posée: "L'ensemble des processeurs a-t-il été
parcouru7" [Pi > Pn ?]. Si oui, il y a passage à l'étape S6.A du procédé traditionnel, le cycle de dépendance étant obligatoirement ailleurs s'il existe, l'unité d'exécution 35 est par conséquent sans dépendallce. Si la réponse est non, l'étape suivarlte est S'8.A au cours de laquelle l'empilement d'ex~cution du processeur courant Pi estparcollru jusqu'au dernier contexte d'exécution [STAC], puis à l'étape S'8.B estposée la question suivante: "Le contexte d'exécution pointé est-il celui de l'~té

2 ~ 9 8 8 courante ?" [CTC ?]. A une réponse négative correspond un retour à l'étape S'7. A
l'inverse, une réponse affilmative signifie que le processeur sur lequel l'ur~ité
d'exécution est active est trouvé, ce qui en~raîne l'étape S'9 et la question:
"L'empilement d'exécution du contexte courant du processeur courant est-il en s attente d'un verrou ?" [SWL ?]. Une réponse affi~native condui$ à l'étape S'lO.A
[N ~ L?] où la question suivaIlte est posée: "Existe-t-il un arc connecta~t le noeud courant N au verrou L ?". Si la réponse est oui il y a passage à l'étape S5.A
du procédé traditionnel. Si la réponse est non, l'appel coura~lt de la pile d'exécution associée a~ contexte courant éta~t une demande de ve~rou, à l'étape S'lO B
o [N ~ L] il est alors tracé un arc du noeud courant N vers le verrou L demaIIdé par l'appel courant, puis il y a retour à l'étape S5.A du procédé ~aditionnel. Da~s le cas contraire, la réponse négative à la question [SWL ?] de l'étape S'9 entra~ne uneau~e question [OC ?] à l'étape S'lO.C: "Existe-t-il un autre contexte d'exécution 7". S'il existe un autre contexte qui suit, ce demier est redéfini comme 15 le contexte courant, c'est l'étape S'lO.D [RCC], puis il y a retour à l'étape S'9. Si à
l'inverse, la réponse à la question de l'étape S'lO.C est non, il n'y a pas d'autre contexte, cela signifie que cette unité d'exécution n'est pas bloquée par un verrou ce qui entrâ~ne le passage à l'étape S6 du procédé traditionnel décrit avec la re 1. c ` : ~:
Sur la figure 3 est proposé une adaptation de certaines étapes décrites sur le ~ ~
schéma de la figure 1 et indiquées également sur la .figure 2, adaptation qui autor~se : ~ r.,' une utilisation efflc&ce du procédé selon l'invention appliqué à un système d'exploitation à mémoire virtuelle.
~ ~ ~
En efl~et, cornme cela a été dit précédemment, le procédé traditionnel décrit avec la figure 1, se révèlera peu ef~cace pour analyser un interblocage dans un système d'ex~loita~on à mémoire virtuelle. Une recherche de cycle ne peut abou~r qu'à ~ -condition de disposer de toutes les informations utiles en mémoLre physique, or 30 certaines informations pe~nettarlt la détec'don du cycle peuvent, à un instant dorulé, ne pas se trouver en mémoire physiqwe mais en mémoire virtuelle. Dans ces conditions, le graphe de dépendances complet ne peut être constitué si certains arcs et certains noeuds (un~té d'exécution ou verrou) ne sont pas repérés en mémoire physique. ~ :

Pour avantageusement donner à l'utilisateur la possibilité de résoudre ce problème, ~ ~ ~
le présent procédé est prévu pour détecter l'ensemble des châînes de dépendance ~ ~ ;
entre verrous et unités d'exécution, les informations relatives à la pile d'exécution ~ ~

~-`' 2:119~8 de chaque unité d'exécution sont égalernent délivrées, ces informations autorisant alors l'uiilisateur à agencer l'ensemble des châ~nes de maI~ière à reconstituer le cycle déterminant l'interblocage.

5 Dans ce but, l'étape S6 (S6.A, S6.B, S6.C) du procédé traditionnel (voir figures 1 et 2) est modifiée de la manière suivante. Une réponse néga~ve aux questions posées à l'étape S'4.B [L ?] et à l'étape S'lO.C ~OC ?] de même qu'une réponse positive à la question [Pi > Pn ?] de l'étape S'7 est suivie de l'étape S'll.A qui est relative à l'affichage de la liste L [DL (DST)] qui peut être amsi exploitée paro l'utilisateur, en paIticulier l'empilement d'exéeu~on associé à toutes les unités d'exécution renconl~es dans cette liste est décodé. L'étape S'll.B suivante est identique à l'étape S6 (S6.A, S6.B, S6.C) du procédé traditionnel.

Selon une première application préférée, le procédé conforme à l'illvention peut15 être mis en oeuvre par un outil de mise au point ayant accès en consultation à toute lamémoirephysique.

Selon une seconde applica'don préférée, le procédé conforme à l'invention peut être mis en oeuvre par un outil d'analyse de vidages mémoire.

De cette manière une machine qui est en exploitation ou en phase de test peut avantageusement bénéficier de l'application du présent procédé. Lorsque des interblocages surviennent, ladite mac~ine peut deven~r quasiment indisponible, dans ce cas il peut être fait appel à un ou~dl, soit de ma~ re interactive c'est alors 25 un outil de mise au point qui est utilisé pour mettre en oeuvre le procédé, soit de manière rétrospective en faisant appel à un outil d'analyse de vidages de mémoire et dans ce cas il est pris une image de la mémoire de la machine dont l'état estanalysé par u~ outil d'analyse de vidages mémoire soit sur une autre machine, soit su~ la m~me machine qui a été relancée.

En conclusion, le procédé selon l'invention apporte d'une part ur~e généricité pour traiter des problèmes posés par l'utilisation d'un multiprocesseur symétrique etd'autre part l'assistance nécessaire à un utilisateur lorsque ce procédé est exploité
dans un système d'exploitation à m~oire virt~elle. Les pièges habituels posés à
35 l'utilisateur peuvent etre ainsi aisément décelés et évités, par exemple lorsqu'un interblocage n'est pas dû spécifiquement à des verrous qu~ peuvent être no~
bloquants pour des unités d'exécution mais également à d'autres évènements tels que des verrous attendus par des traitants d'interrupdons. Pour cela l'u~dlisateur ne - .. .. ~ .

2~9g~8 doit pas nécessairement être, comme c'était le cas auparavan~, un spécialiste des noyaux de systèmes d'exploitation connaissant par~aitement les structures du noyau pour savoir remonter là où sont placées les informations, mais seulement une personne ayant la connaissance des relations entre un certain nombre de tâches et s une connaissance relltivement grossière de l'arborescence et des fonctionnalités données dans la spécification. Moyennant cette connaissance le procédé est parf~itement efficace car grâce à sa fonction spéciiE;que qui permet de passer d'une unité d'exécution et d'un ensemble de processeurs à tout ~pe de verrous simple ou complexe, il fournit à l'utilisateur soit directement les raisons de l'interblocage so*
o un ensemble de maillons d'une c~iâîne lui pelmettant de remonter aisément jusqu'à
l'interblocage. Il va de soi que le présent procédé qui permet une recherche efficace relativeme~t aux unités d'exécution est tout aussi efficace concernant les processus, une unité d~exécution étant comme cela a été précisé ci-avant une ~action d'un processus et donc permettant une approche plus fine du processus.

:: :.~ :: .. '; : :, . ::::, : , . . , ., . , ,, ., . ., ~ , , ; :

Claims (7)

1. Procédé d'analyse d'interblocages dans un système d'exploitation d'une machine consistant à rechercher, pour toute unité d'exécution bloquée sur un verrou, l'unité
d'exécution qui détient ce verrou et lorsque l'unité d'exécution est elle-même en attente sur un autre verrou à remonter la chaîne jusqu'à trouver un cycle, caractérisé en ce que, en outre, lorsque la machine comporte un multiprocesseur symétrique et fonctionne dans un environnement UNIX, il utilise de manière itérative une fonction spécifique qui permet de passer d'une unité d'exécution et de l'ensemble des processeurs vers tout type de verrous en parcourant l'une après l'autre les unités d'exécution pour reconstituer élément par élément un interblocage et donc un cycle.
2. Procédé d'analyse d'interblocages selon la revendication 1, caractérisé en ce que, de plus, lorsqu'il est utilisé une mémoire virtuelle et que toutes les informations utiles ne se trouvent pas en mémoire physique, après avoir détecté l'ensemble des chaînes de dépendance entre verrous et unités d'exécution, les informations relatives à la pile d'exécution de chaque unité d'exécution sont également délivrées, ces informations autorisant alors l'utilisateur à agencer l'ensemble des chaînes de manière à reconstituer le cycle déterminant l'interblocage.
3. Procédé d'analyse d'interblocages selon la revendication 1, caractérisé en ce que la fonction spécifique qui permet de passer d'une unité d'exécution et de l'ensemble des processeurs vers tout type de verrous est mise en oeuvre selon les étapes suivantes :

1. Recherche de la nature du noeud courant (unité d'exécution ou verrou).
Si c'est une unité d'exécution passage à l'étape 2. Si c'est un verrou, il est détenu par une unité d'exécution et un arc est tracé pour le connecter à cette unité d'exécution.

Si ce n'est ni une unité d'exécution, ni un verrou, le procédé est dans une impasse de laquelle il peut être sorti en appliquant une partie du procédé
connu.

2. Ladite unité courante est-elle en attente 7 Si oui, passage à l'étape 3, sinon passage à l'étape 4.

3. L'évènement attendu est-il un verrou ? Si oui, tracer un arc vers ce verrou et retourner à l'étape 1, sinon l'attente est due à un autre évènement, ajouter alors un noeud de type neutre, tracer un arc vers ce nouveau noeud s'il n'existe pas déjà.
4. L'unité d'exécution est active. Pour tout processeur de la machine aller à
l'étape 5. Si tous les processeurs sont parcourus, l'unité d'exécution est en fait en attente d'une ressource processeur, le cycle de dépendance est obligatoirement ailleurs s'il existe. L'unité d'exécution est sans dépendance.
5. L'empilement *exécution du processeur courant est parcouru jusqu'au dernier contexte d'exécution. Si ce contexte d'exécution est celui de l'unité d'exécution courante, passage à l'étape 6, sinon aller à l'étape 4 et chercher sur un autre processeur, ceci jusqu'au dernier processeur.
6. Le processeur sur lequel l'unité courante est active a été trouvé. Par conséquent, rechercher si l'empilement d'exécution est en attente d'un verrou. Pour tout contexte d'exécution de l'empilement d'exécution du processeur, passage à l'étape 7.
7. L'appel courant de la pile d'exécution associée au contexte d'exécution courant est-il une demande de verrou ? Si oui, tracer un arc, s'il n'existe pas déjà, de l'unité d'exécution courante vers le verrou demandé par ledit appel courant. Sinon, s'il existe un contexte d'exécution suivant, lui réappliquer les étapes 6 et 7. Si, il n'existe pas d'autre contexte suivant, cette unité d'exécution n'est pas bloquée par un verrou. Le procédé est dans une impasse de laquelle il peut être sorti en appliquant une partie de procédé connu.

4. Procédé d'analyse d'interblocages selon les revendications 2 et 3, caractérisé en ce que, lorsque le cycle ne peut être reconstitue du fait que toutes les informations utiles ne se trouvent pas en mémoire physique, après avoir détecté l'ensemble des chaînes de dépendance entre unités d'exécution et verrous, dans une première phase la liste des unités d'exécution et des verrous avec leurs dépendances est affichée pour être exploitée par l'utilisateur, en particulier l'empilement d'exécution associé à toutes les unités d'exécution rencontrées dans cette liste est décodé, puis dans un seconde phase la partie du procédé connu mentionnée à l'étape 7 de la revendication 3 est appliquée.

5. Utilisation du procédé selon l'une des revendications précédentes pour l'analyse d'interblocages dans un système d'exploitation entre processus et verrous.

6. Utilisation d'un outil de mise au point ayant accès à l'ensemble de la mémoire physique pour la mise en oeuvre du procédé selon l'une des revendications précédentes.

7. Utilisation d'un outil d'analyse de vidages mémoire pour la mise en oeuvre duprocédé selon l'une des revendications précédentes.
CA002119988A 1993-08-03 1994-03-25 Methode d'analyse d'interblocages dans un systeme d'exploitation Abandoned CA2119988A1 (fr)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR9309533 1993-08-03
FR9309533A FR2708766B1 (fr) 1993-08-03 1993-08-03 Procédé d'analyse d'interblocages dans un système d'exploitation.

Publications (1)

Publication Number Publication Date
CA2119988A1 true CA2119988A1 (fr) 1995-02-04

Family

ID=9449885

Family Applications (1)

Application Number Title Priority Date Filing Date
CA002119988A Abandoned CA2119988A1 (fr) 1993-08-03 1994-03-25 Methode d'analyse d'interblocages dans un systeme d'exploitation

Country Status (6)

Country Link
US (1) US5590335A (fr)
EP (1) EP0637798B1 (fr)
JP (1) JPH07191865A (fr)
CA (1) CA2119988A1 (fr)
DE (1) DE69421346T2 (fr)
FR (1) FR2708766B1 (fr)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5805839A (en) * 1996-07-02 1998-09-08 Advanced Micro Devices, Inc. Efficient technique for implementing broadcasts on a system of hierarchical buses
US5796605A (en) * 1996-07-02 1998-08-18 Sun Microsystems, Inc. Extended symmetrical multiprocessor address mapping
US5754877A (en) * 1996-07-02 1998-05-19 Sun Microsystems, Inc. Extended symmetrical multiprocessor architecture
US6009269A (en) * 1997-03-10 1999-12-28 Digital Equipment Corporation Detecting concurrency errors in multi-threaded programs
US6560682B1 (en) 1997-10-03 2003-05-06 Intel Corporation System and method for terminating lock-step sequences in a multiprocessor system
US6622155B1 (en) 1998-11-24 2003-09-16 Sun Microsystems, Inc. Distributed monitor concurrency control
US6295611B1 (en) 1998-12-14 2001-09-25 Sun Microsystems, Inc.. Method and system for software recovery
US6681241B1 (en) 1999-08-12 2004-01-20 International Business Machines Corporation Resource contention monitoring employing time-ordered entries in a blocking queue and waiting queue
US6721775B1 (en) * 1999-08-12 2004-04-13 International Business Machines Corporation Resource contention analysis employing time-ordered entries in a blocking queue and waiting queue
US6898617B2 (en) * 1999-11-18 2005-05-24 International Business Machines Corporation Method, system and program products for managing thread pools of a computing environment to avoid deadlock situations by dynamically altering eligible thread pools
GB0118294D0 (en) * 2001-07-27 2001-09-19 Ibm Method and system for deadlock detection and avoidance
US7093262B2 (en) * 2002-07-30 2006-08-15 Intel Corporation Detecting deadlocks in multithreaded programs
US7278057B2 (en) * 2003-07-31 2007-10-02 International Business Machines Corporation Automated hang detection in Java thread dumps
US7467383B2 (en) * 2004-03-08 2008-12-16 Ab Initio Software Llc System for controlling task execution using a graphical representation of task dependency
US7496918B1 (en) * 2004-06-01 2009-02-24 Sun Microsystems, Inc. System and methods for deadlock detection
US7774783B2 (en) * 2004-12-23 2010-08-10 Microsoft Corporation Method and apparatus for detecting deadlocks
US7950001B2 (en) * 2006-09-08 2011-05-24 International Business Machines Corporation Method and apparatus for instrumentation in a multiprocessing environment
CN102053861B (zh) * 2009-10-30 2014-03-12 国际商业机器公司 并行程序中死锁检测的方法和系统
CN111090528B (zh) * 2019-12-25 2023-09-26 北京天融信网络安全技术有限公司 死锁确定方法、装置及电子设备

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4318182A (en) * 1974-04-19 1982-03-02 Honeywell Information Systems Inc. Deadlock detection and prevention mechanism for a computer system
US4494193A (en) * 1982-09-30 1985-01-15 At&T Bell Laboratories Deadlock detection and resolution scheme
JPS61233849A (ja) * 1985-04-08 1986-10-18 Hitachi Ltd デ−タベ−ス排他制御方法
JPH07120299B2 (ja) * 1986-01-10 1995-12-20 株式会社日立製作所 マルチプロセッサシステムの試験方法
AU2130888A (en) * 1987-07-21 1989-02-13 Stellar Computer Inc. Detecting multiple processor deadlock
US4881166A (en) * 1987-07-24 1989-11-14 Amoco Corporation Method for consistent multidatabase transaction processing
US5016167A (en) * 1987-12-21 1991-05-14 Amdahl Corporation Resource contention deadlock detection and prevention
JPH01207842A (ja) * 1988-02-16 1989-08-21 Fujitsu Ltd デッドロック検出方式
JPH0250231A (ja) * 1988-08-12 1990-02-20 Canon Inc デツドロツク検出装置
US5167022A (en) * 1988-10-25 1992-11-24 Hewlett-Packard Company Multiprocessor bus locking system with a winning processor broadcasting an ownership signal causing all processors to halt their requests
IT1227711B (it) * 1988-11-18 1991-05-06 Caluso Torino Sistema multiprocessore di elaborazione dati a risorse distribuite condivise e prevenzione di stallo.
US5133074A (en) * 1989-02-08 1992-07-21 Acer Incorporated Deadlock resolution with cache snooping
US5161227A (en) * 1989-11-13 1992-11-03 International Business Machines Corporation Multilevel locking system and method

Also Published As

Publication number Publication date
JPH07191865A (ja) 1995-07-28
US5590335A (en) 1996-12-31
EP0637798A1 (fr) 1995-02-08
DE69421346T2 (de) 2000-02-10
EP0637798B1 (fr) 1999-10-27
FR2708766B1 (fr) 1995-09-08
DE69421346D1 (de) 1999-12-02
FR2708766A1 (fr) 1995-02-10

Similar Documents

Publication Publication Date Title
CA2119988A1 (fr) Methode d'analyse d'interblocages dans un systeme d'exploitation
Luo et al. An empirical analysis of flaky tests
FR2950714A1 (fr) Systeme et procede de gestion de l'execution entrelacee de fils d'instructions
US8997110B2 (en) Resolving RCU-scheduler deadlocks
US9483391B2 (en) Efficient method data recording
FR2723221A1 (fr) Procede pour identifier les objets dans un systemed'exploitation reposant sur une interface utilisateur graphique sur un ordinateur
FR3013869A1 (fr) Procede de detection des debordements de pile et processeur pour la mise en oeuvre d'un tel procede
EP2880588B1 (fr) Systeme de detection de modification d'une pile d'appel de sous-programme
FR2942556A1 (fr) Unite d'allocation et de controle
EP1881404A1 (fr) Procédé de protection dynamique des données lors de l'exécution d'un code logiciel en langage intermédiaire dans un appareil numérique
EP2850520A1 (fr) Procede de gestion d'une execution de taches dans un systeme informatique
EP0629948B1 (fr) Procédé de gestion des accès concurrents à une mémoire par plusieurs utilisateurs
EP2545449B1 (fr) Procédé de configuration d'un système informatique, programme d'ordinateur et système informatique correspondants
EP0678811A1 (fr) Procédé de détection d'interblocages dans les systèmes multiprocesseurs à mémoire partagée
EP1276043A1 (fr) Méthode de parcours d'un arbre d'objets pour invoquer une méthode spécifique sur certains objets dudit arbre
FR2787901A1 (fr) Organisation memoire par zones physiques
FR3140969A1 (fr) Procédé de gestion d’un appel système et produit programme d’ordinateur associé
WO2020016511A1 (fr) Procédé d'accéleration de l'exécution d'un programme à chemin unique par exécution en parallèle de séquences conditionnellement concurrentes
FR2578990A1 (fr) Methode de traitement des calculs
FR3035984A1 (fr) Procede de detection d'un logiciel malveillant
FR2863074A1 (fr) Procede permettant l'interrupton sure d'applications dans un systeme informatique distribue comportant un moteur d'execution logiciel.
FR2939538A1 (fr) Procede de recherche de correspondances entres differentes sources de donnees.
Processus PROCESSUS
FR2787217A1 (fr) Generation d'interface permettant d'acceder a des sites centraux
FR2858074A1 (fr) Procede de gestion de l'execution d'au moins un programme sur plusieurs calculateurs

Legal Events

Date Code Title Description
EEER Examination request
FZDE Discontinued