FR 2787901 A1 20000630 FR 9816486 A 19981228 Organisation mémoire par zones physiques. Le domaine d'application de l'invention est celui de l'allocation de mémoire physique à des processus exécutés par une machine informatique. La mémoire physique d'une machine informatique est habituellement découpée en pages physiques comprenant chacune un même nombre d'octets. Un processus accède à un octet au moyen d'une adresse dont par exemple les bits de poids fort codent un numéro de page physique et les bits de poids faible 1o codent un déplacement dans la page physique pour atteindre l'octet accédé. Pour exécuter un processus, un certain nombre de pages physiques lui est alloué. Les pages physiques allouées à un processus sont choisies dans une liste de pages libres, c'est à dire de pages qui ne sont pas déjà utilisées, par exemple par un autre processus. Un espace d'adressage virtuel permet de n'allouer qu'un nombre restreint de pages physiques effectivement nécessaires à un moment donné d'exécution. Un gestionnaire de mémoire virtuelle établit alors une correspondance entre un numéro de page virtuelle accédé par le processus et un numéro de page physique choisi dans la liste de pages libres. Selon l'état de la technique connu, I'allocation de pages physiques se fait à partir de la totalité de la mémoire physique au moyen d'une liste de pages libres unique. Lorsqu'un processus demande à accéder à une page physique autre que celles qui lui sont déjà allouées et que le nombre de pages physiques dans la liste de pages libres n'est pas suffisant pour satisfaire cette demande, le processus est mis dans une file d'attente. Un processus particulier de remplacement est alors activé pour générer des pages libres parmi des pages utilisées en prenant soin de sauvegarder les pages utilisées qui sont remplacées. Lorsque le nombre de pages libres redevient suffisant, les processus mis en file d'attente sont réveillés. 2 2787901 Cependant, I'état de la technique connu présente plusieurs inconvénients. Lorsque plusieurs processus sont exécutés simultanément par la machine, la liste de page libre constitue un goulot d'étranglement car il n'est possible de servir qu'un processus à la fois. Lorsque la liste de pages libres ne contient pas un nombre suffisant de pages libres, de nombreux processus risquent d'être mis en file d'attente. Lorsque la liste de pages libres contient à nouveau un nombre suffisant de pages libres, les processus en attente se la disputent à nouveau, de sorte que les processus perdants se retrouvent en file d'attente. On observe alors qu'une augmentation de la taille de la mémoire physique ou io une augmentation du nombre de processeurs de la machine n'amène pas une augmentation de performances attendue. L'invention se fixe pour objectif de pallier les inconvénients de l'état de la technique connu. L'objet de l'invention est un procédé d'allocation de mémoire physique à des processus exécutés par une machine informatique comprenant une mémoire physique (64, 74, 84, 94) répartie en plusieurs zones de mémoire physique, correspondant chacune à une suite contiguë de numéros de pages physiques (NPP). Le procédé active, sur demande d'un processus courant: - une première fonction qui contrôle un nombre de pages libres dans une zone de mémoire distinguée des autres zones de mémoire par un nom (z) spécifié par le processus courant et met ledit processus courant dans une file d'attente propre à ladite zone de nom (z) si le nombre de pages libres n'est pas suffisant dans ladite zone de nom (z); - une deuxième fonction qui retire un numéro de page physique d'une liste des pages libres dans ladite zone distinguée par le nom (z) de façon à être utilisée par ledit processus courant. Ainsi, plusieurs zones de mémoire physique peuvent être gérées indépendamment sans que des 3 2787901 exécutions de processus sur une zone de mémoire physique n'interfèrent avec des exécutions de processus sur une autre zone de mémoire physique. La description d'une mise en oeuvre particulière de l'invention, suit en référence aux figures o: - la figure 1 présente une machine informatique; - la figure 2 présente une structure de données pour mettre en oeuvre l'invention; - la figure 3 est l'organigramme d'une fonction de réservation de numéros de io page physique; - la figure 4 est l'organigramme d'une fonction d'allocation d'un numéro de page physique; la figure 5 est l'organigramme d'une fonction de remplacement de numéro de page physique; - la figure 6 est l'organigramme d'une fonction de libération de numéro de page physique. En référence à la figure 1, une machine informatique comprend un nombre n de modules mis en oeuvre au moyen d'un système d'exploitation OS (Operating System en anglais) commun. Un module 51 comprend un ou plusieurs processeurs 60, 61, 62, 63, de type unité centrale de traitement CPU (Control Processing Unit en anglais) et une unité mémoire 64, locale au module 51. Un module 52 comprend un ou plusieurs processeurs 70, 71, 72, 73, de type unité centrale de traitement CPU et une unité mémoire 74, locale au module 52. Un module 53 comprend un ou plusieurs processeurs 80, 81, 82, 83, de type unité centrale de traitement CPU et une unité mémoire 84, locale au module 53. Un module 54 comprend un ou plusieurs processeurs 90, 91, 92, 93, de type unité centrale de traitement CPU et une unité mémoire 94, locale au module 54. L'exemple présenté o le nombre n est égal à quatre, n'est limitatif ni pour un nombre inférieur, ni pour un nombre supérieur de modules. 4 2787901 Chaque module 51, 52, 53, 54, comprend respectivement un organe d'interconnexion 56, 57, 58, 59. Les organes d'interconnexion 56, 57, 58, 59 communiquent entre eux de façon matérielle au moyen d'une liaison 55. Un ensemble comprenant tout ou partie de l'unité mémoire 64, tout ou partie de l'unité mémoire 74, tout ou partie de l'unité mémoire 84 et tout ou partie de l'unité mémoire 94, constitue un ensemble de ressources de mémoire physique MP pour le système d'exploitation OS de la machine. Pour accéder à une ressource dans la mémoire physique MP, un processeur , 61, 62, 63, localisé dans le module 51 génère une requête d'accès sur un bus 65, local au module 51. La requête d'accès comprend une adresse physique AP de la ressource. A détection de l'adresse physique AP sur le bus , l'organe d'interconnexion 56 prend physiquement le contrôle du bus 65 pour analyser l'adresse physique AP. Si l'adresse physique AP est celle d'une ressource résidente dans l'unité mémoire 64 et que cette ressource est à jour, l'organe d'interconnexion 56 laisse à l'unité mémoire 64 le soin de transmettre la ressource requise sur le bus 65 pour répondre à la requête. Sinon, I'organe d'interconnexion 56 se charge de transmettre la ressource requise sur le bus 65. Si l'organe d'interconnexion 56 ne dispose pas de la ressource requise, localement au module 51, I'organe d'interconnexion 56 génère à son tour une requête d'accès sur la liaison 55. L'organe d'interconnexion 57, 58, 59, du module distant respectif 52, 53, 54, qui dispose de la ressource requise, la transmet à l'organe d'interconnexion 56. Le mécanisme matériel qui vient d'être décrit est identique pour chacun des n modules 51, 52, 53, 54 de la machine. Les explications relatives au bus 65 qui précèdent, sont transposées à un bus 75 pour les composants du module 52, à un bus 85 pour les composants du module 53, à un bus 95 pour les composants du module 54. Ce mécanisme matériel est invisible du système d'exploitation OS qui voit l'ensemble de ressources de mémoire physique MP 2787901 au moyen de leurs adresses physique AP sans distinction a priori de localité de ces ressources à un module particulier. Cependant, le temps mis par le mécanisme matériel pour répondre à une requête d'accès générée par un processeur local à un module est plus court si la ressource requise est localement disponible dans ce module que si la ressource requise est disponible dans un module distant. C'est pourquoi, la mémoire physique MP est dite à accès non uniforme. Une adresse physique accédée par un processus est constituée d'un numéro de page physique NPP et d'un déplacement dans la page physique accédée. Ainsi, un accès à une adresse directement en mode d'adressage physique ou indirectement par un mécanisme de conversion virtuel-réel en mode d'adressage virtuel, provoque un accès à un numéro de page physique NPP. Les unités mémoires 64, 74, 84, 94 sont réparties en zones de mémoire physique. Une ou plusieurs zones de mémoire physique sont attribuées à chaque unité mémoire. A chaque zone mémoire est attribuée une suite contiguë de numéros de page physique NPP. De nombreux mécanismes de correspondance virtuelle-réelle sont connus tels que ceux mis en oeuvre dans le brevet US4279014 de J-C. Cassonnet et al., dans le brevet US5129070 de M. Dorotte, dans le brevet US5283876 de T. Steven ou dans le brevet US5218687 de P. Vallet et al. De façon générale, la correspondance virtuelle-réelle utilise un gestionnaire de mémoire qui comprend une partie matérielle et une partie logicielle. La partie matérielle comprend des tables résidentes en mémoire principale, des registres spécialisés résidants dans les processeurs et des instructions câblées ou microprogrammées dédiées à l'accès de ces tables et de ces registres. La partie logicielle comprend' des séquences d'instructions déclenchées par des événements et exécutées par les processeurs. A titre d'exemple d'événement, 6 2787901 on peut citer les fautes de page qui se produisent lorsque la partie matérielle accède à un numéro de page sans correspondance virtuelleréelle. La partie logicielle accède, elle aussi à tout ou partie des tables de la partie matérielle. Les éléments du gestionnaire de mémoire utiles à la compréhension de I'invention sont expliquées en référence aux figures suivantes. En référence à la figure 2, deux structures de données sont associées à chaque zone de mémoire physique. La première structure de données comprend une table 1 de gestion des pages physiques par la partie logicielle o0 du gestionnaire de mémoire, un mot 2 de tête de liste et un mot 3 de fin de liste. La structure de données réside dans la zone mémoire à laquelle elle est associée et sert à alimenter l'allocateur de pages physiques comprises dans cette zone mémoire. La table 1 débute à une adresse Adl de la zone mémoire et contient autant de lignes que la zone mémoire contient de pages physiques. A chaque numéro de page physique NPP considéré, correspond une ligne, référencée par le numéro de page physique considéré. Chaque ligne contient entre autres, trois champs. Deux de ces champs ne sont remplis que si la page physique considérée ne fait pas partie des pages utilisées dans le mécanisme de correspondance virtuelle-réelle, de sorte à obtenir une liste doublement chaînée des pages libres de la zone mémoire considérée. Le premier champ est destiné à contenir un numéro de page physique LibPréd. précédant le numéro de page physique NPP considéré dans la liste des pages libres de la zone mémoire associée à la table 1. Le premier champ est accédé au moyen d'une fonction LibPréd. (NPP) qui donne le prédécesseur du numéro de page physique NPP considéré dans la liste des pages libres de la zone mémoire associée à la table 1. Le deuxième champ est destiné à contenir un numéro de page physique LibSucc. suivant le numéro de page physique NPP considéré dans la liste des pages libres de la zone mémoire associée à la table 1. Le deuxième champ est accédé au moyen d'une fonction LibSucc.(NPP) qui donne le successeur du numéro de page physique NPP considéré dans la liste des pages libres de la zone mémoire associée à la table 1. Le troisième 7 2787901 champ, quant à lui, est destiné à contenir un indicateur Util. décrivant l'utilisation de la page physique NPP. Le troisième champ est accédé au moyen d'une fonction Util.(NPP), qui rend une valeur 1 si la page physique NPP est en cours d'utilisation dans le mécanisme de correspondance virtuelle- réelle, et une valeur 0 si la page physique NPP est libre, et donc appartient à la liste des pages libres de la zone mémoire associée à la table 1. A titre d'exemple, si les pages de numéro 1, 3 et 6 sont les seules pages libres de la zone mémoire considérée, LibSucc.(1) a pour valeur 3, LibSucc.(3) a io pour valeur 6 et LibSucc.(6) a pour valeur l'indicateur d'extrémité de liste EXT. LibPréd.(6) a pour valeur 3, LibPréd.(3) a pour valeur 1 et LibPréd.(1) a pour valeur l'indicateur d'extrémité de liste EXT. Util.(1), Util.(3) et Util.(6) ont pour valeur 0. Util.(NPP) a pour valeur 1 pour toute autre page physique NPP de numéro différent de 1, 3 ou 6. Le mot 2 est destiné à contenir un premier numéro de page physique LIB non utilisé par le mécanisme de correspondance virtuelle-réelle. Le mot 3 est destiné à contenir un dernier numéro de page physique DL non utilisé par le mécanisme de correspondance virtuelle-réelle. A chaque zone mémoire nommée z, correspondent deux mots 2 et 3. Les valeurs contenues dans ces deux mots seront appelées LIB(z) et DL(z), de façon à distinguer la zone mémoire z qu'elles concernent. Ainsi, en référence à la figure 1, LIB(51) caractérise le premier numéro de page physique dans l'espace mémoire 64 non encore utilisé par le mécanisme de correspondance virtuelle-réelle. De même, en référence à la figure 1, DL(51) désigne le dernier numéro de page physique dans l'espace mémoire 64 non utilisé par le mécanisme de correspondance virtuelle-réelle. En référence à l'exemple précédent, si la zone mémoire considérée est de numéro z, LIB(z) a pour valeur 1 et DL(z) a pour valeur 6. 8 2787901 Initialement, la valeur LIB(z) contenue dans le mot 2 associé à la zone mémoire z, contient un numéro qui référence la première page physique de la zone de mémoire z, et la valeur DL(z) contenue dans le mot 3 associé à la zone mémoire z, contient un numéro qui référence la dernière page physique de la zone de mémoire z. Le premier champ de chaque ligne de la table 1, à l'exception de la première ligne, contient un numéro qui référence la ligne précédente de la table 1. Le premier champ de la première ligne de la table 1, contient un indicateur EXT d'extrémité de liste. Le deuxième champ de chaque ligne de la table 1, à l'exception de la dernière ligne, contient un numéro qui 1o référence la ligne suivante de la table 1. Le deuxième champ de la dernière ligne de la table 1, contient l'indicateur EXT d'extrémité de liste. Le troisième champ de chaque ligne de la table 1 a pour valeur 0. Ainsi, avant utilisation de pages physiques par le mécanisme de correspondance virtuelle-réelle, l'ensemble de numéros de pages physiques de la zone mémoire qui référencent une ligne de la table 1, constitue une liste de numéros de page physique libres qui débute au numéro contenu dans le mot 2 associé à la zone mémoire considérée et qui termine au numéro contenu dans le mot 3 associé à la zone mémoire considérée. La deuxième structure de données comprend des mots 4, 5, 6, 7, 8 servant à gérer le remplacement de pages en cas de saturation de la zone de mémoire gérée par cette structure de données. Cette structure de données réside dans la zone mémoire à laquelle elle est associée. Le mot 4 est destiné à contenir le nombre total de pages physiques libres NUMLIB dans la zone de mémoire gérée. Le mot 5 est destiné à contenir un pointeur ATTLIB sur une liste de processus en attente de la libération d'une page physique dans la zone de mémoire gérée. Le mot 6 est destiné à contenir un pointeur REMPPTR sur le processus en charge du remplacement de pages physiques dans la zone mémoire gérée. Le mot 7 est destiné à contenir la valeur limite MINLIB de pages libres en dessous de laquelle la zone mémoire gérée est considérée comme saturée. Le mot 8 est destiné à contenir la valeur limite MAXLIB de 9 2787901 pages libérées au-dessus de laquelle la zone mémoire gérée n'est plus considérée comme saturée. A chaque zone mémoire nommée z, sont attribués cinq mots 4 à 8. Les valeurs contenues dans ces mots seront appelées NUMLIB(z), ATTLIB(z), REMPPTR(z), MINLIB(z) et MAXLIB(z), de façon à distinguer la zone mémoire z qu'ils concernent. Ainsi, en référence à la figure 1, NUMLIB(51) désigne le nombre de pages libres dans la zone mémoire 64. De même, en référence à la figure 1, ATTLIB(51) désigne la liste des processus en attente de la libération d'une page physique dans la zone mémoire 64. Toujours en référence à la figure 1, REMPPTR(51) désigne le io processus en charge du remplacement de pages physiques dans la zone mémoire 64, et s'exécutant sur l'un des processeurs 60 à 63. Toujours en référence à la figure 1, MINLIB(51) contient la valeur limite de pages libres en dessous de laquelle le processus pointé par REMPPTR(51) sera activé. Toujours en référence à la figure 1, MAXLIB(51) contient la valeur limite de I5 pages libérées à partir de laquelle REMPPTR(51) arrêtera son processus de remplacement de pages. Initialement, le mot 4 contient le nombre total de pages physiques contenues dans la zone mémoire gérée, et le mot 5 contient une valeur nulle, aucun processus n'étant en attente de libération de page. Les mots 6 à 8 contiennent des valeurs invariables pour une zone de mémoire donnée. Une troisième structure de données comprend une table 1-bis de gestion des pages physiques aussi bien par la partie logicielle que par la partie matérielle du gestionnaire de mémoire. La structure de données réside dans la zone mémoire à laquelle elle est associée et est utilisée entre autres par le processus de remplacement de pages en cas de saturation de cette zone mémoire. La table 1-bis débute à une adresse Adl-bis de la zone mémoire et contient autant de lignes que la zone mémoire contient de pages physiques. A chaque numéro de page physique NPP considéré, correspond une ligne référencée par le numéro de page physique considéré et contenant, entre 2787901 autres, un champ. Ce champ est destiné à contenir un indicateur Réfer. décrivant l'accès à la page physique NPP. Ce champ est positionné à 1 par la partie matérielle du gestionnaire mémoire dès que la page physique NPP est référencée, c'est à dire accédée en lecture ou en écriture. Ce champ est accédé au moyen d'une fonction Réfer.(NPP), qui rend une valeur 1 si la page physique NPP a été accédée, et une valeur 0 si la page physique NPP n'a pas été accédée. Une fonction de réservation Resa est décrite en référence à la figure 3. La fonction Resa a pour but de réserver un numéro de page physique en vue de son utilisation par le mécanisme de correspondance virtuelle- réelle. Pour réserver un nombre N de pages physiques, par exemple dans le cas de création d'un processus, la fonction Resa est appelée successivement N fois. Une première étape 9 consiste à extraire le numéro de la zone mémoire dans laquelle doit avoir lieu la réservation. Le numéro de la zone mémoire est déterminé à partir de règles fixées par l'application appelante. Parmi ces règles, nous pouvons citer une allocation dans une zone mémoire fixe préétablie, de numéro fourni par ladite application, ou une allocation dite locale, c'est à dire dans la zone mémoire appartenant au module contenant l'un des processeurs sur lequel le processus courant de ladite application est en cours d'exécution, ou une allocation dite par distribution, c'est à dire dans des zones mémoires différentes à chaque nouvelle allocation de page physique pour les besoins de ladite application. Si aucune action particulière n'a été entreprise par l'application appelante, la zone mémoire est celle appartenant au module contenant l'un des processeurs sur lequel le processus de ladite application est actuellement en cours d'exécution. Soit z ce numéro de zone mémoire. Une deuxième étape 10 consiste à effectuer un test sur la valeur NUMLIB(z) du mot 4 associé à la zone mémoire z. Une valeur de NUMLIB(z) inférieure à Il 2787901 MINLIB(z), signifie que la zone mémoire de numéro z est saturée. Une étape 13 rajoute alors le numéro de processus courant dans la liste des processus ATTLIB(z) en attente d'une libération de page dans la zone mémoire z. Puis une étape 14 déclenche le processus de remplacement Remp, pointé par REMPPTR(z) pour remplir la liste de numéros de pages physiques libres de la zone mémoire z. La fonction de remplacement Remp est décrite par la suite. Une valeur de NUMLIB(z) supérieure ou égale à la valeur de MINLIB(z), signifie que la liste de numéros de page physique libres est constituée d'au to moins MINLIB(z) numéros de pages physiques. Une étape 11 effectue la réservation dans la zone mémoire z, c'est à dire que la valeur NUMLIB(z) est décrémentée de 1, 1 étant le nombre de pages à réserver. En étape 12, un retour est effectué à la procédure appelante, qui va activer l'allocation effective de la page physique. Une fonction Allouer est décrite en référence à la figure 4. La fonction Allouer a pour but d'allouer une page physique précédemment réservée par la fonction Resa, en vue de son utilisation par le mécanisme de correspondance virtuelle- réelle. Cette fonction a donc pour effet de retirer la première page physique de la liste des pages libres dans l'une des zones mémoire de la machine. Une première étape 15 consiste à extraire d'une structure associée au processeur courant, le numéro de la zone mémoire dans laquelle doit avoir lieu l'allocation. Cette extraction est faite de la même manière que celle décrite précédemment dans le cadre de la fonction Resa. Soit z ce numéro de zone mémoire. Une étape 16 considère le numéro de page physique NPP égal à la valeur LIB(z) contenue dans le mot 2 associé à la zone mémoire z. En étape 17, la valeur du mot LIB(z) est remplacée par la valeur du deuxième champ de la ligne de la table 1, référencée par le numéro de page physique NPP considéré. Ainsi, le nouveau numéro de première page libre de la zone z 12 2787901 est le successeur du numéro de page NPP accédé, dans la liste des pages libres. En étape 18, un test est effectué sur la valeur du deuxième champ de la table 1 au numéro de ligne référencé par le numéro de page NPP, pour tester si le numéro de page NPP n'était pas en fin de liste des pages libres. Dans un tel cas, son successeur LibSucc.(NPP) a pour valeur l'indicateur d'extrémité. Une réponse négative au test déclenche l'étape 19. io En étape 19, I'indicateur d'extrémité EXT est écrit dans le premier champ de la table 1 au numéro de ligne référencé par le numéro de page physique LibSucc.(NPP), dont la valeur est contenue dans le deuxième champ de la table 1 au numéro de ligne référencé par le numéro de page NPP accédé. Ceci a pour effet de retirer définitivement le numéro de page physique NPP considéré de la liste de numéros de page physique libres de la zone mémoire z, qui commence maintenant au numéro de page physique suivant de la liste de numéros de page physique libres. Si le numéro de page NPP est le seul dans la liste des pages physiques libres de la zone mémoire z, son successeur LibSucc.(NPP) est l'indicateur d'extrémité EXT. Une réponse positive au test de l'étape 18 déclenche une étape 20. En étape 20, la page physique NPP n'ayant pas de prédécesseur dans la liste des pages libres de la zone z, la valeur DL(z) contenue dans le mot 3 associé à la zone mémoire z, est remplacée par l'indicateur d'extrémité EXT. Ceci a pour effet de vider la liste des pages libres de la zone mémoire z. L'étape 21 est déclenchée à la suite de l'étape 19 ou de l'étape 20. L'étape 21 est déclenchée à la suite de l'étape 19 ou de l'étape 20. Dans cette étape, I'indicateur Util.(NPP), présent dans la table 1, et indiquant si une page 13 2787901 est libre ou en cours d'utilisation, est positionné à 1 pour indiquer que la page physique NPP n'est plus libre. L'étape 22 permet le retour à la procédure appelante. La fonction de remplacement REMP est décrite en référence à la figure 5. Elle est appelée avec, en paramètre, le numéro de zone mémoire dans lequel elle doit travailler. Soit z ce numéro de zone mémoire. Son but est de libérer des pages physiques dans la zone mémoire z, ces pages sont choisies parmi des 1o pages physiques occupées et non fréquemment référencées. La libération des pages doit être faite après avoir sauvegardé leur contenu dans un espace de stockage en mémoire secondaire. Une étape 24 prend comme numéro de page NPP, la première page physique i5 de la zone mémoire z, c'est à dire la page référencée par la première ligne de la table 1. En étape 25, commence une boucle qui prendra fin dès que la valeur NUMLIB(z) présente dans le mot 4 associé à la zone mémoire z, et désignant le nombre de pages libres de la zone mémoire z, deviendra supérieur à la valeur MAXLIB(z) présente dans le mot 8 associé à la zone mémoire z. Si le test de l'étape 25 est vérifié, des étapes suivantes 27 à 30 traitent les pages de la zone mémoire z pour essayer d'en libérer le nombre voulu. L'étape 26 teste si la page physique courante désignée par NPP est libre. Ce test est effectué en testant l'indicateur Util.(NPP), présent dans la table 1 de gestion des pages physiques. Si Util.(NPP) n'a pas pour valeur 1, cela signifie que la page est déjà libre, et donc qu'il n'est pas utile de continuer à la traiter. Une étape 45 est alors directement activée. 14 2787901 Si Util.(NPP) a pour valeur 1, cela signifie que la page physique n'est pas libre, et donc qu'elle est susceptible d'être remplacée. L'étape 27 teste alors si la page physique NPP est référencée. Ce test est effectué en testant l'indicateur Réfer.(NPP), présent dans la table 1-bis de gestion des pages physiques. Si Réfer.(NPP) a pour valeur 1, cela signifie que la page physique a été accédée récemment par un processus, et donc qu'il n'est pas encore opportun de la libérer; l'étape 28 est alors déclenchée. Dans le cas contraire, I'étape 29 est déclenchée. îo En étape 28, I'indicateur Réfer.(NPP) est positionné àa 0. De la sorte, si la page physique NPP est à nouveau accédée jusqu'au prochain passage de la fonction de remplacement, le matériel positionnera à nouveau cet indicateur à 1. Par contre, une absence d'accès permettra de garder cette valeur nulle de Réfer.(NPP) et d'indiquer à la fonction de remplacement que la page n'a pas été récemment accédée, et donc que la page NPP peut être remplacée. L'étape 45 est déclenchée à la suite de l'étape 28. Si Réfer.(NPP) a pour valeur 0, cela signifie que la page physique n'a pas été accédée récemment, depuis le dernier passage de la fonction de remplacement. Il est alors possible de la libérer. En étape 29, la fonction Stocker(NPP) est appelée, ce qui permet de sauvegarder le contenu de la page physique NPP en mémoire secondaire, de sorte à pouvoir le restituer en cas de besoin ultérieur. En étape 30, la libération effective de la page physique NPP est activée par l'appel de la fonction Liber(NPP). La fonction Liber est décrite par la suite. L'étape 45 est déclenchée à la suite de l'étape 28. L'étape 45 est une étape de test pour savoir s'il existe encore des pages dans la zone mémoire considérée. Si le numéro de page NPP référence la dernière ligne de la table 1, il n'existe pas de page suivante dans la zone mémoire 2787901 considérée et l'étape 32 est activée pour terminer le processus de remplacement. S'il existe une ligne suivante dans la table 1, il existe encore des pages et une étape 31 est activée. L'étape 31 prend comme numéro de page NPP le numéro suivant celui qui vient d'être considéré dans la zone mémoire z, c'est à dire la page référencée par la ligne suivante de la table 1. Puis un retour à l'étape 25 est effectué. L'étape 32 est activée si le test de l'étape 25 n'est pas vérifié, c'est à dire dès io que le nombre de pages physiques libres dans la zone de mémoire z devient supérieur ou égal à la valeur MAXLIB(z) présente dans le mot 8 associé à la zone mémoire z. Le travail de la fonction de remplacement est alors considéré comme achevé, et la fonction de remplacement REMP se termine par un retour. De façon à ne pas favoriser un remplacement systématique des numéros de page physique répertoriés en début de la table 1, on peut prévoir une étape supplémentaire non représentée, à la suite d'une réponse négative au test de l'étape 25. Cette étape supplémentaire consiste à définir comme première page physique de la zone mémoire z pour l'étape 24, le numéro NPP de page physique obtenu en étape 31. Ainsi, une scrutation ultérieure de la table 1 ne recommencera pas systématiquement au début de la table 1, mais à la ligne de la table 1 pour laquelle le nombre de pages libres suffisant a été obtenu. Le dernier numéro NPP de page physique de la table 1 est alors défini pour l'étape 45 comme étant celui référence à la ligne précédant la ligne courante. Une fonction de libération LIBER est décrite en référence à la figure 6. La fonction LIBER est activée sur chaque numéro de page NPP dont aucun processus n'a plus besoin, par exemple à la fin d'un processus, ou bien suite à un appel depuis la fonction de remplacement REMP, décrite précédemment. La fonction LIBER a pour but de remettre un tel numéro de page NPP en tête de la 16 2787901 liste des numéros de page libre appartenant à la zone mémoire d'o la page physique NPP est originaire. En étape 33, une fonction Zone(NPP) est appelée, de sorte à rechercher le numéro de la zone mémoire de la machine d'o est originaire la page physique. Sachant que des plages d'adresses physiques contiguës de la mémoire sont associées à chaque zone, le numéro de zone d'o est originaire la page NPP peut être aisément calculé en comparant la valeur NPP à chaque plage d'adresses jusqu'à trouver la plage d'adresse qui la contienne et d'en déduire ainsi sa localisation. Il faut signaler que d'autres processus de localisation d'une page physique sont envisageables, mais ceci n'étant pas le but de cette invention, c'est le plus trivial qui vient d'être décrit. Soit z le numéro de zone mémoire d'o est originaire la page physique NPP. En étape 34, le champ Util.(NPP) de la table 1 de gestion des pages physiques indiquant que la page physique NPP est utilisée est remis à 0. Ceci permet d'indiquer que la page physique NPP est à présent libérée. En étape 35, la valeur LIB(z) du mot 2 associé à la zone mémoire z, est inscrite dans le deuxième champ de la table 1 au numéro de ligne référencé par le numéro de page NPP à libérer, de façon à indiquer que le numéro de page NPP est maintenant le premier de la liste des numéros de pages libres, et a donc pour successeur dans la liste des pages libres de la zone mémoire z l'ancien premier numéro de page libre de la zone mémoire z. En étape 36, un test est effectué sur la valeur LIB(z) contenue dans le mot 2 associé à la zone mémoire z. Une valeur égale à l'indicateur d'extrémité de liste EXT signifie que la liste des numéros de page libre était vide avant la libération du numéro de page NPP. Une réponse positive au test déclenche I'étape 38 dans laquelle le numéro de page NPP est inscrit comme valeur DL(z) du mot 3 associé à la zone mémoire z. Ceci indique que le numéro de page 17 2787901 NPP est le dernier numéro de page libre. Une réponse négative au test déclenche l'étape 37 dans laquelle le numéro de page NPP est inscrit dans le premier champ de la table 1 dont la ligne est référencée par la valeur LIB(z) contenue dans le mot 2 associé à la zone mémoire z. Ceci ajoute le numéro de page NPP dans la liste des pages libres, avant le premier numéro de page libre. L'étape 39 est déclenchée à la suite de l'étape 38 ou de l'étape 37. En étape 39, I'indicateur EXT d'extrémité de liste, est inscrit dans le premier champ de la table 1 au numéro de ligne référencé par le numéro de page NPP io à libérer, de façon à indiquer que le numéro de page NPP devient le premier de la liste des numéros de pages libres de la zone mémoire z, et n'a donc pas de prédécesseur. En étape 40, le numéro de page NPP est inscrit comme nouvelle valeur LIB(z) dans le mot 2 associé à la zone mémoire z, de façon à indiquer que le numéro de page NPP est le premier numéro de page libre. En étape 41, la valeur NUMLIB(z) du mot 4 associé à la zone mémoire z, désignant le nombre de pages libres dans la zone mémoire z, est incrémentée. En étape 42, un test sur la valeur ATTLIB(z) contenue dans le mot 5 associé à la zone mémoire z, désignant la liste des processus en attente de la libération d'une page physique dans la zone mémoire z, est effectué. Une valeur différente de l'indicateur d'extrémité EXT signifie qu'il existe des processus en attente de la libération d'une page physique dans la zone mémoire z. Une réponse positive au test déclenche l'étape 43 dans laquelle ces processus sont réveillés. L'étape 44 de retour est déclenchée à la suite de l'étape 43 ou d'une réponse négative au test de l'étape 42. 18 2787901 Les structures et mécanismes qui viennent d'être décrits sont intéressants pour une architecture de machine avec mémoire à accès non uniforme. En définissant une zone mémoire par module de la machine en référence à la figure 1, la mise en oeuvre du mécanisme de conversion virtuel réel dans chaque zone mémoire de façon autonome permet de réduire les interactions avec les modules distants. Ces structures et mécanismes sont aussi intéressants pour une architecture avec mémoire à accès uniforme lorsque celle-ci est de taille considérable. 1o C'est par exemple le cas pour une machine constituée du seul module 51 de la figure 1, alors dépourvu de l'organe d'interconnexion 56. En définissant plusieurs zones mémoires distinctes dans l'unité mémoire 64, la mise en oeuvre du mécanisme de conversion virtuel réel dans chaque zone mémoire de façon autonome permet de réduire les interactions entre zones mémoires. Ainsi, deux processus distincts s'exécutant sur deux zones mémoire différentes ne se gêneront pas. Une prise de verrou par le premier processus dans la première zone mémoire ne bloque pas le deuxième processus dans la deuxième zone mémoire. Le premier processus en attente d'allocation de pages physiques dans la première zone mémoire n'interfère pas avec le deuxième processus en exécution dans la deuxième zone mémoire car le processus de remplacement ne vole pas de pages physiques au deuxième processus pour les attribuer au premier processus. 19 2787901 Revendications: 1. Procédé d'allocation de mémoire physique à des processus exécutés par une machine informatique comprenant une mémoire physique (64, 74, 84, 94) répartie en plusieurs zones de mémoire physique, correspondant chacune à une suite contiguë de numéros de pages physiques (NPP), caractérisé en ce que le procédé active, sur demande d'un processus courant: - une première fonction (Resa) qui contrôle un nombre de pages libres dans une zone de mémoire distinguée des autres zones de mémoire par un nom (z) io spécifié par le processus courant dans une étape (9) et met ledit processus courant dans une file d'attente propre à ladite zone de nom (z) si le nombre de pages libres n'est pas suffisant dans ladite zone de nom (z), tel que détecté dans une étape (10); - une deuxième fonction (Allouer) qui retire un numéro de page physique (NPP) d'une liste des pages libres dans ladite zone distinguée par le nom (z) spécifié dans une étape (15), de façon à être utilisée par ledit processus courant. 2. Procédé d'allocation de mémoire physique selon la revendication 1, caractérisé en ce que la liste de pages libres est comprise dans une première structure de données (1, 2, 3) avec une référence pour chaque numéro de page physique (NPP) de ladite zone de nom (z). 3. Procédé d'allocation de mémoire physique selon la revendication 1 ou 2, caractérisé en ce que le contrôle du nombre de pages libres dans une zone de mémoire distinguée des autres zones de mémoire par un nom (z) est fait au moyen d'une deuxième structure de données (4, 5, 6, 7, 8). 4. Procédé d'allocation de mémoire physique selon l'une des revendications précédentes, caractérisé en ce que chaque accès à un numéro (NPP) de page physique de la zone mémoire de nom (z) par tout processus est indiqué par un état d'une troisième structure de données (1 bis). 2787901 5. Procédé d'allocation de mémoire physique selon la revendication 4, caractérisé en ce que, suite à une mise dudit processus courant dans la file d'attente propre à ladite zone de nom (z), la première fonction (Resa) déclenche une fonction (Remp) qui parcourt la première structure de donnée de façon à consulter dans une étape (27), I'état de la troisième structure de données (1bis) pour chaque numéro (NPP) de page physique détectée dans une étape (26), utilisée dans la première structure de donnée, et à modifier tout état indiquant un accès au numéro (NPP) de page physique jusqu'à détecter un I0 état n'indiquant pas d'accès qui déclenche alors dans une étape (30), une fonction de libération (Liber) pour ajouter le numéro (NPP) à la liste de pages libres. 6. Procédé d'allocation selon l'une des revendications précédentes, caractérisé en ce qu'au moins la première structure de donnée est distincte pour chaque zone de mémoire physique et réside dans la zone de mémoire physique à laquelle elle est attribuée. 7. Procédé d'allocation selon l'une des revendications précédentes, caractérisé en ce que la fonction de libération (LIBER) réveille dans une étape (43), les processus contenus dans la liste des processus ATTLIB(z) en attente d'une libération de page dans la zone mémoire z. 8. Procédé d'allocation selon l'une des revendications précédentes, caractérisé en ce que la fonction de libération (LIBER) débute par une étape (33) qui détermine le nom z de zone mémoire à laquelle appartient la page physique de numéro (NPP) pour lequel la fonction (LIBER) a été appelée. 9. Machine informatique comprenant une mémoire physique (64, 74, 84, 94) répartie en plusieurs zones de mémoire physique, correspondant chacune 21 2787901 à une suite contiguë de numéros de pages physiques (NPP), caractérisée en ce qu'elle comprend en mémoire physique: - une première structure de données (1, 2, 3) pour définir une liste de numéros (NPP) de pages physiques libres pour chaque zone de mémoire physique nommée z; - une deuxième structure de données (4, 5, 6, 7) pour contrôler un nombre de pages libres dans chaque liste de pages physiques libres. 10. Machine informatique selon la revendication 9, caractérisée en ce que la to deuxième structure de données comprend un mot (5) associé à chaque zone de mémoire physique nommée z, le mot (5) pointant sur une liste (ATTLIB) de processus en attente d'une page physique libre dans ladite zone de mémoire physique nommée z.