FR 2784478 A1 20000414 FR 9812651 A 19981009 Architecture de verrou pour grand système. Le domaine de l'invention est celui des attributions de ressources partagées d'un système informatique à des processus, de façon à ce qu'un processus puisse momentanément bénéficier en exclusivité de l'attribution d'une ressource. Selon l'état de la technique, on connaît un moyen simple qui consiste à mettre un verrou sur une ressource. Un état libre du verrou permet à un processus de s'attribuer la ressource. Un état pris du verrou interdit au processus de s'attribuer la ressource. Lorsqu'un processus a besoin de s'attribuer une ressource, il accède à l'état du verrou de cette ressource au moyen d'une opération atomique. Une opération est considérée atomique si l'état du verrou ne peut tre modifié par aucun autre processus entre le début et la fin de l'opération. L'opération atomique consiste essentiellement à lire l'état du verrou et à le mettre à l'état pris. Si en début d'opération, I'état du verrou est libre, le processus considéré peut s'attribuer la ressource. La mise à l'état pris en fin d'opération garantit l'exclusivité de l'attribution au processus. En effet, un autre processus effectuant une opération atomique sur ce verrou lit alors en début d'opération un état pris qui lui interdit de s'attribuer la ressource. L'autre processus se met alors en attente de la disponibilité de la ressource en réitérant son opération atomique jusqu'à détecter un état libre du verrou. Le processus considéré remet le verrou à l'état libre lorsqu'il n'a plus besoin de la ressource. Ce moyen simple n'apporte pas entière satisfaction pour un nombre élevé de processus exécutés en parallèle sur un nombre élevé de processeurs. En effet, si plusieurs processus ont besoin d'une mme ressource, un seul processus peut s'attribuer la ressource en ayant détecté un état libre du verrou associé, au moyen de son opération atomique. Au moment où le processus détenteur du verrou remet celui-ci à l'état libre, un nombre considérable de processus risque de lancer des opérations atomiques ayant pour conséquence d'occuper intempestivement le bus système. Le verrou est généralement résidant en mémoire. Dans le cas d'une mémoire à accès non uniforme, le problème est amplifié. Une mémoire à accès non uniforme est une mémoire pour laquelle le temps d'accès varie en fonction de la localisation des processeurs par rapport à la localisation de la mémoire. On remarque que les opérations atomiques bénéficiant d'un temps d'accès plus court au verrou sont privilégiées par rapport à des opérations atomiques ne bénéficiant pas du temps d'accès le plus court. Ceci a pour effet de nuire à une répartition équitable d'attributions de la ressource aux processus. En particulier, les processus bénéficiant d'un temps d'accès court risquent de monopoliser la ressource. D'autre part, la localisation de t'état valide du verrou risque de migrer de façon incontrôlée dans la mémoire. Une solution connue consiste à attribuer à une ressource un jeton ne pouvant tre détenu à un instant donné que par un seul processus. Lorsque le processus détenteur du jeton n'a plus besoin de la ressource, il passe le jeton à l'un des processus en attente de cette ressource. Le problème est celui de savoir ce que fait le processus détenteur du jeton si aucun processus n'est en attente de la ressource. Ceci nécessite une gestion indépendante des jetons disponibles qui ne va pas dans le sens de la simplicité. L'objet de l'invention est une solution simple qui pallie les inconvénients précités de t'état de la technique. L'invention concerne une architecture de verrous pour système informatique comprenant plusieurs processeurs, telle que chaque processeur demandant une ressource du système, prenne ladite ressource si un premier état de verrou indique ladite ressource libre et se mette en attente active si un deuxième état de verrou indique ladite ressource prise. L'architecture est caractérisé en ce qu'à un verrou est associée une structure de données qui comprend : -un compteur qui indique un nombre de processeurs ayant demandé ladite ressource sans t'avoir prise puis libérée, le premier état de verrou correspondant à une valeur nulle, le deuxième état de verrou correspondant à une valeur non nulle ; -une première donnée propre au dit processeur, positionnée d'une première valeur sur une deuxième valeur par ledit processeur détectant le deuxième état de verrou ; -au moins une deuxième donnée propre à un autre processeur, positionnée d'une première valeur sur une deuxième valeur par ledit autre processeur détectant le deuxième état de verrou ; de façon à ce que la deuxième valeur de la première donnée mette ledit processeur en attente active jusqu'à ce que la première donnée soit positionnée sur la première valeur par ledit autre processeur libérant ladite ressource, de façon à ce que ledit processeur, ayant pris ladite ressource, positionne la deuxième donnée sur la première valeur s'il détecte que le deuxième état de verrou existe après libération de ladite ressource. Un avantage notable de l'invention sur t'état de la technique précédemment cité est qu'un processus cherchant à s'attribuer une ressource n'effectue qu'un seul accès au compteur à l'instant de demande de la ressource. Si la ressource est libre, le compteur a les mmes effets qu'un verrou classique. Si la ressource est prise, I'autorisation d'attribution de la ressource est à l'initiative du processus qui la détient. Ceci a pour effet de soulager les transactions sur le bus système et de pouvoir contrôler les attributions de ressources aux processus. Un exemple préféré de mise en oeuvre de l'invention est enseigné dans la description qui suit en référence aux figures où : -la figure 1 représente une architecture de verrou pour système multiprocesseur ; -la figure 2 décrit un procédé pour attribuer l'exclusivité d'une ressource à chaque processeur qui la demande ; -la figure 3 présente un environnement avec mémoire à accès non uniforme. En référence à la figure 1, un système informatique comprend plusieurs processeurs 10,11,12,13, de type unité centrale de traitement CPU et une mémoire adressable 64 accessible par les processeurs au moyen d'un bus système 65. Chacun des processeurs 10,11,12,13, dispose respectivement dans une antémémoire 60,61,62,63, d'une copie des données de la mémoire 64 qu'il traite. Un mécanisme antémémoire connu, évite au processeur d'émettre une requte d'accès sur le bus 65 s'il dispose d'une copie à jour dans son antémémoire de la donnée qu'il traite. Dans la mémoire 64, une table 1 est constituée de lignes dont chacune comprend un compteur associé à une ressource partageable du système. Chaque ligne de la table 1 est accessible par les processeurs 10,11,12,13 du système au moyen d'un mécanisme d'adressage indexé. Le mécanisme d'adressage indexé consiste de façon connue à attribuer à chaque ligne un numéro de ligne qui est ajouté à une adresse de début de table pour obtenir une adresse absolue de ligne. Ainsi, les numéros de lignes restent inchangés quelque soit la localisation physique de la table 1, dont seule est fonction I'adresse de début de table. Dans la mémoire 64, une table 4 est constituée de lignes dont chacune contient une donnée propre au processeur 10. Une table 5 est constituée de lignes dont chacune contient une donnée propre au processeur 11. Une table 6 est constituée de lignes dont chacune contient une donnée propre au processeur 12. Une table 7 est constituée de lignes dont chacune contient une donnée propre au processeur 13. Chaque ligne des tables 4 à 7 est accessible par les processeurs 10,11,12, 13 du système au moyen d'un mécanisme d'adressage indexé identique à celui de la table 1. Le compteur contenu dans une ligne de la table 1 et les données contenues dans chaque ligne des tables 4,5,6,7, de numéro de ligne identique à celui de la table 1, constituent une structure de données associée à un verrou dont un premier état indique qu'une ressource identifiée par ce numéro de ligne, est libre. Un deuxième état du verrou indique que cette ressource est prise. Une valeur nulle du compteur indique qu'aucun processeur 10,11,12,13, n'a demandé la ressource, ou que tout processeur ayant demande la ressource, I'a prise et l'a libérée. Cette valeur nulle correspond au premier état de verrou. Chaque demande de la ressource par un processeur 10,11,12,13, incrémente le compteur. Chaque libération de la ressource par un processeur 10,11,12,13 qui I'a prise, décrémente le compteur. Ainsi le compteur indique un nombre de processeurs ayant demandé la ressource, dont un processeur 10 qui I'a prise, ne I'a pas libérée. Considérant la donnée contenue dans la ligne de la table 4, de numéro identique à celui de la table 1, une première valeur indique que le processeur 10 n'a pas demandé la ressource répertoriée par ce numéro de ligne ou que, si le processeur 10 a demandé cette ressource, il peut la prendre. Une deuxième valeur indique que le processeur 10 a demandé la ressource répertoriée par ce numéro de ligne et qu'il a détecté le deuxième état de verrou qui lui interdit de prendre la ressource. Le processeur 10 se met alors en attente active qui consiste à lire sa donnée propre jusqu'à ce que celle-ci soit mise sur sa première valeur par un autre processeur 11, 12,13 qui libère la ressource. Considérant la donnée contenue dans la ligne de la table 5, de numéro identique à celui de la table 1, une première valeur indique que le processeur 11 n'a pas demandé la ressource répertoriée par ce numéro de ligne ou que, si le processeur 11 a demandé cette ressource, il peut la prendre. Une deuxième valeur indique que le processeur 11 a demandé la ressource répertoriée par ce numéro de ligne et qu'il a détecté le deuxième état de verrou qui lui interdit de prendre la ressource. Le processeur 11 se met alors en attente active qui consiste à lire sa donnée propre jusqu'à ce que celle-ci soit mise sur sa première valeur par un autre processeur 10,12,13 qui libère la ressource. Considérant la donnée contenue dans la ligne de la table 6, de numéro identique à celui de la table 1, une première valeur indique que le processeur 12 n'a pas demandé la ressource répertoriée par ce numéro de ligne ou que, si le processeur 12 a demandé cette ressource, il peut la prendre. Une deuxième valeur indique que le processeur 12 a demandé la ressource répertoriée par ce numéro de ligne et qu'il a détecté le deuxième état de verrou qui lui interdit de prendre la ressource. Le processeur 12 se met alors en attente active qui consiste à lire sa donnée propre jusqu'à ce que celle-ci soit mise sur sa première valeur par un autre processeur 11,10,13 qui libère la ressource. Considérant la donnée contenue dans la ligne de la table 7, de numéro identique à celui de la table 1, une première valeur indique que le processeur 13 n'a pas demandé la ressource répertoriée par ce numéro de ligne ou que, si le processeur 13 a demandé cette ressource, il peut la prendre. Une deuxième valeur indique que le processeur 13 a demandé la ressource répertoriée par ce numéro de ligne et qu'il a détecté le deuxième état de verrou qui lui interdit de prendre la ressource. Le processeur 13 se met alors en attente active qui consiste à lire sa donnée propre jusqu'à ce que celle-ci soit mise sur sa première valeur par un autre processeur 11,12,10 qui libère la ressource. On remarque que pour chaque numéro de ligne de la table 1, le contenu du compteur est une image du nombre de tables 4,5,6,7, comprenant, dans la ligne de numéro identique au numéro de ligne de la table 1, une donnée à sa deuxième valeur. Ici, le nombre de tables est inférieur d'une unité au contenu du compteur. L'ensemble des tables 1,4,5,6,7 constitue une structure de données associée aux verrous d'un ensemble de ressources répertoriées par les numéros de lignes de ces tables. La figure 2 décrit un procédé exécuté par chaque processeur pour demander une ressource dans le système informatique. Chaque processeur 10,11,12,13 qui demande l'exclusivité d'une ressource (res) exécute une opération atomique 2. A la ressource (res) correspond un numéro de ligne de la table 1 qui contient le compteur associé à cette ressource. L'opération atomique consiste à lire et à changer la valeur compt (res) du compteur sans qu'un autre processeur ne puisse accéder au compteur entre la lecture et le changement de valeur. La lecture du compteur s'effectue à une adresse absolue qui est la somme de l'adresse absolue de début de la table 1 et du numéro de ligne. Le changement de valeur du compteur est ici une incrámentation. L'opération atomique 2 est suivie d'un test 3 sur la valeur du compteur. Une valeur nulle du compteur avant incrémentation indique que la ressource (res) était disponible. Dans ce cas, après l'opération 2, la valeur compt (res) n'est pas strictement supérieure à un, le processeur prend la ressource en étape 14 jusqu'à recevoir un ordre de libérer la ressource. La réception de cet ordre contrôlée par un test 15, déclenche un test 16. Une valeur non nulle du compteur avant incrémentation indique que la ressource (res) n'était pas disponible. Dans ce cas, après l'opération 2, la valeur compt (res) est strictement supérieure à un. En étape 8, le processeur positionne à sa deuxième valeur, sa donnée propre contenue dans la ligne de la table 4,5,6,7 de numéro correspondant à la ressource. Le processeur se met en état d'attente active jusqu'à ce que sa donnée propre revienne à sa première valeur au moyen d'un test 9 qui boucle tant que sa donnée propre est à sa deuxième valeur. Comme nous le verrons par la suite, la donnée propre est repassé à sa première valeur par une étape 17 d'un flot d'instructions identique exécuté par un autre processeur qui détient la ressource. Lorsque la donnée propre est repassé à sa première valeur, un résultat négatif du test 9 déclenche l'étape 14 qui est poursuivie comme expliqué dans le paragraphe précédent. Le test 16 vérifie la valeur Compt (res) associée à la ressource (res). Une valeur Compt (res) supérieure à un, signifie qu'au moins un autre processeur est en attente de la ressource (res). La valeur de Compt (res) peut avoir été incrémentée au delà de un, avant ou après déclenchement de l'étape 14, par un autre processeur ayant exécuté l'opération 2. Si un autre processeur est en attente de la ressource (res), le résultat du test 16 déclenche t'étape 17 de passation de disponibilité de la ressource à un tel autre processeur et une opération atomique 18. Si aucun autre processeur n'est en attente de la ressource, le processeur qui libère la ressource, exécute directement l'opération atomique 18. L'étape 17 consiste essentiellement en un appel à une fonction de passation à un autre processeur selon une stratégie déterminée. A titre d'exemple, une première stratégie consiste à passer la disponibilité de ressource à un autre processeur par tour de rôle (round Robin dans la littérature en langue anglaise). Le processeur 11 qui libère la ressource consulte la table 6 du processeur 12 dont le numéro d'identification de processeur PID suit directement le numéro PID du processeur qui libère la ressource. Le processeur 11 lit la donnée contenue dans la ligne de la table 6 dont le numéro correspond à la ressource libérée. Si la donnée est à sa deuxième valeur, attente de la ressource, le processeur 11 positionne le contenu de la ligne sur la première valeur qui sera interprété par le processeur 12 comme une disponibilité de ressource pour déclencher l'étape 14 de son flot d'instructions. Si la donnée est à sa première valeur, non en attente de la ressource, le processeur 11 consulte la table 7 du processeur 13 dont le numéro d'identification de processeur PID suit directement le numéro PID du processeur qui n'est pas en attente de la ressource. Les actions précédemment expliquées sont répétée jusqu'à lecture d'une donnée à sa deuxième valeur, éventuellement jusqu'à consultation de la table 4 du processeur 10 dont le numéro d'identification de processeur PID précède directement le numéro PID du processeur qui libère la ressource. Les explications qui précèdent en référence au processeur 11 sont valables pour tout processeur 10,12,13. Cette première stratégie garantie qu'il n'y aura aucune famine, c'est à dire que chaque processeur disposera de la ressource puisque la consultation est circulaire. A titre d'exemple, une deuxième stratégie consiste à passer la disponibilité de ressource à un autre processeur qui est le premier a avoir demandé la ressource après le processeur qui la libère. Pour mettre en oeuvre la deuxième stratégie, la première valeur de donnée est une valeur nulle et la deuxième valeur de donnée propre est une date à laquelle le processeur exécute l'opération atomique 2. Cette date est obtenue par le processeur qui exécute l'opération atomique 2, dans un registre de date TBR incrémenté de façon connue au moyen d'une horloge de cadence. Le processeur qui libère la ressource positionne à zéro une donnée qui est à la plus faible valeur de date non nulle parmi les processeurs en attente. II est intéressant de noter que pour mettre en oeuvre le procédé, un processeur 10, 20,30,40 n'a besoin de connaître qu'un numéro de ligne correspondant à la ressource demandée, identique pour chacune des tables 1,4,5,6,7, et I'adresse de début de chacune des tables 1,4,5,6,7. Le processeur 10,11, 12,13 qui demande une ressource, fait au plus deux accès à la table 1 au moyen des opérations atomiques 2 et 18, pour cette ressource. Le processeur 10,11,12,13 qui se met en attente active sur une ressource au moyen du test 9 est le seul à consulter de façon intensive la table 4,5,6,7 qui lui est propre. Le processeur 10,11,12,13 qui libère une ressource, fait au plus un accès à chacune des tables 4, 5,6,7 en étape 17. L'architecture décrite minimise considérablement une contention sur le bus à la libération d'une ressource qui ne fait intervenir que deux processeurs au plus, celui qui libère la ressource et éventuellement celui à qui la ressource est attribuée. II n'est ainsi pas nécessaire de gérer une liste d'attente. Le processeur 10 qui effectue l'opération atomique 2 fait un premier accès sur le bus 65 pour disposer d'une copie du compteur dans son antémémoire 60 et un deuxième accès sur le bus 65 pour le test 16 si sa copie du compteur en antémémoire 60 n'est pas à jour. Dans le meilleur des cas où aucun autre processeur ne demande la ressource, un seul accès bus suffit. Si le verrou est sur son deuxième état, le processeur 10 fait un troisième accès sur le bus 65 en étape 8 pour disposer d'une copie de sa donnée propre dans son antémémoire 60 qu'il positionne à sa deuxième valeur. L'attente active du processeur 10 ne nécessite pas de nouvel accès au bus 65 tant que sa copie en antémémoire 60 reste sur sa deuxième valeur. Au moment du positionnement de sa donnée propre à sa première valeur, sa copie en antemémoire est automatiquement remise à jour par le protocole de cohérence antemémoire. En étape 17, le processeur 10 fait un nombre fini de quatrièmes accès sur le bus 65, imité par le nombre de processeurs du système, jusqu'à déterminer un processeur distinct pour positionner la donnée propre du processeur distinct à sa première valeur. Le nombre d'accès au bus 65 pour demander et libérer une ressource est donc ramené à un nombre fini. Ceci présente un avantage en comparaison d'une architecture de verrou classique où une attente active d'un processeur jusqu'à prise d'une ressource pouvait engendrer un nombre indéterminé d'accès bus pour consulter les états du verrou. Les explications qui précèdent pour le processeur 10 avec son antémémoire 60, restent valables pour chacun des processeurs 11, 12,13 avec respectivement son antémémoire 61,62,63. L'architecture et le procédé qui viennent d'tre décrit sont intéressants dans un environnement de type SMP, UMA ou NUMA ou de type distribué. L'environnement de type SMP est un environnement dans lequel les processeurs ont un comportement identique vis à vis des ressources, vu du système d'exploitation. L'accès à la mémoire est uniforme (UMA pour uniform memory access dans la littérature anglaise) lorsque le temps d'accès à la mémoire est indépendant de la localisation physique des processeurs. L'accès à la mémoire est non uniforme (NUMA pour non uniform memory access dans la littérature anglaise) lorsque le temps d'accès à la mémoire dépend de la localisation physique des processeurs. Dans 1'environnement SMP, UMA ou NUMA, le meilleur parti de I'architecture décrite est obtenu en attribuant à chaque processeur une table de verrous du type des tables 4,5,6,7. II est possible aussi d'attribuer une table à un groupe de processeurs donné. On retrouve alors un comportement des processeurs au sein du groupe identique à celui d'une architecture de verrous classique. Cependant, le groupe de processeur bénéficie de l'architecture décrite vis à vis des autres processeurs du système. Par exemple en référence à la figure 3, un grand système comprenant des modules 20,21,22,23 reliés par des moyens d'échange d'information 29,38, 39,48,49, constitue un environnement NUMA mis en oeuvre par un système d'exploitation OS commun. Le module 20 comprend un ou plusieurs processeurs 30,31,32,33 et une unité mémoire 25 accédée au moyen d'un bus 34. Le module 21 comprend un ou plusieurs processeurs 40,41,42,43 et une unité mémoire 26 accédée au moyen d'un bus 35. Le module 22 comprend un ou plusieurs processeurs 44,45,46,47 et une unité mémoire 27 accédée au moyen d'un bus 36. Le module 23 comprend un ou plusieurs processeurs 50,51,52,53 et une unité mémoire 28 accédée au moyen d'un bus 37. Une table 54 du type de la table 4 est attribuée au groupe de processeurs 30 à 33. Une table 55 du type de la table 5 est attribuée au groupe de processeurs 40 à 43. Une table 56 du type de la table 6 est attribuée au groupe de processeurs 44 à 47. Une table 57 du type de la table 7 est attribuée au groupe de processeurs 50 à 53. Une table 58 du type de la table 1, est partagée par 1'ensemble des groupes de processeurs. La table 58 réside par exemple dans l'unité mémoire 25 du module 20. La résidence de la table 54 dans l'unité mémoire 25, évite une occupation intempestive de la connexion 29 pendant I'attente active d'un processeur 30,31,32,33 sur une ressource. La résidence de la table 55,56, 57, respectivement dans l'unité mémoire 26,27,28, procure un effet identique. Les valeurs de données dans la table 54 peuvent tre ou ne pas tre personnalisés par processeur 30,31,32,33. Différentes stratégies de passation de ressource en étape 17 sont possibles pour conserver une prise de ressource sur un mme module jusqu'à libération par tous les processeurs du module qui l'ont demandée, ou au contraire pour permettre une passation à un processeur d'un autre module après qu'un processeur d'un premier module aie obtenu la ressource. L'homme du métier choisit selon des critères d'optimisation qu'il retient. La table 58 peut aussi tre répartie dans les unités mémoire 25 à 27 en fonction de la localisation des ressources. Un environnement de type distribué est un environnement dans lequel plusieurs machines s'échangent des accessibilités à leurs ressources au moyens de messages de communication. Les machines sont mono ou multiprocesseurs. En attribuant une ou plusieurs tables de données du type de la table 4 à chaque machine pour les ressources de l'ensemble des machines et une table de compteurs du type de la table 1 à l'ensemble des machines, répartie ou localisée, on évite des échanges intempestifs entre machines sur attente active d'une ressource. Revendications : 1. Architecture de verrous pour système informatique comprenant plusieurs processeurs (10,11,12,13) telle que chaque processeur (10) demandant une ressource du système, prenne ladite ressource si un premier état de verrou indique ladite ressource libre et se mette en attente active si un deuxième état de verrou indique ladite ressource prise, caractérisé en ce qu'à un verrou est associée une structure de données qui comprend : -un compteur qui indique un nombre de processeurs (10,11,12,13) ayant demandé ladite ressource sans t'avoir prise puis libérée, le premier état de verrou correspondant à une valeur nulle, le deuxième état de verrou correspondant à une valeur non nulle ; -une première donnée propre au dit processeur (10), positionnée d'une première valeur sur une deuxième valeur par ledit processeur (10) détectant le deuxième état de verrou ; -au moins une deuxième donnée propre à un autre processeur (11,12,13), positionnée d'une première valeur sur une deuxième valeur par ledit autre processeur (11,12,13) détectant le deuxième état de verrou ; de façon à ce que la deuxième valeur de la première donnée mette ledit processeur (10) en attente active jusqu'à ce que la première donnée soit positionnée sur la première valeur par ledit autre processeur (11,12,13) libérant ladite ressource, de façon à ce que ledit processeur (10), ayant pris ladite ressource, positionne la deuxième donnée sur la première valeur s'il détecte que le deuxième état de verrou existe après libération de ladite ressource. 2. Architecture selon la revendication 1, caractérisée en ce qu'elle comprend : -une première table (4) pour contenir ladite première donnée dans une ligne dont un numéro de ligne correspond à ladite ressource, -au moins une deuxième table (5,6,7) pour contenir ladite deuxième donnée dans une ligne dont un numéro de ligne est identique à celui de la première table (4), correspondant à ladite ressource, -une table de compteurs (1) pour contenir ledit compteur dans une ligne dont un numéro de ligne est identique au numéro de ligne de la table (4,5,6,7) correspondant à la dite ressource. 3. Architecture selon la revendication 2, caractérisée en ce qu'à chaque ressource considérée d'un ensemble de ressource du système informatique, correspond un verrou auquel est associé un numéro de ligne pour contenir au dit autre numéro de ligne : -dans la table de compteurs (1), un compteur du nombre de processeurs (10, 11, 12,13) ayant demandé la ressource considérée, dont une valeur prédéterminée indique un premier état de verrou ; -dans chaque table (4,5,6,7), propre à l'un respectivement des processeurs (10,11,12,13), une donnée positionnable sur ladite deuxième valeur par le processeur respectif qui ne détecte pas la valeur prédéterminée lorsqu'il demande la ressource considérée et positionnable sur ladite première valeur par tout processeur qui le décide en libérant la ressource considérée. 4. Procédé exécuté par chaque processeur considéré (10) parmi plusieurs processeurs (10,11,12,13), pour demander une ressource dans un système informatique, comprenant une opération atomique (2) de lecture et de modification d'un verrou qui contrôle une prise de ladite ressource, caractérisé en ce que : -l'opération atomique (2) consiste à incrémenter un compteur dont une valeur prédéterminée définit un premier état du verrou ; -l'opération atomique (2) est suivie d'un premier test (3) pour déclencher une première étape (8) si le compteur n'a pas la valeur prédéterminée au départ de l'opération atomique (2) et pour déclencher une deuxième étape (14) de prise de ressource dans le cas contraire ; -la première étape (8) positionnant une donnée propre au processeur (10) considéré, sur une deuxième valeur telle que le processeur (10) considéré boucle en lecture de sa donnée propre jusqu'à détection d'une première valeur de sa donnée propre qui déclenche l'étape de prise de ressource (14) ; -la deuxième étape (14) étant suivie d'un deuxième test (16) après libération de la ressource, pour déclencher une troisième étape (17) si une décrémentation du compteur ne donne pas la valeur prédéterminée et pour déclencher une quatrième étape (18) dans le cas contraire ; -la troisième étape (17) déterminant un processeur (11,12,13) distinct du processeur (10) considéré, dont une donnée propre est positionnée sur la deuxième valeur, positionnant la donnée propre du processeur (11,12,13) déterminé sur la première valeur, et déclenchant la quatrième étape (18) ; -la quatrième étape (18) comprenant une opération atomique pour décrémenter le compteur. 5. Procédé selon la revendication 4, caractérisé en ce qu'à chaque verrou considéré qui contrôle une prise de ressource distincte est associé un numéro de ligne au sein d'une structure de données répartie en mémoire adressable sous forme d'une table de compteurs (1) et de tables (4,5,6,7) propres chacune à un processeur (10,11,12,13) de sorte que : -pour l'opération atomique (2), le processeur considéré (10) se branche à une première adresse fonction d'une adresse de début de la table (1) et du numéro de ligne associé au verrou considéré ; -pour la première étape (8), le processeur considéré (10) se branche à une deuxième adresse fonction d'une adresse de début da la table (4) qui lui est propre et du numéro de ligne associé au verrou considéré ; -pour le deuxieme test (16), le processeur considéré (10) se branche sur la première adresse ; -pour déterminer en troisième étape (17) si la donnée propre d'un processeur (11,12,13) est positionnée sur la deuxième valeur, le processeur considéré (10) se branche à une troisième adresse fonction d'une adresse de début de la table (5,6,7) propre au dit processeur (11,12,13) et du numéro de ligne associé au verrou considéré. 6. Procédé selon la revendication 4 ou 5, caractérisé en ce que, pour déterminer en troisième étape (17), un processeur (11,12,13) distinct du processeur (10), le processeur (10) : -calcule une adresse somme du numéro de ligne associé au verrou considéré, et de I'adresse de début de la table (5) propre au processeur (11) suivant ; -si la donnée lue à l'adresse calculée, est positionnée sur la deuxième valeur, le processeur (11) est le processeur déterminé ; -sinon, le processeur (10) calcule une adresse somme du numéro de ligne associé au verrou considéré, et de I'adresse de début de la table (6) propre au processeur (12) suivant, et ainsi de suite avec I'adresse de début de la table (7) propre au processeur (13) suivant jusqu'à lire à I'adresse calculée, une donnée positionnée sur la deuxième valeur qui détermine le processeur distinct auquel cette donnée est propre. 7. Procédé selon la revendication 4 ou 5, caractérisé en ce que, pour déterminer en troisième étape (17), un processeur (11,12,13) distinct du processeur (10), le processeur (10) : -calcule une adresse somme du numéro de ligne associé au verrou considéré, et de I'adresse de début de la table (5,7,8) propre respectivement à chaque processeur (11,12,13) distinct ; -détermine le processeur distinct comme étant celui dont la donnée propre lu à I'adresse calculée est positionnée sur une valeur non nulle la plus faible parmi celles des données propres aux processeurs distincts, lues à chaque adresse calculée.