Brevet FR3025908A1 — publié le 20160318

Mécanisme et procédé pour accéder à des données dans une mémoire partagée Un équipement remplaçable en escale (LRU) est un élément modulaire d'un ensemble plus grand tel qu'un véhicule ou un aéronef et est conçu conformément à des spécifications pour assurer qu'il puisse être échangé et/ou remplacé en cas de panne. Par exemple, les LRU d'un aéronef peuvent comprendre des systèmes, capteurs, radios et autres équipements auxiliaires entièrement autonomes pour gérer et/ou exécuter des fonctions de l'aéronef. Dans l'environnement d'un aéronef, les LRU peuvent être conçus pour fonctionner suivant des critères particuliers de fonctionnement, d'interopérabilité et/ou de facteur d'échelle tels que ceux définis par les normes de la série ARINC. Une pluralité de LRU peuvent être connectés par un réseau de données afin d'accéder à des données ou d'échanger des données dans une mémoire commune, ou partagée, d'un ordinateur de commande de vol ou autre système informatique. L'ordinateur de commande de vol ou un autre système informatique peut en outre gérer et/ou exécuter des fonctions de l'aéronef. Dans une première forme de réalisation, un mécanisme pour permettre à au moins un client d'accéder à des données en mémoire partagée, le mécanisme comporte une attribution de données présentes dans la mémoire partagée à au moins un sujet, l'attribution étant accessible par une adresse constante prédéterminée, le/les sujet(s) ayant un certain nombre de mémoires tampons, le nombre de mémoires tampons étant égal à un nombre de clients accédant au(x) sujet(s), plus deux pour chaque serveur accédant au(x) sujet(s), chaque client et chaque serveur ayant un 3025908 2 pointeur d'accès actif et un directeur de pointeurs d'accès actif pour diriger des pointeurs d'accès actif vers des mémoires tampons d'après une demande de transaction émanant d'un client ou d'un serveur. Une mémoire tampon contient toujours les données les plus 5 récentes de la mémoire partagée, et au moins une mémoire tampon est toujours disponible pour accéder à des données dans la mémoire partagée. De plus, les pointeurs d'accès actif sont attribués parmi les mémoires tampons par le directeur de pointeurs d'accès actif uniquement au moyen de transactions en langage d'assemblage 10 machine sans copier les données au niveau d'un système d' exploitation. Dans une autre forme de réalisation, un procédé pour permettre à au moins un client d'accéder à des données en mémoire partagée, le procédé comporte l'attribution de données en mémoire 15 partagée à au moins un sujet, l'attribution d'une seule adresse prédéterminée pour accéder à chaque sujet au moins unique, l'attribution d'un certain nombre de mémoires tampons pour chaque sujet au moins unique, égal au nombre de clients accédant au(x) sujet(s), plus deux pour chaque serveur accédant au(x) sujet(s), et 20 répondant à des demandes de transactions émanant d'au moins un des clients ou serveurs en attribuant un pointeur d'accès actif pour chaque client ou serveur respectif à une mémoire tampon. L'accès aux données se fait par l'intermédiaire de la mémoire tampon, sans copier les données au niveau d'un système d'exploitation. 25 L'invention sera mieux comprise à l'étude détaillée de quelques modes de réalisation pris à titre d'exemples non limitatifs et illustrés par les dessins annexés sur lesquels : -la Figure 1 est une vue schématique d'un réseau de communication de données d'un aéronef, selon une forme de réalisation de l'invention ; 3025908 3 -la Figure 2 est une vue schématique de clients accédant aux mémoires tampons d'un sujet, selon une forme de réalisation de l' invention ; -la Figure 3 est une vue schématique d'un mécanisme 5 permettant à des clients d'accéder aux données les plus récentes dans une mémoire tampon, selon une forme de réalisation de l'invention ; et -la Figure 4 est une vue schématique d'un mécanisme permettant à des clients et à un serveur d'effectuer une transaction 10 de lecture/écriture sur des données en mémoire tampon, selon une forme de réalisation de l'invention. Les formes de réalisation de la présente invention décrites sont illustrées dans le contexte d'un aéronef ayant une pluralité de capteurs, systèmes, composants logiciels et/ou composants matériels 15 de l'aéronef fonctionnant tous sur un seul système accédant directement à une mémoire commune ou partagée. Cependant, des formes de réalisation de l'invention peuvent être mises en oeuvre dans tout contexte utilisant des clients et des serveurs accédant à une mémoire partagée commune ou unique. Par ailleurs, bien que 20 l'on évoque ci-après des "clients" et des "serveurs", les formes de réalisation particulières décrites sont des exemples nullement limitatifs des clients et des serveurs. De plus, bien que soit décrit un "client", tout composant ou "consommateur" de données de la mémoire partagée peut être inclus. De même, bien qu'un "serveur" 25 soit décrit, tout composant d'un "producteur" de données pour la mémoire partagée peut être inclus. Des exemples supplémentaires de clients et de serveurs peuvent comprendre des unités discrètes distantes ou localisées, des applications, des processus informatiques, des threads de traitement, etc., ou toute combinaison 30 de ceux-ci, qui accèdent à une mémoire partagée. Par exemple, une 3025908 4 pluralité de "clients" peuvent résider tous dans un même ordinateur ou une même unité de traitement, accédant à une mémoire vive commune (RAM). La Figure 1 représente une illustration schématique d'un 5 système de communication de données 24 selon une forme de réalisation de l'invention. Un ou plusieurs threads ou processus informatiques 26, comprenant chacun un ou plusieurs clients 18, accèdent par une communication à une mémoire partagée 22, représentée sous la forme d'une RAM partagée. En outre, un ou 10 plusieurs threads ou processus informatiques 28 peuvent comprendre chacun un ou plusieurs serveurs 20, ayant également accès à la mémoire partagée 22. En ce sens, chaque processus 26, 28, client 18 et serveur 20 peut avoir accès à la mémoire partagée 22. De plus, bien que certains processus 26, 28 soient illustrés 15 comme ne présentant qu'un client respectif 18 ou que des serveurs respectifs 20, une forme de réalisation de l'invention peut comprendre des processus 26, 28 qui comprennent une combinaison de clients 18 et/ou de serveurs 20 dans un seul processus 26, 28. Bien qu'un serveur 20 soit décrit, des formes de réalisation de 20 l'invention peuvent comprendre n'importe quel système informatique, un système informatique exécutant un système d'exploitation ARINC 653, un système de gestion de vol, un ordinateur de bord, etc. La mémoire 23 peut comprendre une mémoire vive (RAM), 25 une mémoire flash ou un ou plusieurs types différents de mémoire électronique portative, etc., ou n'importe quelle combinaison appropriée de ces types de mémoire. Les clients 18 et/ou les serveurs 20 peuvent coopérer avec la mémoire 22 de façon que les clients 18 et/ou les serveurs 20, ou n'importe quels programmes 30 informatiques ou processus dans ceux-ci, puissent accéder à au 3025908 5 moins une partie de la mémoire 22 (par exemple la "mémoire partagée" 22). Au sens de la présente description, des "programmes" et/ou des "processus" peuvent comprendre tout ou partie d'un programme 5 informatique ayant un jeu d'instructions exécutables pour commander la gestion et/ou l'exploitation d'au moins un parmi le client respectif 18, le serveur respectif 20 ou des fonctions respectives d'un aéronef. Le programme et/ou les processus peuvent comprendre un programme informatique qui peut comprendre des 10 supports exploitables par ordinateur pour exécuter ou faire exécuter par ordinateur des instructions ou des structures de données stockées sur ceux-ci. Ces supports exploitables par ordinateur peuvent être n'importe quels supports existants, accessibles à un ordinateur polyvalent ou spécifique ou à une autre machine munie 15 d'un processeur. Globalement, un tel programme informatique peut comprendre des routines, des programmes, des objets, des composants, des structures de données, des algorithmes, etc., qui ont pour effet technique d'exécuter des tâches particulières ou de mettre en oeuvre des types de données abstraits particuliers. Les 20 instructions exécutables par ordinateur, les structures de données correspondantes et les programmes constituent des exemples de code de programme pour exécuter l'échange d'information tel qu'il est présenté ici. Les instructions exécutables par ordinateur peuvent comprendre, par exemple, des instructions et des données, qui 25 amènent un ordinateur polyvalent, un ordinateur spécifique, un automate ou une machine de traitement spécifique à exécuter une certaine fonction ou un certain groupe de fonctions. Le réseau de communication de données 24 représenté sur la Figure 1 n'est qu'une représentation schématique d'une forme de 30 réalisation de l'invention et sert à illustrer le fait qu'une pluralité de 3025908 6 clients 18 et de serveurs 20 peuvent se trouver dans le même système informatique de l'aéronef. L'emplacement exact des clients 18 et des serveurs 20 ne se rapporte pas aux formes de réalisation de l'invention. En outre, un nombre plus grand ou plus petit de 5 clients 18 et/ou de serveurs 20 peuvent être inclus dans des formes de réalisation de l'invention. Le réseau de communication 24 peut comprendre un bus système ou d'autres composants de communication d'un système informatique pour faciliter l'interconnexion pour des 10 communications entre les clients 18 et les serveurs 20. Par ailleurs, la configuration et le fonctionnement du réseau de communication 24 peuvent être définis par un ensemble commun de normes ou de réglementations applicables à des contextes aéronautiques particuliers. 15 La mémoire 22 est représentée comme comprenant en outre une attribution de données 30 à au moins un groupement, ou "sujet" 32, placé à un emplacement adressable constant prédéterminé de la mémoire, ou "adresse constante" 34 de la mémoire 22. Au sens de la présente description, un "sujet" peut comprendre un sous-ensemble 20 prédéterminé de mémoire 22 attribué en vue d'une utilisation particulière de stockage de données pour l'aéronef. Par exemple, un sujet unique 32 peut comprendre une attribution unique de données, notamment la vitesse propre de l'aéronef, ou peut comprendre une pluralité d'éléments de données avec ou sans relation entre elles, 25 notamment des points de passage ou le plan de vol en cours. Les sujets 32 peuvent être organisés d'une façon séquentielle en partant de l'adresse constante 34, notamment sous la forme d'une liste à lien unique ; cependant, des structures supplémentaires d'organisation des sujets 32 peuvent être conçues pour comprendre des matrices, 3025908 7 des attributions variables pour chaque sujet 32, etc., toutes ayant pour point de départ l'emplacement de l'adresse constante 34. Chacun des processus 26, 28, et/ou respectivement des clients 18 et des serveurs 20 est préalablement configuré pour 5 comprendre l'adresse constante prédéterminée 34 de la mémoire partagée 22. En ce sens, chaque processus 26, 28, client 18 et/ou serveur 20 est préconfiguré pour identifier l'emplacement de l'adresse constante 34 et, par conséquent, du ou des sujets 32 dont les données doivent être accessibles. Au sens de la présente 10 description, chaque client 18 et/ou chaque processus client 26 peut être considéré comme un "client" pour accéder à des données dans la mémoire partagée 22, et chaque serveur 20 et/ou chaque processus serveur 28 peut être considéré comme un "serveur" pour accéder à des données dans la mémoire partagée 22. 15 Dans une forme de réalisation de l'invention, le nombre de sujets 32 dans la mémoire partagée 22 est prédéfini pendant l'initialisation de la mémoire 22, d'après un nombre connu de sujets 32 accessibles aux clients et/ou serveurs. Dans une autre forme de réalisation de l'invention, le nombre de sujets 32 est défini au 20 moment de ou pendant l'exécution par le nombre collectif de sujets 32 accessibles aux clients et/ou serveurs. En ce sens, le nombre de sujets 32 peut être dynamique, augmentant et diminuant en fonction des besoins, ou seulement additionnel lorsqu'il faut accéder à des sujets supplémentaires 32. 25 Considérant maintenant la Figure 2, chaque sujet 32 comprend en outre une pluralité de mémoires tampons 36 conçues pour stocker une quantité prédéterminée de données nécessaires pour un élément de données particulier. Par exemple, un sujet 32 pour accéder à la vitesse propre de l'aéronef peut avoir une pluralité 30 de mémoires tampons 36, conçues chacune pour stocker huit octets. 3025908 8 Dans un autre exemple, un sujet 32 pour accéder au plan de vol en cours peut avoir une pluralité de mémoires tampons 36, conçues chacune pour stocker un millier d'octets. A titre d'illustration, la pluralité de mémoires tampons 36 est représentée comme ayant 5 différents états de classification, notamment occupées 44, inoccupées 46 et contenant les données les plus récentes 48. Chaque état sera expliqué plus en détail ultérieurement. Chaque sujet 32 est en outre représenté comme comprenant un organe de commande et/ou de direction tel qu'un directeur 38 de 10 pointeurs d'accès actif. Le directeur 38 de pointeurs d'accès actif dirige l'accès à la pluralité de mémoires tampons 36 d'après une demande de transaction de données, laquelle sera expliquée plus en détail ultérieurement. D'autres formes de réalisation possibles de l'invention peuvent comprendre un directeur séparé ou distant 38 de 15 pointeurs d'accès actif, par exemple un automate ou un processeur, situé à distance du sujet 32. Comme représenté schématiquement, un ou plusieurs clients 40, comprenant chacun un pointeur 42 d'accès actif, est/sont apte(s) à accéder à une mémoire tampon spécifique 36 identifiée par le 20 pointeur respectif 42 d'accès actif. En outre, un ou plusieurs serveurs 50, comprenant chacun un pointeur 52 d'accès actif, est/sont apte(s) à accéder à une mémoire tampon spécifique 36 identifiée par le pointeur respectif 52 d'accès actif. Comme illustré, un premier client 54 et un deuxième client 56 sont respectivement 25 associés à une première mémoire tampon 58 et une deuxième mémoire tampon 60. De la sorte, les première et deuxième mémoires tampons 58, 60 ont été identifiées comme mémoires tampons occupées 44. Un troisième client 62 est représenté, non associé au sujet 32, de même que le serveur 50. Bien que chacun des pointeurs 30 42, 52 d'accès actif soit représenté comme faisant partie 3025908 9 respectivement des clients 40 ou des serveurs 50, des formes de réalisation de l'invention peuvent comporter des pointeurs 42, 52 d'accès actif faisant partie du sujet 32 et/ou des mémoires tampons 36. 5 Dans une forme de réalisation de l'invention, le nombre de mémoires tampons 36 dans chaque sujet 32 et la taille de chaque mémoire tampon 36 sont prédéfinis pendant l'initialisation de la mémoire partagée 22, d'après un nombre connu de clients 40 et/ou de serveurs 50 aptes à accéder au sujet 32. Dans une autre forme de 10 réalisation de l'invention, le nombre de mémoires tampons 36 dans chaque sujet 32 est défini au moment de l'exécution ou pendant l'exécution par le nombre collectif de clients 40 et de serveurs 50 accédant alors au sujet 32. En ce sens, le nombre de mémoires tampons 36 peut être dynamique, augmentant ou diminuant selon les 15 besoins, ou seulement additionnel lorsque des clients supplémentaires 40 et/ou des serveurs supplémentaires 50 accèdent au sujet 32. De plus, des formes de réalisation de l'invention peuvent comporter une définition des mémoires tampons 36 d'une manière similaire à la définition des sujets 32, par exemple en 20 prédéfinissant les sujets 32 ainsi que les mémoires tampons 36 au moment de l'initialisation de la mémoire partagée 22, ou de manières différentes, par exemple en prédéfinissant les sujets 32 tandis que les mémoires tampons sont définies d'une manière dynamique. Quelle que soit la forme de réalisation décrite, le 25 nombre total de mémoires tampons 36 peut être égal au nombre de clients 40 accédant au sujet 32, plus deux mémoires tampons 36 pour chaque serveur 50 accédant au sujet 32. Considérant maintenant la Figure 3, il y est représenté un mécanisme pour accéder à des données dans le sujet 32 et/ou la 30 mémoire tampon 36 de la mémoire partagée 22. Un troisième client 3025908 10 62 communique avec le sujet 32 et communique avec le directeur 38 de pointeurs d'accès actif du sujet (représenté sous la forme de la communication en pointillé 64) pour demander une transaction avec les données. Le directeur 38 de pointeurs d'accès actif répond au 5 troisième client 62 en identifiant une troisième mémoire tampon 66 qui contient les données les plus récentes 48 du sujet 32. Le troisième client 62, dirigé alors vers la troisième mémoire tampon 66, demande à son pointeur 42 d'accès actif de se diriger vers la troisième mémoire tampon 66 (illustrée sous la forme d'une 10 deuxième communication 68). A ce stade, le troisième client 62 accède aux données stockées dans la troisième mémoire tampon 66 (les données les plus récentes 48) et effectue la transaction voulue sur les données. Le directeur 38 de pointeurs d'accès actif peut diriger les 15 pointeurs d'accès actif 42, 52 du ou des clients 40 ou du serveur 50 vers une mémoire tampon particulière 36 en fonction de la transaction spécifique demandée. Par exemple, la transaction peut comprendre au moins une opération parmi une extraction des données stockées dans la mémoire tampon 36 (c'est-à-dire une 20 "lecture seule"), une extraction des données stockées dans la mémoire tampon 36 et une inscription de nouvelles données dans la mémoire tampon 36 d'après un traitement ou un calcul des données extraites, une inscription de nouvelles données dans la mémoire tampon 36 d'après des données fournies par le client (c'est-à-dire 25 une "lecture/écriture"), et/ou une inscription de nouvelles données du serveur 52 dans la mémoire tampon 36 avec une instruction de transfert des nouvelles données, par exemple, dans une autre partie de la mémoire partagée 22, de façon qu'elles soient visibles et/ou accessibles au(x) client(s) 40 (c'est-à-dire un "stockage"). Dans un 3025908 11 exemple, une transaction de "stockage" peut identifier les données transférées comme étant les données les plus récentes 48. Dans un exemple du mécanisme pour accéder à des données dans le sujet 32 et/ou la mémoire tampon 36 de la mémoire partagée 5 22, un ou plusieurs clients 40 en communication avec le sujet 32 pour demander une transaction de lecture seule peut/peuvent chacun se voir attribuer la même mémoire tampon, telle que la troisième mémoire tampon 66, qui contient les données les plus récentes 48 du sujet 32. Puisque, dans ce cas, aucun des clients ne modifiera les 10 données, il n'y aura pas de collisions ni de problèmes d'intégrité des données auxquelles accèderont les clients. De la sorte, les clients 40 en lecture seule peuvent effectuer leurs transactions d'une manière asynchrone les uns par rapport aux autres, sans interférences. Comme expliqué, le rapport des clients 40 en lecture seule auquel 15 est attribuée une mémoire tampon aux mémoires tampons 36 n'est pas forcément de un pour un, il peut être d'un grand nombre pour un. Une fois que les clients 40 en lecture seule ont terminé leurs transactions respectives, ils peuvent couper la communication avec leur mémoire tampon respective 36 jusqu'à ce qu'une autre 20 transaction soit demandée. Au moment de la deuxième demande de transaction, le mécanisme se répète de façon que le client 40 puisse accéder aux données les plus récentes 48, identifiées par le directeur 38 de pointeurs d'accès actif, ces données pouvant être les mêmes données dans la même mémoire tampon 36, ou de nouvelles 25 données dans la même mémoire tampon 36 ou une mémoire tampon différente 36. L'exemple de mécanisme décrit ci-dessus peut être illustré sur la Figure 4, construite sur le mécanisme représenté sur la Figure 3. Dans le présent exemple, le serveur 50 avait exécuté une 30 transaction de lecture/écriture dans la première mémoire tampon 58, 3025908 12 les données inscrites étant qualifiées de "nouvelles" données les plus récentes 48. Comme représenté, lorsque le serveur 50 termine la transaction de lecture/écriture, le serveur 50 couple la communication avec la première mémoire tampon 58 et communique 5 avec le directeur 38 de pointeurs d'accès actif le fait que la première mémoire tampon 58 contient de "nouvelles" données les plus récentes 48 (la communication illustrée sous la forme de la communication en pointillé 72). Le directeur 38 de pointeurs d'accès actif identifie à son tour la première mémoire tampon 58 10 comme contenant les données les plus récentes 48 et dirigera alors les clients 40 ouvrant de nouvelles communications vers les données les plus récentes 48 de la première mémoire tampon 58. Comme également représenté, si le serveur 50 demande une nouvelle transaction de lecture/écriture, le directeur 38 de pointeurs d'accès 15 actif copie éventuellement les données les plus récentes 48 de la première mémoire tampon dans la quatrième mémoire tampon 70 et dirige le pointeur 52 d'accès actif du serveur 50 vers la quatrième mémoire tampon 70 pour effectuer la nouvelle transaction de lecture/écriture. 20 Lorsqu'un serveur quelconque 50 effectuant une transaction concernant une mémoire tampon 36 a terminé sa transaction, quel que soit le type de transaction, le serveur 50 peut éventuellement fournir au directeur 38 de pointeurs d'accès actif une instruction pour que la transaction soit terminée. Le directeur 38 de pointeurs 25 d'accès actif peut, en ce sens, conserver une trace pour savoir quelles mémoires tampons 36 sont alors utilisées et font alors l'objet d'un accès. Si le serveur 50 demande une transaction supplémentaire, le serveur communique avec le directeur 38 de pointeurs d'accès actif, lequel attribue une mémoire tampon 30 inoccupée 46 avec laquelle sera achevée la nouvelle transaction. 3025908 13 Bien que le présent exemple illustre des opérations du serveur 50, les clients 40 peuvent être aptes à effectuer des transactions de lecture similaires. En outre, des formes de réalisation de l'invention peuvent comporter des clients 40 et/ou des 5 serveurs 50 susceptibles de réaliser des transactions similaires de lecture ou de lecture/écriture décrites ici. En ce sens, le serveur 50 peut parfois agir comme s'il était un client 40 et un client 40 peut parfois agir comme s'il était un serveur 50. Cependant, il existe quelques différences entre les opérations du client 40 et du serveur 10 50. Par exemple, bien que de multiples clients 40 en lecture seule puissent accéder simultanément à une mémoire tampon unique 36, un seul serveur 50 peut accéder à la fois à une mémoire tampon unique 36. Dans un autre exemple, bien que le directeur 38 de pointeurs d'accès actif puisse diriger le pointeur d'accès actif 42 15 d'un client 40 vers une mémoire tampon contenant les données les plus récentes 48 pour une transaction, le directeur 38 de pointeurs d'accès actif ne dirigera le pointeur d'accès actif 52 d'un serveur 50 que vers une mémoire tampon inoccupée 46, et jamais vers la mémoire tampon 48 de données les plus récentes, afin d'empêcher 20 toute corruption de données parmi les données les plus récentes 48. Le mécanisme décrit plus haut est agencé et configuré de façon qu'une des mémoires tampons 36 du sujet 32 soit toujours identifiée par le directeur 38 de pointeurs d'accès actif comme contenant les données les plus récentes 48 pour que le ou les clients 25 40 et un ou plusieurs serveurs 50 y accède(nt). De plus, le mécanisme décrit plus haut peut être conçu de façon que chaque client 40 effectuant une transaction sur les données accessibles du sujet 32 se voie accorder un accès aux données les plus récentes 48 au moment où le client 40 demande la transaction. Si des données 30 plus récentes sont identifiées pendant une transaction en cours du 3025908 14 client 40, ce client 40 met fin à la transaction sur les données les plus récentes 48 au moment de la transaction demandée. Autrement dit, les données les plus récentes 48 ne peuvent être confirmées ou garanties qu'au moment de la demande de la transaction et non 5 pendant ou au moment de l'achèvement de la transaction. Les mécanismes décrits plus haut peuvent fonctionner uniquement à l'aide de transactions en langage d'assemblage machine, sans copie des données à un niveau de conception au-delà du langage d'assemblage machine, notamment sans copier les 10 données au niveau du système d'exploitation (par exemple "zéro copie"). Les formes de réalisation décrites plus haut ont pour effet technique que l'opération de zéro copie est réalisée en dirigeant les clients 40 et/ou les serveurs 50, à l'aide de pointeurs d'accès actif 42, 52, vers des mémoires tampons 36 contenant les données les 15 plus récentes 48, de façon que les données les plus récentes 48 ne soient jamais "verrouillées" ni "bloquées" en empêchant l'accès à d'autres clients 40 et aux serveurs 50. De plus, l'utilisation d'un langage d'assemblage machine permet des opérations de "échange atomique" des pointeurs, dans lesquelles l'actualisation est terminée 20 en un seul cycle atomique de fonctionnement, et ne peut donc pas être interrompue par d'autres actualisations des pointeurs d'accès actif, car d'autres actualisations ne peuvent pas être achevées au cours d'un cycle de fonctionnement plus court que l'échange atomique. 25 En utilisant des instructions en langage d'assemblage machine et des structures de données de base (par exemple, des listes à liaison unique, des pointeurs de base), les mécanismes assurent des communications asynchrones de données inter-processus entre au moins un serveur 50 et au moins un client 40, 30 dans une mémoire partagée 22, à l'aide d'un échange de données à 3025908 15 zéro copie, permettant un accès "sans verrouillage" ou "sans blocage" pour les données accessibles sans configuration complexe de priorité d'un processus, ni le phénomène de "inversion de priorité", dans lequel un processus à niveau inférieur de priorité 5 exécutant un pré-accès verrouille les données et ne les "lâche" pas pour qu'elles deviennent accessibles même si un processus d'un niveau de priorité supérieur demande l'accès. En fait, puisque des opérations utilisant des instructions machine tendent vers "le premier qui accède aux données gagne", des processus à niveau de 10 priorité supérieur peuvent toujours être les premiers à effectuer leurs opérations. Des formes de réalisation de l'invention peuvent en outre utiliser les mécanismes décrits ci-dessus en réalisant une programmation d'interfaces de programmation d'applications (API) 15 afin d'accéder aux mécanismes au niveau d'un système d'exploitation (ou au niveau application, etc.) par l'intermédiaire des API. Cela a pour effet technique que les formes de réalisation décrites plus haut permettent le procédé à zéro copie afin d'empêcher le verrouillage de données, le blocage de données et/ou 20 l'inversion de priorité Un avantage supplémentaire réalisable dans les formes de réalisation ci-dessus consiste en ce que les formes de réalisation décrites plus haut empêchent que le système ne fonctionne mal par suite d'opérations de copie de données à un niveau de langage 25 différent du langage machine. Les opérations de copie de données peuvent prendre beaucoup de temps pour la lecture et/ou l'écriture de demandes de gros fichiers. En utilisant des pointeurs et des échanges de pointeurs, des copies supplémentaires peuvent être évitées tout en assurant l'accès à tous les composants qui ont besoin 30 d'accéder aux données. Un autre avantage des formes de réalisation 3025908 16 décrites plus haut comprend un mécanisme intégré pour écraser les données les plus anciennes présentes dans les mémoires tampons, et en ce qu'il nécessite donc aucun type de méthode de gestion de données pour le "ramassage des ordures". En outre, un partage de 5 données classique entre un serveur et un ou plusieurs clients est accompli en créant un stockage global des données et en protégeant celui-ci à l'aide de sémaphores (c'est-à-dire des valeurs de régulation d'accès telles que des indicateurs verrouillés/déverrouillés), par exemple au niveau d'un système 10 d'exploitation, n'importe quel autre mutex ou protection contre le verrouillage de données (par exemple des interruptions de données, etc.), puis en copiant les données, ce qui peut être très coûteux en terme de temps machine, surtout si les données stockées sont volumineuses. Cela permet, comme décrit ici, des opérations d'accès 15 plus efficaces, plus rapides, sans verrouillage. D'autres avantages réalisables dans les formes de réalisation décrites plus haut comprennent le fait que le type de sujet présente la souplesse nécessaire à un couplage lâche de processus, il nécessite peu de coordination et il ne nécessite pas de "démarrage 20 échelonné" (c'est-à-dire que des processus, un client et/ou des serveurs peuvent intervenir à tout moment). De plus, la mise en oeuvre des API décrits plus haut peut avoir pour effet une diminution des coûts de mise au point pour la mise au point du système, et de plus grandes marges de performances sur le matériel 25 similaire en comparaison de procédés de copie différents. Dans la mesure où ce n'est pas déjà décrit, les différents aspects et structures des diverses formes de réalisation peuvent être utilisés en combinaison les uns avec les autres à volonté. Le fait qu'un aspect puisse ne pas être illustré dans toutes les formes de 30 réalisation ne signifie pas qu'il doit être interprété comme ne 3025908 17 pouvant pas l'être, mais cela ne vise à rendre la description plus concise. Ainsi, les divers aspects des différentes formes de réalisation peuvent être mélangés et adaptés à volonté pour former de nouvelles formes de réalisation, indépendamment du fait que les 5 nouvelles formes de réalisation soient expressément décrites ou non. Toutes les combinaisons ou permutations de détails décrits ici sont couvertes par le présent exposé. 3025908 18 Liste des repères 18 Equipements remplaçables en escale (LRU) 20 Serveur 5 22 Mémoire 24 Réseau de communication de données 26 Procédés dans les LRU 28 Procédés dans le serveur 30 Attribution de données 10 32 Sujet 34 Adresse constante 36 Pluralité de mémoires tampons 38 Directeur de pointeurs d'accès actif 40 Clients 15 42 Pointeur d'accès actif 44 Mémoire tampon occupée 46 Mémoire tampon inoccupée 48 Données les plus récentes en mémoire tampon 50 Serveur 20 52 Pointeur d'accès actif 54 Premier client 56 Deuxième client 58 Première mémoire tampon 60 Deuxième mémoire tampon 25 62 Troisième client 64 Première communication 66 Troisième mémoire tampon 68 Deuxième communication 70 Quatrième mémoire tampon 30 72 Troisième communication REVENDICATIONS1. Système pour permettre à au moins un client (40) d'accéder à des données dans une mémoire partagée (22), caractérisé en ce qu'il comporte : une attribution de données présentes dans la mémoire partagée (22) à au moins un sujet (32), l'attribution étant accessible par une adresse constante prédéterminée (34) ; le/les sujet(s) (32) ayant un certain nombre de mémoires tampons (36), le nombre de mémoires tampons (36) étant égal à un nombre de clients (40) accédant au(x) sujet(s) (32), plus deux pour chaque serveur (50) accédant au(x) sujet(s) (32) ; chaque client (40) et chaque serveur (50) ayant un pointeur d'accès actif (42, 52) ; et un directeur (38) de pointeurs d'accès actif pour diriger les pointeurs d'accès actif (42, 52) vers des mémoires tampons (36) en fonction d'une demande de transaction émanant d'un client (40) ou d'un serveur (50) ; caractérisé en ce qu'une mémoire tampon (36) comprenant toujours les données les plus récentes (48) dans la mémoire partagée (22), et au moins une mémoire tampon (36) étant toujours disponible pour accéder à des données dans la mémoire partagée (22) ; et les pointeurs d'accès actif (42, 52) étant attribués parmi les mémoires tampons (36) par le directeur (38) de pointeurs d'accès actif uniquement à l'aide de transactions en langage d'assemblage machine sans copier les données au niveau d'un système d'exploitation. 2. Système selon la revendication 1, le système étant un système de gestion de vol. 3025908 21 3. Système selon la revendication 1, dans lequel une pluralité de sujets (32) sont répartis dans la mémoire partagée (22). 4. Système selon la revendication 1, dans lequel le sujet au moins unique (32) et le nombre de mémoires tampons (36) sont 5 prédéfinis pendant l'initialisation de la mémoire partagée (22). 5. Système selon la revendication 1, dans lequel le/les sujet(s) (32) et/ou le nombre de mémoires tampons (36) sont définis pendant l'exécution par un nombre collectif de clients (40) et de serveurs (50) accédant au(x) sujet(s) (32). 10 6. Système selon la revendication 1, dans lequel le client (40) et/ou le serveur (50) accède(nt) aux données associées à la mémoire tampon (36) vers laquelle sont dirigés des pointeurs d'accès actif (42, 52). 7. Système selon la revendication 6, dans lequel le directeur 15 (38) de pointeurs d'accès actif, en réponse à une demande de transaction terminée, dirige des pointeur d'accès actif (42, 52) pour de nouvelles transactions vers une mémoire tampon différente (36) contenant les données les plus récentes. 8. Procédé pour permettre à au moins un client (40) 20 d'accéder à des données dans une mémoire partagée (22), le procédé comportant : l'attribution de données présentes dans la mémoire partagée (22) dans au moins un sujet (32) ; l'attribution d'une unique adresse prédéterminée (34) pour 25 accéder à chaque sujet au moins unique (32) ; l'attribution d'un certain nombre de mémoires tampons (36) pour chaque sujet au moins unique (32), égal au nombre de clients (40) accédant au(x) sujet(s) (32), plus deux pour chaque serveur accédant au(x) sujet(s) ; et 3025908 22 la réponse à des demandes de transactions émanant d'au moins un des clients (40) ou des serveurs (50) en attribuant à une mémoire tampon (36) un pointeur d'accès actif (42, 52) pour chaque client respectif (40) ou serveur respectif (50) 5 l'accès aux données se faisant par l'intermédiaire de la mémoire tampon (36), sans copie des données au niveau du système d'exploitation. 9. Procédé selon la revendication 8, dans lequel l'accès aux données par l'intermédiaire de la mémoire tampon (36) empêche 10 tout verrouillage de données. 10. Procédé selon la revendication 8., dans lequel l'attribution des données dans au moins un sujet (32), l'attribution d'une adresse prédéterminée unique (34) et l'attribution du nombre de mémoires tampons (36) pour chaque sujet (32) ont lieu pendant 15 l'initialisation de la mémoire partagée (22). 11. Procédé selon la revendication 8, dans lequel l'attribution des données dans au moins un sujet (32) et/ou l'attribution du nombre de mémoires tampons (36) pour chaque sujet au moins unique (32) a lieu pendant l'exécution en fonction du 20 nombre collectif de clients (40) et de serveurs (50) accédant au sujet au moins unique (32). 12. Procédé selon la revendication 8, dans lequel la réponse aux demandes de transactions, comprend en outre la direction du pointeur d'accès actif (42) pour chaque client respectif 25 (40) vers une mémoire tampon (36) contenant les données les plus récentes (48) de la mémoire partagée (22). 13. Procédé selon la revendication 12, comportant en outre la réalisation, par les clients (40) et/ou les serveurs (50), d'une transaction sur les données auxquelles il a été acce'dé. 3025908 23 14. Procédé selon la revendication 13, dans lequel la réalisation d'une transaction comprend une extraction des données et/ou une inscription de nouvelles données dans la mémoire tampon (36) et/ou un stockage des données de la mémoire tampon dans la 5 mémoire partagée (22). 15. Procédé selon la revendication 14, comportant en outre, en réponse à une demande de transaction terminée, l'actualisation de la direction du pointeur d'accé.s actif (42, 52) pour chaque client respectif (40) ou chaque serveur respectif (50) vers 10 une mémoire tampon différente (36) contenant les données les plus récentes (48).