Brevet FR2818771A1 — publié le 20020628

l PROCEDE D'ALLOCATION DYNAMIQUE DE MEMOIRE PAR BLOCS DE MEMOIRE ELEMENTAIRES A UNE STRUCTURE DE DONNEES, ET SYSTEME EMBARQUE CORRESPONDANT. L'invention est relative à un procédé d'allocation dynamique de mémoire par blocs de mémoire élémentaires à une structure de données dans un système informatique embarqué, encore désigné par système embarqué, et au système embarqué correspondant. Les systèmes embarqués, ou objets portatifs actuels, tels que les cartes à microprocesseur ou cartes à puce, les cartes PCMCIA et les assistants électroniques tendent à remplir des fonctions de plus en plus complexes, en raison, notamment, de l'implantation de programmes d'application multiples, les cartes à microprocesseur ou à micro-contrôleur étant, dans un tel cas, désignées par cartes multi-application. Les applications implantées dans ce type d'objet peuvent être très variées, en raison de la grande souplesse des langages de haut niveau actuels et de leur adaptabilité aux éléments matériels les plus variés par la mise en oeuvre de machines virtuelles notamment. En particulier, dans le cadre de l'évolution des cartes électroniques à microprocesseur ou micro-contrôleur, il est envisagé d'installer dans ce type de carte un nombre important d'applications, applications telles que porte- monnaie électronique PME, contrôle d'accès physique, contrôle d'accès à des services, tels qu'émissions télévisées à péage ou analogues. L'installation de multiples applications sur ces objets portatifs est rendue possible, d'une part, par la miniaturisation des circuits électroniques et augmentation corrélative de la capacité mémoire des cartes à puce, et, d'autre part, par l'augmentation de la puissance de calcul des unités centrales de traitement. La multiplication des applications installées sur ces types de matériels pose toutefois le problème crucial d'une allocation dynamique de mémoire optimisée. En effet, ainsi que représenté en figure 1, on rappelle que l'objet portatif, constitué, par exemple, par une carte à microprocesseur et référencé 10, comprend de manière classique des circuits d'entrée/sortie, I/O, référencés 12, des ressources de traitement de l'information, référencés 14, constituées par un micro- contrôleur et reliées aux circuits d'entrée/sortie 12. En outre, une mémoire non volatile 18 est prévue, laquelle consiste en une mémoire programmable 18a et en une mémoire de type ROM, ou mémoire de type à accès en lecture seulement 18b. Ces mémoires sont reliées au micro- contrôleur ou microprocesseur 14. Enfin, une mémoire de travail, mémoire RAM, référencée 16, est également prévue et reliée au microprocesseur. Les liaisons précitées s'entendent d'une liaison par BUS. L'ensemble est géré par un système d'exploitation OS, lequel peut être implanté en mémoire non volatile 18. En outre, dans certains cas, l'objet portatif multi- application peut comporter une unité de calcul cryptographique SI, référencée 20, elle-même reliée au microprocesseur 14. Le microprocesseur lui-même peut être remplacé ou complété par des circuits logiques implantés dans une puce à semi-conducteur, ces circuits logiques pouvant être des circuits de type ASIC, de l'anglais Application Specific Integrated Circuit. Dans le cadre d'une rationalisation de la gestion de l'espace mémoire disponible sur tout système informatique, en particulier pour un système embarqué tel qu'une carte à microprocesseur ou micro-contrôleur telle que représentée en figure 1, la présente invention a pour objet la mise en oeuvre d'un procédé d'allocation dynamique de mémoire par blocs de mémoire élémentaires à une structure de données, les structures de données correspondant soit à des applications en tant que telles, soit à des données système permettant la mise en ouvre du système d'exploitation, ou encore à des données spécifiques de sécurisation, telles que des clés d'accès de chiffrement/déchiffrement ou autres. La notion d'allocation dynamique recouvre l'attribution et/ou la suppression de mémoire attribuée. Un autre objet de la présente invention est également, dans le cadre de la rationalisation précitée, l'accès à la connaissance très rapide de l'appartenance de chaque octet mémorisé en zone mémoire à l'application ou structure de données à laquelle cet octet appartient. Un autre objet de la présente invention est également la mise en oeuvre d'un procédé d'allocation dynamique de mémoire par blocs de mémoire élémentaires à une structure de données permettant d'éviter ou de réduire tout phénomène d'émiettement, encore désigné phénomène de fragmentation, lors du processus d'allocation/effacement de la mémoire. Un autre objet de la présente invention est enfin la mise en oeuvre d'un procédé d'allocation dynamique de mémoire par blocs de mémoire élémentaires, dans lequel l'intégrité de la mémoire est assurée par une vérification de la valeur de chaque bloc de mémoire élémentaire alloué. Le procédé d'allocation dynamique de mémoire à une structure de données identifiée par un numéro d'identification et mémorisée sous forme de paquets d'information numérique dans la zone mémoire d'un système embarqué, objet de la présente invention, est remarquable en ce que, la zone mémoire étant subdivisée en blocs de mémoire élémentaires, celui-ci est mis en euvre à partir d'au moins une instruction d'effacement d'un bloc mémoire élémentaire et une instruction d'allocation d'un bloc mémoire élémentaire, par laquelle à ce bloc mémoire élémentaire est associée une référence à ce numéro d'identification. Pour allouer un bloc de mémoire élémentaire, ce procédé consiste à attribuer à la référence au numéro d'identification la valeur de ce numéro d'identification. Pour effacer un bloc de mémoire élémentaire, ce procédé consiste à attribuer à la référence au numéro d'identification une valeur arbitraire fixée a priori, distincte de toute valeur de numéro d'identification. Le système embarqué multi-application, objet de la présente invention, comporte un système d'exploitation assurant la gestion des circuits d'entrée/sortie, de la mémoire vive et de la mémoire non volatile par l'intermédiaire d'un microprocesseur. Il est remarquable en ce qu'il comporte en mémoire non volatile un tableau de gestion de la zone mémoire par blocs de mémoire élémentaires, ce tableau comportant au moins, pour chaque bloc de mémoire élémentaire, une référence à un numéro d'identification de la structure de données à laquelle le bloc de mémoire élémentaire correspondant a été alloué et une valeur d'espace mémoire occupé dans le bloc mémoire élémentaire alloué correspondant. Le procédé objet de l'invention trouve application à l'allocation dynamique de mémoire de tout système informatique embarqué, mais plus particulièrement de tout objet portatif tel qu'une carte à microprocesseur ou micro-contrôleur, dans lequel les ressources mémoires sont réduites, en raison de la taille et de l'encombrement restreints de ce dernier. Le procédé et le système embarqué multi- application objets de l'invention seront mieux compris à la lecture de la description et à l'observation des dessins ci-après dans lesquels, outre la figure 1 relative à l'art antérieur: - la figure 2a représente un organigramme fonctionnel illustratif des étapes permettant la mise en euvre du procédé d'allocation dynamique de mémoire objet de la présente invention; - la figure 2b représente, à titre illustratif, un organigramme fonctionnel d'une variante préférentielle de mise en oeuvre du procédé d'allocation dynamique de mémoire, objet de la présente invention, tel qu'illustré en figure 2a; - la figure 2c représente, à titre illustratif, un mode de réalisation particulier du processus de calcul d'une valeur de vérification (checksum); - la figure 3 représente, à titre illustratif, une variante préférentielle de mise en oeuvre du procédé objet de la présente invention, dans le cas d'une opération d'effacement d'une structure de données, telle qu'une application; - les figures 4a et 4b représentent, à titre illustratif, des diagrammes d'état d'occupation de mémoire, lors de processus d'installation/désinstallation d'applications mis en oeuvre, conformément au procédé d'allocation dynamique de mémoire objet de la présente invention; - la figure 5 représente, à titre d'exemple non limitatif, un système embarqué, tel qu'une carte à microprocesseur ou micro-contrôleur, comportant, mémorisé en mémoire non volatile, un tableau de données spécifiques permettant de gérer l'espace mémoire de ce système embarqué, conformément au procédé objet de la présente invention. Une description plus détaillée du procédé d'allocation dynamique de mémoire par blocs de mémoire élémentaires à une structure de données, objet de la présente invention, sera maintenant donnée en liaison avec la figure 2a et les figures suivantes. La figure 2a représente un organigramme fonctionnel des étapes essentielles permettant la mise en oeuvre du procédé d'allocation dynamique de mémoire objet de la présente invention, cet organigramme fonctionnel correspondant en fait à un diagramme d'état des étapes essentielles précitées. En particulier, on comprend que l'étape S correspond à un état de départ dans lequel une structure de données, constituée par une application, par des données système, le cas échéant des clés ou des valeurs numériques spécifiques, doit être mémorisée, c'est-à-dire installée dans le cas d'applications, par exemple dans la zone mémoire d'un système embarqué dont la structure correspond à celle précédemment décrite dans la description en liaison avec la figure 1. On comprend en particulier que chaque structure de données est identifiée par un numéro d'identification noté IDAj o j peut prendre les valeurs comprises entre 1 et n, n indiquant le nombre total de structures de données susceptibles d'être mémorisées ou installées dans l'espace mémoire précité. En outre, pour la mise en oeuvre du procédé objet de la présente invention, on indique que l'espace mémoire soumis au procédé d'allocation dynamique de mémoire objet de la présente invention, est avantageusement subdivisé en blocs de mémoire, chaque bloc de mémoire noté BL1, avec 1 pouvant varier de 1 = 1 à 1 = L, est formé par un nombre déterminé d'octets. Dans un mode de réalisation préférentiel non limitatif, on indique que le nombre d'octets constitutifs de chaque bloc BL1 peut être une puissance de 2 afin de faciliter l'adressage de chaque bloc mémoire et dans chaque bloc mémoire ainsi défini. Dans un mode de réalisation donné à titre d'exemple non limitatif, on indique que chaque bloc peut comporter 256 octets. A l'étape S de départ, l'ensemble des numéros d'identification est noté [IDAj6j I et l'ensemble des blocs [BL, l '. Enfin, et dans le cadre de la mise en ouvre du procédé objet de la présente invention, on dispose d'une valeur numérique arbitraire, notée AAAA, cette valeur numérique arbitraire ayant une fonction spécifique qui sera décrite ci-après dans la description, afin de permettre la mise en oeuvre du procédé d'allocation dynamique de mémoire objet de l'invention. D'une manière générale, on rappelle que chaque structure de données, c'est-à-dire applications, données système, clés ou valeurs numériques spécifiques, identifiée par le numéro d'identification IDAj peut être mémorisée sous forme de paquets d'information numérique dans la zone mémoire du système embarqué précédemment cité. Par paquets d'information numérique, on entend, d'une part, des paquets de données numériques représentatifs d'un code objet permettant l'installation et l'exécution d'une application par exemple, de données systèmes ou de clés, ou valeurs numériques spécifiques, respectivement des paquets de données d'applications engendrés par une ou plusieurs applications implantées sur le système embarqué correspondant, ou de données numériques intermédiaires permettant la gestion de l'ensemble par le système d'exploitation pour assurer l'exécution des différentes fonctionnalités du système embarqué à partir des données système, des clés ou des valeurs numériques intermédiaires précédemment mentionnées. Ainsi que représenté en figure 2a, on indique que le procédé d'allocation dynamique de mémoire par blocs de mémoire élémentaires à une structure de données, objet de l'invention, est mis en oeuvre à partir d'au moins une instruction d'allocation d'un bloc mémoire élémentaire BL1, opération d'allocation notée A par laquelle, au bloc mémoire élémentaire précité est associée une référence au numéro d'identification de la structure de données ou application considérée, et à partir d'au moins une instruction d'effacement d'un bloc mémoire élémentaire, instruction correspondant à l'opération E représentée sur la figure 2a. En particulier, et selon un aspect remarquable du procédé d'allocation objet de la présente invention, l'opération d'allocation A, pour allouer un bloc mémoire élémentaire, consiste à attribuer à la référence au numéro d'identification associé au bloc mémoire élémentaire considéré la valeur du numéro d'identification IDAj. Alors que dans les procédés d'allocation de mémoire des systèmes embarqués antérieurs, les zones de mémorisation des structures de données, telles que les applications, comportent une simple référence au numéro d'identification de la structure de données ou application correspondante réalisée sous forme d'un pointeur, pointeur de début de mémorisation de la structure de données ou application et pointeur de fin de mémorisation de la structure de données ou application considérée, l'étape d'allocation A conforme à l'objet de la présente invention consiste en fait à attribuer à titre de référence au numéro d'identification de la structure de données ou application, la valeur du numéro d'identification précité à chaque bloc BL1 dans lequel les paquets d'information numérique de code objet ou de données sont mémorisés. On comprend en particulier, ainsi que représenté en figure 2a, que l'attribution de la valeur du numéro d'identification à la référence au numéro d'identification consiste à associer de manière bi-univoque la valeur de ce numéro d'identification au bloc mémoire élémentaire correspondant BL1, cette opération étant notée: BLi(ID_Aj). On comprend ainsi que la mise en correspondance bi-univoque précitée peut être réalisée par association à chaque bloc BL1 d'un champ de données représentatif de la valeur du numéro d'identification précité IDAj dans un tableau de gestion de l'allocation dynamique de mémoire de la zone mémoire du système embarqué précité. La structure complète du tableau précité sera donnée ultérieurement dans la description. Conformément à un autre aspect remarquable du procédé d'allocation dynamique de mémoire par blocs de mémoire élémentaires conforme à l'objet de la présente invention, on indique, en référence à la figure 2a, que l'étape d'effacement E consiste, pour effacer un bloc de mémoire élémentaire, à attribuer à la référence au numéro d'identification associée au bloc de mémoire élémentaire considéré BL, une valeur arbitraire en lieu et place du numéro d'identification de la structure de données ou application considérée. Cette valeur arbitraire est bien entendu la valeur AAAA précédemment citée dans la description. Cette valeur arbitraire est distincte de toute valeur de numéro d'identification attribué à une structure de données considérée. Sur la figure 2a, on a représenté les étapes A d'allocation et E d'effacement reliées à l'état de départ S par une double flèche, chaque double flèche représentant bien entendu l'appel de la fonction ou de l'instruction d'allocation A, respectivement de la fonction ou de l'instruction d'effacement E, les opérations d'allocation, respectivement d'effacement étant conduites ainsi que précédemment décrit, et la flèche de retour représentant un acquittement adressé vers l'état de départ S. Une description plus détaillée d'un mode de mise en oeuvre préférentiel du procédé d'allocation dynamique de mémoire par blocs de mémoire élémentaires conforme à l'objet de la présente invention, sera maintenant donnée en liaison avec la figure 2b. Le procédé objet de la présente invention, dans le mode de réalisation de la figure 2b, peut correspondre à un processus d'allocation de mémoire à des données engendrées par une application par exemple, ou le cas échéant obtenues par chargement ou téléchargement de mise à jour d'applications, les paquets d'information numérique, dans les deux cas, pouvant correspondre à ceux d'une application ou d'une structure de données déjà installée. Pour cette raison, on note: [ID Aj ' I l'ensemble des numéros d'identification de structures de données déjà installées; [BLI =, l'ensemble des blocs susceptibles d'être utilisés dans la zone mémoire considérée; IDAk le numéro d'identification de la structure de données ou application pour laquelle l'allocation mémoire doit être effectuée, k E [l,n]; Qk l'espace mémoire nécessaire aux paquets d'information numérique auxquels un espace mémoire correspondant doit être alloué. Par ailleurs, on définit un indice j particulier, que l'on note jo, à qui l'on donne la valeur 0. Dans ces conditions, l'opération d'allocation A, ainsi que représenté en figure 2b, peut consister, pour allouer un bloc de mémoire élémentaire donné, noté BL1, au paquet d'information numérique Qk précité, et préalablement à toute étape consistant à attribuer à la référence au numéro d'identification la valeur du numéro d'identification, à vérifier, pour tout bloc de mémoire élémentaire déjà alloué, l'identité de la référence au numéro d'identification et du numéro d'identification de la structure de données correspondante, en une étape A1. Cette vérification d'identité consiste à effectuer un test consistant à chercher le premier bloc de mémoire BL1 dont le numéro d'identification associé IDAj correspond au numéro d'identification IDAk de la structure de données ou application pour laquelle l'allocation doit être effectuée. Le test précité est noté: 3 BL1 (IDAj) avec IDAj = ID_Ak ? et j>jO Sur réponse négative au test Al, consistant à rechercher le prochain bloc appartenant à l'application dont le numéro d'identification est ID_Ak, une instruction d'allocation d'un bloc de mémoire élémentaire libre est appelée à l'étape A3, aucun des éventuels blocs de mémoire déjà alloués à l'application dont le numéro d'identification est ID_Ak ne possédant un espace libre suffisant pour contenir le paquet d'informations Qk- Sur la figure 2b, l'appel de l'instruction d'allocation du bloc de mémoire élémentaire suivant est notée: BLa (AAAA) = BLa (ID_Ak) L'instruction d'allocation précitée du bloc élémentaire suivant permet ainsi d'allouer un bloc de mémoire élémentaire d'adresse a, a étant une valeur de décalage quelconque, a e N ensemble des entiers naturels. Le bloc de mémoire élémentaire retenu est bien entendu un bloc élémentaire auquel la valeur arbitraire AAAA a été attribuée précédemment et correspond de ce fait à un bloc effacé, c'est-à-dire à un bloc libre et prêt pour toute opération d'allocation et de mémorisation du paquet d'information Qk correspondant. La réponse positive au test A1 indique que le bloc mémoire élémentaire qui vient d'être trouvé est au moins partiellement alloué à la structure de données ou application pour laquelle l'allocation doit être effectuée. Sur réponse positive au test A1 précité, le procédé d'allocation consiste ensuite à vérifier, en un test A2, l'existence d'un espace mémoire suffisant restant dans le bloc de mémoire élémentaire courant BLl(IDAj) précité pour mémoriser l'information numérique Qk précédemment mentionnée. Sur la figure 2b, la vérification de l'existence d'un espace mémoire suffisant au test A2 comprend la mise à la valeur j de l'indice particulier j0 et est notée: LRj = LBj - LOj et Qk libre du bloc de mémoire élémentaire courant précité. Ainsi, l'étape d'allocation A4 consiste en une écriture du paquet d'information Qk dans le bloc BLi(ID_Aj) et en une actualisation de la valeur de l'espace mémoire occupé dans le bloc, notée: LOj = LOj+Qk. Sur réponse négative au test de vérification A2, le bloc courant BL(IDAjo) ne possédant pas assez d'espace libre pour contenir le paquet d'information Qk, il convient de retourner à l'étape Al afin de rechercher un nouveau bloc dont le numéro d'identification est ID_Ak et n'ayant pas encore été analysé lors de cette allocation. Bien entendu, les étapes d'allocation proprement dites A3 et A4 sont suivies d'un retour à l'état de départ S. Dans un mode de réalisation préférentiel non limitatif, on indique que suite aux étapes d'allocation A3 et A4, et donc suite à l'allocation d'un bloc mémoire élémentaire à une application et bien entendu à la mémorisation par écriture de l'information numérique, c'est-à-dire du paquet d'information Qk par écriture de cette information dans le bloc mémoire élémentaire alloué, le procédé d'allocation conforme à l'objet de la présente invention peut consister en outre à calculer, en une étape A5 une valeur de vérification du bloc mémoire élémentaire alloué, cette opération étant désignée par calcul CKS sur la figure 2b. D'une manière générale, on indique que pour la mise en oeuvre de l'étape A5, le calcul de la valeur de vérification, encore désigné par check sum en langage anglo-saxon, peut être effectué grâce à des moyens de calcul de valeur de vérification de type classique, ces moyens de calcul pouvant d'ailleurs correspondre au circuit de calcul spécialisé 20 contenu dans les systèmes embarqués de type classique, ainsi que décrit précédemment dans la description. Une étape A6 de gestion d'erreur de type classique peut être prévue. Un mode de réalisation préférentiel de l'opération de calcul d'une valeur de vérification des blocs mémoire élémentaires est un mode de vérification asynchrone, comme décrit avec la figure 2c. Ainsi que représenté sur la figure précitée et de préférence indépendamment de toute allocation d'un bloc mémoire élémentaire à une structure de données, le procédé d'allocation dynamique de mémoire objet de la présente invention peut consister, pour la mise en euvre de l'étape A5, à sélectionner selon un critère de sélection aléatoire l'un des blocs de mémoire élémentaires alloués. Cette opération de sélection sur critère de sélection aléatoire est représentée sur la figure 2c par la génération d'une valeur aléatoire A à l'étape A51, cette valeur aléatoire A pouvant être comprise entre [1,L], puis en une étape A52 consistant à un appel en lecture du bloc mémoire élémentaire d'adresse A, cette opération étant notée sur la figure 2c: BLd(X) = BLA(X). Dans cette relation, X désigne le contenu du bloc de mémoire élémentaire BLA appelé en lecture. Les étapes A51 et A52 précitées sont alors suivies d'une étape A53 consistant à calculer une valeur de vérification du bloc mémoire élémentaire alloué retenu. L'étape A53 est notée " calcul de CKS(X) ". Cette valeur de vérification est alors comparée à une valeur vraie mémorisée dans le tableau précédemment cité, selon le processus de vérification de type check sum précédemment mentionné dans la description. Sur réponse positive à la vérification précitée, conformément à un aspect remarquable du procédé objet de l'invention, le processus de calcul de la valeur de vérification peut être déclenché périodiquement par une étape A54 de retour à l'étape A51, ce qui permet de réinitialiser la génération d'une valeur aléatoire distincte, puis l'appel en lecture du bloc de mémoire élémentaire correspondant par l'exécution des étapes A51 et A52. Au contraire, sur réponse négative à l'étape A53 de calcul de la valeur de vérification, la valeur de vérification n'étant pas vérifiée, une étape A55 de retour d'erreur peut être appelée, afin de souligner un problème d'intégrité des données ou de code mémorisés. La gestion de la situation d'erreur de type classique, étape A6, peut prévoir le blocage du système embarqué ou la tentative de récupération des données si un code correcteur d'erreurs est employé comme checksum. Un exemple de mise en oeuvre spécifique du procédé d'allocation dynamique de mémoire par blocs de mémoire élémentaires, conforme à l'objet de la présente invention, sera maintenant donné ci-après. Le procédé objet de l'invention a été mis en oeuvre pour des blocs de mémoire élémentaires de 256 octets, à chaque bloc de mémoire élémentaire BL1 étant associées les informations ci-après: * numéro d'identification IDAj de la structure de données ou de l'application: 1 octet; * espace mémoire occupé dénoté LOj: 1 octet; l'espace mémoire libre peut le cas échéant être utilisé; * valeur de vérification ou check sum: 2 octets. De préférence, ainsi qu'il sera décrit ultérieurement dans la description, les informations précédentes sont stockées pour chaque bloc de mémoire élémentaire sous la forme: structure bloc info {byte IDAi, byte LRj, word CKS} Dans la relation précédente, on indique que " byte " désigne un mot d'un octet et " word " désigne un mot de deux octets. En ce qui concerne le codage du numéro d'identification associé à chaque bloc de mémoire élémentaire, le codage ci-après était utilisé: IDAj =00h: bloc libre, AAAA = 00h, FFh: bloc système illisible, FEh: bloc système lisible, FDh: valeur spécifique ou clé, Olh-FCh: bloc de mémoire élémentaire appartenant à l'application de numéro d'identification d'application i, avec i E [Olh,FCh]. Pour tout IDAj, LRj peut prendre toute valeur de Olh à FFh, la valeur OOh signifiant en outre que le bloc de mémoire élémentaire courant est totalement utilisé, aucun espace mémoire dans le bloc n'étant disponible. Le procédé d'allocation dynamique de mémoire par blocs de mémoire élémentaires objet de la présente invention, permet en outre d'effacer toute structure de données, ou application, identifiée par un numérod'identification de manière particulièrement souple et efficace, de la manière ci-après, ainsi que représenté en figure 3. En raison de l'attribution à chaque bloc de mémoire élémentaire d'une référence correspondant au numéro d'identification, le processus d'effacement correspondant peut consister à collecter tous les blocs BL0, BLb à BLq dont le numéro d'identification ID_Ae correspond à l'application à effacer à l'étape E1 représentée en figure 3, puis à attribuer à la référence au numéro d'identification de l'ensemble des blocs de mémoire élémentaires alloués à l'application considérée la valeur arbitraire AAAA précédemment mentionnée à l'étape E2 de la même figure 3, soit à la valeur OOh précitée. En effet, compte tenu de cette attribution, tous les blocs BL0, BLb à BLq sont alors considérés comme des blocs effacés et donc disponibles pour une allocation future, et pour une écriture dans la totalité de l'espace mémoire réservé pour chacun de ces derniers. En ce qui concerne la vérification de l'appartenance d'un octet dans la zone mémoire allouée conformément au procédé objet de la présente invention, le numéro d'identification de l'application ou de la structure de données correspondante peut être obtenu par la relation suivante: IDAk = bloc info [(adresseoctet-adresse_début_zone mémoire)/64] La relation précédente est obtenue compte tenu du mode de 1 5 réalisation décrit pour des blocs de 256 octets par bloc et 4 octets d'information dans bloc info par bloc courant considéré. La mise en ouvre du procédé d'allocation dynamique de mémoire, objet de la présente invention, permet de réduire ou de supprimer l'émiettement de la zone mémoire gérée, émiettement encore désigné par fragmentation. En effet, lors de la création d'un objet ou d'un type de variable, on cherche dans la liste bloc info le premier bloc appartenant à l'application ou à la structure de données et ayant un espace libre suffisant pour la création de cet objet ou type de variable considéré. Dans ces conditions, un nouveau bloc n'est affecté à une application, ou à une structure de données, que si la place restante n'est pas suffisante pour l'objet ou type de variable à créer dans au moins un des blocs déjà affecté à cette application ou cette structure de données. Ainsi, il n'existe jamais aucun objet ou type de variable qui ne soit réparti sur au moins deux blocs non consécutifs. Les objets ou types de variable précités n'ayant pas à être stockés dans un ordre spécifique, tout bloc effacé, et qui en conséquence se retrouve libre, peut toujours être réaffecté et réalloué, soit à des données issues d'applications, soit à du code objet relatif à une application. Le risque d'émiettement est donc limité au chargement et à l'effacement fréquent de blocs de codes consécutifs. Le phénomène d'émiettement de la zone mémoire peut en outre être réduit par un processus de réallocation des blocs de mémoire élémentaires aux paquets de code objet, par réarrangement par translation. En ce qui concerne la procédure de vérification des blocs, on indique que la valeur de vérification est calculée pour chaque bloc soumis au processus d'allocation, c'est-à-dire à chaque écriture du bloc considéré. Par contre, il n'est pas nécessaire de vérifier les blocs à chaque lecture afin de ne pas ralentir de manière trop importante l'accès à la mémoire. Dans une variante de mise en ouvre, on indique que la valeur de vérification peut être calculée à chaque lecture pour des blocs contenant des données jugées critiques, telles que par exemple des données sensibles de l'OS ou des valeurs de clés pour lesquelles le numéro d'identification peut-être à la valeur FDh. En ce qui concerne la répétition périodique du calcul de la valeur de vérification sur des blocs sélectionnés de manière aléatoire, on indique que la période peut être fixée à 50 ms par exemple. Le calcul de la valeur de vérification de l'ensemble des blocs peut également être mis en oeuvre lors d'événements très spécifiques du système embarqué, tels que le changement d'état de vie de ce dernier dans le domaine d'application des cartes à puce par exemple. Un exemple d'installation et de désinstallation d'applications de type appliquette ou applet en langage anglo-saxon, grâce à la mise en ouvre du procédé d'allocation dynamique de mémoire par blocs de mémoire élémentaires conforme à l'objet de la présente invention, sera maintenant donné en liaison avec les figures 4a et 4b. Les appliquettes peuvent correspondre à des programmes écrits en langage de haut niveau de tout type. En référence à la figure 4a, on considère 4 appliquettes, désignées par Applet 1, Applet 2, Applet 3 et Applet 4, comportant chacune: TABLEAU I Applet 1 150 octets de code, soit 1 bloc 600 octets de données, soit 3 blocs Applet 2 150 octets de code, soit 1 bloc octets de données, soit 1 bloc Applet 3 1100 octets de code, soit 5 blocs octets de données, soit 1 bloc Applet 4 400 octets de code, soit 2 blocs 300 octets de données, soit 2 blocs En référence à la figure 4b, on indique que l'étape 1 correspond à l'installation de l'Applet 1 et de l'Applet 2, l'étape 2 à l'effacement de l'Applet 1, l'étape 3 l'installation de l'Applet 3 et l'étape 4 l'installation de l'Applet 4. Le tableau II ci-après donne la valeur, exprimée en notation hexadécimale, du numéro d'identification ID_Ak o k prend les valeurs 1 à 4, la valeur 00 en notation hexadécimale correspondant à la valeur arbitraire AAAA. TABLEAU II Etape 01 01 01 01 02 02 00 00 00 00 00 00 00 Etape 00 00 00 00 02 02 00 00 00 00 00 00 00 Etape 03 00 00 00 02 02 03 03 03 03 03 00 00 Etape 03 04 04 04 02 02 03 03 03 03 03 04 00 4 __ __ ___ ____ __ Un système embarqué spécifique multi-application permettant la mise en oeuvre du procédé d'allocation dynamique de mémoire conformé à l'objet de la présente invention sera maintenant décrit en liaison avec la figure 5. On rappelle que le système embarqué correspondant est représenté à titre d'exemple non limitatif sous forme d'une carte à microprocesseur ou à micro-contrôleur. Ce système embarqué comporte un système d'exploitation assurant la gestion des circuits d'entrée/sortie de la mémoire vive et de la mémoire non volatile par l'intermédiaire du microprocesseur précité. En référence à la mise en oeuvre du procédé objet de la présente invention, il comporte en mémoire programmable non volatile 18a, un tableau de gestion de la zone mémoire par blocs de mémoire élémentaires, ce tableau comportant au moins, pour chaque bloc de mémoire élémentaire BL1 précédemment décrit dans la description, une référence à un numéro d'identification d'une structure de données à laquelle le bloc de mémoire élémentaire correspondant a été alloué, et une valeur d'espace mémoire occupée dans le bloc de mémoire élémentaire correspondant alloué. La référence au numéro d'identification de la structure de données est notée IDA1, respectivement IDA2 et la valeur d'espace mémoire occupée est notée LI1 respectivement LI2 sur la figure 5. En outre, ainsi que représenté sur la figure précitée, le tableau peut comporter, pour chaque bloc de mémoire élémentaire correspondant, une valeur de vérification du bloc élémentaire alloué, ces valeurs étant notées CKSla et CKSlb, respectivement CKS2a et CKS2b. On indique que, dans le mode de réalisation de la figure , la valeur de vérification est codée sur 2 octets. Dans le cas de la mise en oeuvre du procédé objet de la présente invention, pour un système embarqué tel qu'une carte à puce, et pour une taille de mémoire non volatile 18a constituée par une mémoire programmable de type EEPROM de 32 koctets, le tableau précité occupe un espace mémoire correspondant à 32 x koctets/256 x 4 = 512 octets. On note que l'espace mémoire utilisé pour la gestion de cet espace mémoire, selon le procédé d'allocation dynamique de mémoire par blocs de mémoire élémentaires conforme à l'objet de la présente invention, occupe, du fait de la mémorisation nécessaire du tableau précité, 1,56% de la taille mémoire effectivement disponible. Cette valeur faible de la zone mémoire occupée pour la mise en oeuvre du procédé objet de la présente invention est tout à fait acceptable compte tenu du gain obtenu en souplesse d'utilisation et d'installation d'applications variées, dont le nombre ne dépend que de la taille de la mémoire non volatile 18a. REVENDICATIONS 1. Procédé d'allocation dynamique de mémoire à une structure de données identifiée par un numéro d'identification et mémorisée sous forme de paquets d'information numérique dans la zone mémoire d'un système embarqué, caractérisé en ce que ladite zone mémoire étant subdivisée en blocs de mémoire élémentaires et ce procédé d'allocation dynamique étant mis en oeuvre à partir d'au moins une instruction d'effacement d'un bloc de mémoire élémentaire et une instruction d'allocation d'un bloc mémoire élémentaire, par laquelle audit bloc de mémoire élémentaire est associée une référence audit numéro d'identification, ce procédé comprend les étapes consistant, * pour allouer un bloc de mémoire élémentaire: - à attribuer à ladite référence audit numéro d'identification la valeur dudit numéro d'identification, et, * pour effacer un bloc de mémoire élémentaire: - à attribuer à ladite référence audit numéro d'identification une valeur arbitraire, distincte de toute valeur de numéro d'identification. 2. Procédé selon la revendication l,caractérisé en ce que, pour allouer un bloc de mémoire élémentaire, celui-ci comprend en outre, préalablement à l'étape consistant à attribuer à ladite référence audit numéro d'identification la valeur dudit numéro d'identification, pour tout bloc de mémoire élémentaire alloué, les étapes consistant: - à vérifier l'identité de ladite référence audit numéro d'identification et dudit numéro d'identification, et, sur réponse positive à cette vérification d'identité, ledit bloc de mémoire élémentaire courant étant au moins partiellement alloué à cette structure de données, - à vérifier l'existence d'un espace mémoire suffisant restant dans ledit bloc de mémoire élémentaire courant pour mémoriser ladite information numérique, et à appeler une instruction d'allocation d'un bloc de mémoire élémentaire suivant, sinon. 3. Procédé selon la revendication 1 ou 2, caractérisé en ce que, pour effacer une application identifiée par un numéro d'identification, celuici consiste à attribuer à ladite référence audit numéro d'identification de l'ensemble des blocs de mémoire élémentaires alloués à cette application ladite valeur arbitraire. 4. Procédé selon la revendication 1, caractérisé en ce que, suite à l'allocation d'un bloc de mémoire élémentaire à une application et suite à la mémorisation par écriture de ladite information numérique dans ledit bloc de mémoire élémentaire alloué, celui-ci consiste en outre à calculer une valeur de vérification du bloc de mémoire élémentaire. 5. Procédé selon la revendication 1, caractérisé en ce que, indépendamment de toute allocation d'un bloc de mémoire élémentaire à une structure de données, celui- ci comprend en outre les étapes consistant: - à sélectionner, selon un critère de sélection aléatoire, l'un des blocs de mémoire élémentaires alloués, et - à calculer une valeur de vérification dudit bloc de mémoire élémentaire alloué. 6. Procédé selon la revendication 5, caractérisé en ce que celui-ci consiste à déclencher ladite sélection puis ledit calcul d'une valeur de vérification périodiquement, avec une période de valeur déterminée. 7. Système embarqué multi-application comportant un système d'exploitation assurant la gestion des circuits d'entrée/sortie, de la mémoire vive et de la mémoire non volatile par l'intermédiaire d'un microprocesseur, caractérisé en ce qu'il comporte en mémoire programmable non volatile un tableau de gestion de la zone mémoire par blocs de mémoire élémentaires, ledit tableau comportant au moins pour chaque bloc de mémoire élémentaire: - une référence à un numéro d'identification d'une structure de données à laquelle le bloc de mémoire élémentaire correspondant a été alloué; - une valeur d'espace mémoire occupé dans ledit bloc de mémoire élémentaire correspondant alloué. 8. Système embarqué selon la revendication 7, caractérisé en ce que ledit tableau comporte en outre pour chaque bloc de mémoire élémentaire une valeur de vérification du bloc de mémoire élémentaire alloué correspondant.