FR3095054A1 - Managing a memory in an electronic device - Google Patents
Managing a memory in an electronic device Download PDFInfo
- Publication number
- FR3095054A1 FR3095054A1 FR1903864A FR1903864A FR3095054A1 FR 3095054 A1 FR3095054 A1 FR 3095054A1 FR 1903864 A FR1903864 A FR 1903864A FR 1903864 A FR1903864 A FR 1903864A FR 3095054 A1 FR3095054 A1 FR 3095054A1
- Authority
- FR
- France
- Prior art keywords
- memory
- electronic device
- volatile memory
- obm
- stored
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 claims abstract description 448
- 230000007246 mechanism Effects 0.000 claims description 21
- 238000004590 computer program Methods 0.000 claims description 15
- 230000004048 modification Effects 0.000 claims description 11
- 238000012986 modification Methods 0.000 claims description 11
- 238000001514 detection method Methods 0.000 claims description 7
- 238000012545 processing Methods 0.000 claims description 7
- 230000009471 action Effects 0.000 claims description 4
- 238000011084 recovery Methods 0.000 claims description 4
- 230000004807 localization Effects 0.000 claims description 3
- 230000008569 process Effects 0.000 abstract description 2
- 238000003672 processing method Methods 0.000 description 8
- 230000003068 static effect Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 230000008901 benefit Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 101100232371 Hordeum vulgare IAT3 gene Proteins 0.000 description 4
- 238000004891 communication Methods 0.000 description 4
- 238000003780 insertion Methods 0.000 description 4
- 230000037431 insertion Effects 0.000 description 4
- 208000031968 Cadaver Diseases 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000011218 segmentation Effects 0.000 description 2
- 230000001052 transient effect Effects 0.000 description 2
- 101000711846 Homo sapiens Transcription factor SOX-9 Proteins 0.000 description 1
- 102100034204 Transcription factor SOX-9 Human genes 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 239000011449 brick Substances 0.000 description 1
- 238000004377 microelectronic Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Static Random-Access Memory (AREA)
- Stored Programmes (AREA)
Abstract
Gestion d’une mémoire dans un dispositif électronique L’invention vise la gestion d’une première mémoire (MR1) d’un premier dispositif (DV1) coopérant avec un deuxième dispositif (DV2) comportant une deuxième mémoire (MR2). Lors d’un procédé, le premier dispositif (DV1) réalise un chargement initial comprenant : l’acquisition d’une application (APP1) comportant du code interprétable orienté objet définissant des méthodes (MT) exécutables ; et la génération dans la première mémoire (MR1) d’objet-méthode (OBM) ; puis envoie chaque objet-méthode (OBM) au deuxième dispositif électronique (DV2) pour enregistrement dans la deuxième mémoire (MR2). Au cours d’une interprétation du code interprétable de l’application (APP1), le premier dispositif (DV1) identifie les objet-méthodes (OBM1) invoqués puis récupère depuis la deuxième mémoire (MR2) chaque objet-méthode (OBM) invoqué qui n’est pas déjà stockée dans la première mémoire (MR1), pour en permettre un accès par le premier dispositif électronique (DV1). Figure pour l’abrégé : Fig. 1.Management of a memory in an electronic device The invention relates to the management of a first memory (MR1) of a first device (DV1) cooperating with a second device (DV2) comprising a second memory (MR2). During a process, the first device (DV1) performs an initial load comprising: the acquisition of an application (APP1) comprising interpretable object-oriented code defining executable methods (MT); and the generation in the first memory (MR1) of an object-method (OBM); then sends each object-method (OBM) to the second electronic device (DV2) for recording in the second memory (MR2). During an interpretation of the interpretable code of the application (APP1), the first device (DV1) identifies the method-objects (OBM1) invoked and then recovers from the second memory (MR2) each method-object (OBM) invoked which is not already stored in the first memory (MR1), to allow access to it by the first electronic device (DV1). Figure for the abstract: Fig. 1.
Description
L'invention se rapporte au domaine de la gestion de la mémoire dans des dispositifs électroniques et vise plus particulièrement à optimiser l’utilisation de l’espace mémoire dans une mémoire volatile d’un dispositif électronique.The invention relates to the field of memory management in electronic devices and more particularly aims to optimize the use of memory space in a volatile memory of an electronic device.
De façon connue, lorsqu’un élément sécurisé (ES) est intégré ou embarqué dans un dispositif électronique hôte, tel qu’un SOC (pour « System on Chip ») par exemple, il est nécessaire de charger des applications dans l’élément sécurisé pour les exécuter. Pour ce faire, l’élément sécurisé comporte généralement une mémoire volatile (RAM) interne apte à charger le code exécutable et les données d’une application à exécuter.In a known manner, when a secure element (ES) is integrated or embedded in a host electronic device, such as a SOC (for “System on Chip”) for example, it is necessary to load applications into the secure element to perform them. To do this, the secure element generally includes an internal volatile memory (RAM) capable of loading the executable code and the data of an application to be executed.
Un tel élément sécurisé peut être, par exemple, un modem ou une carte mère, ou plus généralement, une unité de traitement indépendante configurée pour coopérer de façon sécurisée avec un dispositif électronique hôte, dans lequel est intégré ou embarqué l’élément sécurisé.Such a secure element can be, for example, a modem or a motherboard, or more generally, an independent processing unit configured to cooperate in a secure manner with a host electronic device, in which the secure element is integrated or embedded.
La mémoire volatile de l’élément sécurisé est généralement de taille relativement réduite, ce qui limite la taille et le nombre des applications que l’on peut exécuter dans l’élément sécurisé.The volatile memory of the secure element is generally of relatively small size, which limits the size and the number of applications that can be executed in the secure element.
Le dispositif électronique hôte peut également comporter une mémoire non volatile (MNV), tel qu’une mémoire non volatile réinscriptible par exemple. Cette mémoire non volatile permet de conserver en mémoire des applications susceptibles d’être invoquées si besoin par l’élément sécurisé, c’est-à-dire le code exécutable et les données de ces applications.The host electronic device may also comprise a non-volatile memory (NVM), such as a rewritable non-volatile memory for example. This non-volatile memory makes it possible to store in memory applications likely to be invoked if necessary by the secure element, i.e. the executable code and the data of these applications.
L’élément sécurisé doit alors accéder à certaines données présentes dans la mémoire non volatile du dispositif hôte afin que ces données puissent être récupérées et chargées dans la mémoire volatile de l’élément sécurisé. L’accès à de telles données dans la mémoire non volatile du dispositif hôte est toutefois coûteux en temps et en ressources, ce qui limite les performances générales du système, en particulier lorsque de nombreux accès en lecture ou écriture sont nécessaires dans la mémoire non volatile du dispositif hôte.The secure element must then access certain data present in the non-volatile memory of the host device so that this data can be retrieved and loaded into the volatile memory of the secure element. Accessing such data in the non-volatile memory of the host device, however, is time-consuming and resource-intensive, which limits overall system performance, especially when many read or write accesses are required to the non-volatile memory. of the host device.
De tels problèmes de gestion d’une mémoire volatile se posent notamment dans les systèmes dits bytecode-compilés, c’est-à-dire dans lesquels le code source des applications est compilé ou traduit dans une représentation intermédiaire, à savoir un code interprétable orienté objet que l’on appelle couramment le « bytecode ».Such volatile memory management problems arise in particular in so-called bytecode-compiled systems, that is to say in which the source code of the applications is compiled or translated into an intermediate representation, namely an interpretable code oriented object commonly referred to as "bytecode".
L’invocation de codes exécutables de type bytecode depuis une mémoire non volatile vers une mémoire volatile, notamment vers la RAM d’un élément sécurisé embarqué dans un dispositif hôte comme indiqué ci-dessus, pose des problèmes de performance en raison du temps et des ressources nécessaires pour l’accès dans la mémoire non volatile et l’enregistrement dans la RAM.The invocation of executable codes of the bytecode type from a non-volatile memory to a volatile memory, in particular to the RAM of a secure element embedded in a host device as indicated above, poses performance problems due to the time and resources needed for accessing non-volatile memory and saving to RAM.
Un besoin existe par conséquent pour une solution permettant un accès plus efficace à des codes interprétables orientés objet et à des données dans un système comportant une mémoire volatile de taille limitée et une mémoire non volatile capable de stocker des applications. En particulier, des accès en lecture et écriture plus rapides et moins coûteux en ressources sont souhaitables, pour un dispositif électronique (tel qu’un élément sécurisé par exemple) accédant à une mémoire non volatile située hors de ce dispositif électronique. Ce besoin existe notamment pour les systèmes exécutant des applications en langage interprété orienté objet (de type bytecode), tel que le bytecode Java ou Java Card par exemple.A need therefore exists for a solution allowing more efficient access to interpretable object-oriented codes and to data in a system comprising a volatile memory of limited size and a non-volatile memory capable of storing applications. In particular, faster and less resource-intensive read and write accesses are desirable for an electronic device (such as a secure element for example) accessing a non-volatile memory located outside of this electronic device. This need exists in particular for systems executing applications in object-oriented interpreted language (of bytecode type), such as Java or Java Card bytecode for example.
De manière générale, il est souhaitable d’améliorer l’utilisation de l’espace mémoire dans une mémoire volatile et de faciliter les accès à du code interprétable orienté objet qui est stocké dans une mémoire non volatile, dont l’accès en lecture et écriture est couteux en ressources.
Objet et résumé de l’invention Generally, it is desirable to improve memory space utilization in volatile memory and to facilitate accesses to interpretable object-oriented code that is stored in non-volatile memory, including read and write access is resource intensive.
Subject matter and summary of the invention
A cet effet, la présente invention concerne un procédé (dit aussi procédé de traitement), mis en œuvre par un premier système comportant un premier dispositif électronique comportant une première mémoire, ledit premier dispositif électronique coopérant avec un deuxième dispositif électronique comportant une deuxième mémoire, le procédé comprenant :
une étape de chargement initial (B8) comprenant :
- acquisition (B10) d’une application (APP1) comportant du code interprétable orienté objet, définissant une pluralité de méthodes (MT) exécutables ;
- génération (B12) dans la première mémoire, pour chaque méthode du code interprétable, d’un objet distinct (OBM) dit objet-méthode ;
une étape d’envoi (B15) de chaque objet-méthode (OBM) au deuxième dispositif électronique (DV2) pour enregistrement dans la deuxième mémoire (MR2) ;
une étape d’interprétation (B18) comprenant : - interprétation (B19) du code interprétable de l’application (APP1) ;
- identification (B20), à partir de ladite interprétation, d’au moins un objet-méthode (OBM1) invoqué dans le code interprétable ; et
une étape d’allocation (B26) dans la première mémoire, pour chaque objet-méthode (OBM) invoqué qui n’est pas stockée dans la première mémoire (MR1), comprenant : - récupération (B28), depuis la deuxième mémoire (MR2), dudit objet-méthode ; et
- enregistrement (B30), dans la première mémoire (MR1), dudit objet-méthode récupéré depuis la deuxième mémoire, pour en permettre un accès par le premier dispositif électronique.
an initial loading step (B8) comprising:
- acquisition (B10) of an application (APP1) comprising interpretable object-oriented code, defining a plurality of executable methods (MT);
- generation (B12) in the first memory, for each method of the interpretable code, of a distinct object (OBM) called object-method;
a step of sending (B15) each object-method (OBM) to the second electronic device (DV2) for recording in the second memory (MR2);
an interpretation step (B18) comprising: - interpretation (B19) of the interpretable code of the application (APP1);
- identification (B20), from said interpretation, of at least one object-method (OBM1) invoked in the interpretable code; And
an allocation step (B26) in the first memory, for each object-method (OBM) invoked which is not stored in the first memory (MR1), comprising: - retrieval (B28), from the second memory (MR2), of said object-method; And
- recording (B30), in the first memory (MR1), of said object-method retrieved from the second memory, to allow access to it by the first electronic device.
L’invention offre ainsi une gestion avantageuse de l’espace mémoire de la première mémoire, par exemple de type volatile, dans la mesure où le code exécutable peut être récupéré sous forme d’objet-méthode depuis la deuxième mémoire (par exemple de type non volatile) et chargé quand cela est nécessaire dans la première mémoire (par exemple de type volatile). Le code interprétable orienté objet d’une application peut ainsi être chargé dans la première mémoire même lorsque celle-ci présente une taille réduite ne permettant pas d’y charger toute l’application en même temps ou même tout une classe.The invention thus offers an advantageous management of the memory space of the first memory, for example of the volatile type, insofar as the executable code can be recovered in the form of an object-method from the second memory (for example of the type non-volatile) and loaded when necessary into the first memory (for example of the volatile type). The interpretable object-oriented code of an application can thus be loaded into the first memory even when the latter has a small size that does not allow the entire application to be loaded there at the same time or even an entire class.
L’accès au code interprétable orienté objet est facilité car le premier dispositif DV1 peut accéder aux objets-méthodes directement dans sa mémoire volatile s’ils sont disponibles ou, à défaut, peut récupérer ceux-ci depuis la mémoire du deuxième dispositif DV2.Access to the interpretable object-oriented code is facilitated because the first device DV1 can access the object-methods directly in its volatile memory if they are available or, failing that, can retrieve them from the memory of the second device DV2.
L’invention permet en particulier de limiter le pic de consommation en mémoire volatile dans le premier dispositif DV1 lorsque l’application APP1 est chargée dans la mémoire MR1. On peut rapatrier les objets-méthodes un par un dans la mémoire MR1 lorsque ceux-ci sont invoqués à l’exécution de l’application APP1. On évite notamment le rapatriement d’un ensemble de méthodes dans la mémoire volatile, comme par exemple le chargement de toutes les méthodes d’une classe (class loading), comme cela peut être nécessaire dans les solutions conventionnelles.The invention makes it possible in particular to limit the peak consumption of volatile memory in the first device DV1 when the application APP1 is loaded into the memory MR1. The object-methods can be repatriated one by one in the memory MR1 when they are invoked during the execution of the application APP1. In particular, the repatriation of a set of methods in the volatile memory is avoided, such as for example the loading of all the methods of a class ( class loading ), as may be necessary in conventional solutions.
L’invention permet de faciliter l’exécution d’une application en langage interprété orienté objet. Si la mémoire volatile ne contient pas l’objet souhaité, le premier dispositif le copie depuis sa version disponible dans la deuxième mémoire du deuxième dispositif. Les accès subséquents sont ensuite réalisés depuis la version de l’objet conservée dans la première mémoire du premier dispositif.The invention facilitates the execution of an application in object-oriented interpreted language. If the volatile memory does not contain the desired object, the first device copies it from its available version into the second memory of the second device. Subsequent accesses are then performed from the version of the object stored in the first memory of the first device.
Selon un mode de réalisation particulier, lors de l’étape de chargement initial, le premier système reçoit une application qui est chargée dans la deuxième mémoire du deuxième dispositif électronique ou dans une mémoire volatile du deuxième dispositif électronique.According to a particular embodiment, during the initial loading step, the first system receives an application which is loaded into the second memory of the second electronic device or into a volatile memory of the second electronic device.
Selon un mode de réalisation particulier, l’étape de chargement initial comprend, pour chaque méthode du code interprétable :
- chargement dans la première mémoire de ladite méthode du code interprétable ; et
- génération dans la première mémoire d’un objet-méthode correspondant, sous la forme d’une structure de données prédéterminée comprenant un entête et un corps d’objet ;
dans lequel le corps d’objet comprend du code interprétable orienté objet définissant l’objet-méthode.
- loading into the first memory of said method of the interpretable code; And
- generation in the first memory of a corresponding method object, in the form of a predetermined data structure comprising a header and an object body;
wherein the object body includes interpretable object-oriented code defining the object-method.
Selon un mode de réalisation particulier, l’étape de chargement initial est réalisée à partir d’une première partie et d’un deuxième partie qui sont compris dans l’application chargée dans le deuxième dispositif électronique lors de ladite étape de chargement initial,
la première partie comportant une concaténation de la pluralité de méthodes de l’application, et
la deuxième partie comportant des indications de position indiquant une position respective de chaque méthode dans la première partie.According to a particular embodiment, the initial loading step is carried out from a first part and a second part which are included in the application loaded into the second electronic device during said initial loading step,
the first part comprising a concatenation of the plurality of methods of the application, and
the second part comprising position indications indicating a respective position of each method in the first part.
Selon un mode de réalisation particulier, le procédé comprend, lors de l’étape d’interprétation :
vérification, pour chaque objet-méthode invoqué, de si ledit objet-méthode est stocké dans la première mémoire,
le premier dispositif électronique procédant à ladite allocation pour l’objet-méthode invoqué seulement si ledit objet-méthode n’est pas stocké dans la mémoire volatile.According to a particular embodiment, the method comprises, during the interpretation step:
verification, for each object-method invoked, of whether said object-method is stored in the first memory,
the first electronic device performing said allocation for the method object invoked only if said method object is not stored in the volatile memory.
Selon un mode de réalisation particulier, lors de l’étape d’interprétation, le premier dispositif électronique détermine, pour chaque objet-méthode invoqué, que ledit objet-méthode est stocké dans la première mémoire s’il détecte des données de localisation, enregistrées dans la première mémoire, comprenant une première référence d’objet indiquant où l’objet-méthode est enregistré dans la première mémoire et une deuxième référence d’objet indiquant où l’objet-méthode est enregistré dans la deuxième mémoire dans le deuxième dispositif électronique.According to a particular embodiment, during the interpretation step, the first electronic device determines, for each object-method invoked, that said object-method is stored in the first memory if it detects location data, recorded in the first memory, comprising a first object reference indicating where the method object is stored in the first memory and a second object reference indicating where the method object is stored in the second memory in the second electronic device .
Selon un mode de réalisation particulier, lors de l’étape d’interprétation, le premier dispositif électronique détermine, pour chaque objet-méthode invoqué, que ledit objet-méthode n’est pas stocké dans la mémoire volatile s’il ne détecte pas de dites données de localisation dans la mémoire volatile.According to a particular embodiment, during the interpretation step, the first electronic device determines, for each object-method invoked, that said object-method is not stored in the volatile memory if it does not detect any say location data in volatile memory.
Selon un mode de réalisation particulier, pour chaque objet-méthode récupéré et enregistré dans la mémoire volatile lors de ladite étape d’allocation, le premier dispositif enregistre, dans la mémoire volatile, des dites données de localisation comprenant une première référence d’objet indiquant où l’objet-méthode est enregistré dans la mémoire volatile et une deuxième référence d’objet indiquant où l’objet-méthode est enregistré en mémoire dans le deuxième dispositif électronique.According to a particular embodiment, for each object-method retrieved and recorded in the volatile memory during said allocation step, the first device records, in the volatile memory, said location data comprising a first object reference indicating where the method object is stored in the volatile memory and a second object reference indicating where the method object is stored in memory in the second electronic device.
Selon un mode de réalisation particulier, les données de localisation de chaque objet-méthode stocké dans la mémoire volatile sont enregistrées, dans la mémoire volatile, en tant qu’objet de données, dit objet de localisation, propre audit objet-méthode.According to a particular embodiment, the location data of each object-method stored in the volatile memory are recorded, in the volatile memory, as a data object, called location object, specific to said object-method.
Selon un mode de réalisation particulier, chaque objet-méthode et chaque objet de localisation sont enregistrés ensemble dans un même conteneur mémoire dans la mémoire volatile.According to a particular embodiment, each method object and each location object are saved together in the same memory container in the volatile memory.
Selon un mode de réalisation particulier, sur détection lors de ladite étape d’allocation que la mémoire volatile ne dispose pas d’un espace mémoire suffisant pour enregistrer chaque objet-méthode invoqué, le premier dispositif électronique réalise un mécanisme d’éviction au cours duquel il supprime au moins un autre objet déjà stocké dans la première mémoire pour libérer un espace mémoire suffisant pour enregistrer chaque objet-méthode invoqué,
dans lequel pour chaque objet-méthode supprimé de la mémoire volatile par le mécanisme d’éviction, le premier dispositif électronique supprime les données de localisation dudit objet-méthode.According to a particular embodiment, upon detection during said allocation step that the volatile memory does not have sufficient memory space to save each object-method invoked, the first electronic device performs an eviction mechanism during which it deletes at least one other object already stored in the first memory to free sufficient memory space to save each object-method invoked,
wherein for each object-method deleted from the volatile memory by the eviction mechanism, the first electronic device deletes the location data of said object-method.
Selon un mode de réalisation particulier, ledit procédé comprend une opération d’écriture comprenant :
modification d’un objet-méthode stocké dans la première mémoire ;
détermination de la position où est enregistré l’objet-méthode dans la deuxième mémoire ; et
envoi d’une commande d’écriture spécifiant ladite modification dudit objet-méthode pour modifier ledit objet-méthode stockée à ladite localisation dans la mémoire non volatile.According to a particular embodiment, said method comprises a write operation comprising:
modification of a method object stored in the first memory;
determination of the position where the object-method is recorded in the second memory; And
sending a write command specifying said modification of said method object to modify said method object stored at said location in the non-volatile memory.
Selon un mode de réalisation particulier, lors de ladite récupération, le premier dispositif électronique envoie au deuxième dispositif électronique au moins une commande de lecture spécifiant :
ledit objet-méthode, dit objet-méthode récupéré, qui est invoqué et qui n’est pas stocké dans la mémoire volatile; et
une adresse de destination respective à laquelle ledit objet-méthode récupéré doit être enregistré dans une mémoire intermédiaire à laquelle le premier dispositif électronique a accès.According to a particular embodiment, during said recovery, the first electronic device sends to the second electronic device at least one read command specifying:
said object-method, called retrieved object-method, which is invoked and which is not stored in the volatile memory; And
a respective destination address at which said recovered object-method must be recorded in an intermediate memory to which the first electronic device has access.
Selon un mode de réalisation particulier, le procédé comprend en outre une exécution dudit au moins un objet-méthode invoqué, stocké dans la mémoire volatile.According to a particular embodiment, the method also comprises an execution of said at least one invoked object-method, stored in the volatile memory.
Selon un mode de réalisation particulier, le procédé comprend, suite à ladite exécution, une détection ultérieure que ledit au moins un objet-méthode invoqué est à nouveau invoqué en association avec ladite application, et une opération de lecture de la mémoire volatile pour exécuter ledit au moins un objet-méthode invoqué, stocké dans la mémoire volatile.According to a particular embodiment, the method comprises, following said execution, a subsequent detection that said at least one invoked object-method is again invoked in association with said application, and a volatile memory reading operation to execute said at least one invoked object-method, stored in volatile memory.
Selon un mode de réalisation particulier, le premier dispositif électronique comprend une machine virtuelle apte à interpréter le code interprétable de l’application à partir d’une pile d’exécution, le procédé comprenant :
sur détection d’une référence d’un objet-méthode sur la pile d’exécution, exécution d’une action sécuritaire pour bloquer son accès à une application.
dans lequel le premier dispositif électronique détecte que l’objet référencé dans la pile d’exécution est un objet-méthode à partir de la donnée de type contenue dans les métadonnées de l’objet-méthode.According to a particular embodiment, the first electronic device comprises a virtual machine capable of interpreting the interpretable code of the application from an execution stack, the method comprising:
on detection of a reference of a method object on the execution stack, execution of a security action to block its access to an application.
in which the first electronic device detects that the object referenced in the execution stack is a method object from the type data contained in the metadata of the method object.
Selon un mode de réalisation particulier, le premier dispositif électronique et le deuxième dispositif électronique forment un seul et même dispositif électronique ou sont deux dispositifs électroniques distincts.According to a particular embodiment, the first electronic device and the second electronic device form one and the same electronic device or are two distinct electronic devices.
Dans un mode particulier de réalisation, les différentes étapes du procédé sont déterminées par des instructions de programmes d’ordinateurs.In a particular embodiment, the different steps of the method are determined by computer program instructions.
En conséquence, l’invention vise aussi un programme d’ordinateur sur un support d’informations, ce programme étant susceptible d’être mis en œuvre dans un dispositif électronique tel qu’une carte à puce ou un ordinateur, ce programme comportant des instructions adaptées à la mise en œuvre des étapes d'un procédé tel que défini dans ce document.Consequently, the invention also relates to a computer program on an information medium, this program being capable of being implemented in an electronic device such as a chip card or a computer, this program comprising instructions adapted to the implementation of the steps of a method as defined in this document.
L’invention vise aussi un support d’enregistrement (ou support d'informations) lisible par un ordinateur, et comportant des instructions d'un programme d'ordinateur tel que mentionné ci-dessus.The invention also relates to a recording medium (or information medium) readable by a computer, and comprising instructions of a computer program as mentioned above.
A noter que les programmes d’ordinateur mentionnés dans le présent document peuvent utiliser n’importe quel langage de programmation, et être sous la forme de code source, code objet, ou de code intermédiaire entre code source et code objet, tel que dans une forme partiellement compilée, ou dans n’importe quelle autre forme souhaitable.Note that the computer programs mentioned in this document may use any programming language, and be in the form of source code, object code, or intermediate code between source code and object code, such as in a partially compiled form, or in any other desirable form.
De plus, les supports d’enregistrement mentionnés ci-avant peuvent être n'importe quelle entité ou dispositif capable de stocker le programme. Par exemple, le support peut comporter un moyen de stockage, tel qu'une ROM, par exemple un CD ROM ou une ROM de circuit microélectronique, ou encore un moyen d'enregistrement magnétique, par exemple une disquette (floppy disc) ou un disque dur.Additionally, the aforementioned recording media can be any entity or device capable of storing the program. For example, the medium may include a storage medium, such as a ROM, for example a CD ROM or a microelectronic circuit ROM, or even a magnetic recording medium, for example a floppy disk or a disk. hard.
D'autre part, les supports d’enregistrement peuvent correspondre à un support transmissible tel qu'un signal électrique ou optique, qui peut être acheminé via un câble électrique ou optique, par radio ou par d'autres moyens. Le programme selon l'invention peut être en particulier téléchargé sur un réseau de type Internet.On the other hand, the recording media can correspond to a transmissible medium such as an electrical or optical signal, which can be conveyed via an electrical or optical cable, by radio or by other means. The program according to the invention can in particular be downloaded from an Internet-type network.
Alternativement, les supports d’enregistrement peuvent correspondre à un circuit intégré dans lequel le programme est incorporé, le circuit étant adapté pour exécuter ou pour être utilisé dans l'exécution du procédé en question.Alternatively, the recording media may correspond to an integrated circuit in which the program is incorporated, the circuit being adapted to execute or to be used in the execution of the process in question.
L’invention vise également le premier dispositif électronique en tant que tel.The invention also relates to the first electronic device as such.
En particulier, l’invention vise un système, dit premier système, comprenant un premier dispositif électronique comportant une première mémoire, et configuré pour coopérer avec un deuxième dispositif électronique comportant une deuxième mémoire,
le premier système comprenant, pour réaliser un chargement initial :
un module d’acquisition configuré pour acquérir une application comportant du code interprétable orienté objet, définissant une pluralité de méthodes exécutables ;
un module de génération configuré pour générer dans la première mémoire, pour chaque méthode du code interprétable, un objet distinct dit objet-méthode ;
un module d’envoi configuré pour envoyer chaque objet-méthode au deuxième dispositif pour enregistrement dans la mémoire non volatile ;
le premier dispositif électronique comprenant en outre, pour réaliser une interprétation :
un module d’interprétation configuré pour interpréter le code interprétable de l’application ;
un module d’identification configuré pour identifier, à partir d’une interprétation du code interprétable réalisée par le module d’interprétation, au moins un objet-méthode invoqué dans le code interprétable ;
un module de traitement configuré pour réaliser une allocation dans la première mémoire, pour chaque objet-méthode invoqué qui n’est pas stocké dans la mémoire volatile, de sorte à :
récupérer, depuis la deuxième mémoire, ledit objet-méthode ; et
enregistrer, dans la première mémoire, ledit objet-méthode récupéré depuis la deuxième mémoire, pour en permettre un accès par le premier dispositif électronique.In particular, the invention relates to a system, called a first system, comprising a first electronic device comprising a first memory, and configured to cooperate with a second electronic device comprising a second memory,
the first system comprising, to perform an initial loading:
an acquisition module configured to acquire an application comprising interpretable object-oriented code, defining a plurality of executable methods;
a generation module configured to generate in the first memory, for each method of the interpretable code, a distinct object called object-method;
a sending module configured to send each method object to the second device for storage in the non-volatile memory;
the first electronic device further comprising, to perform an interpretation:
an interpreter module configured to interpret the interpretable code of the application;
an identification module configured to identify, from an interpretation of the interpretable code performed by the interpretation module, at least one object-method invoked in the interpretable code;
a processing module configured to perform an allocation in the first memory, for each method object invoked which is not stored in the volatile memory, so as to:
retrieving, from the second memory, said object-method; And
recording, in the first memory, said object-method retrieved from the second memory, to allow access thereto by the first electronic device.
Selon un mode de réalisation, l'invention est mise en œuvre au moyen de composants logiciels et/ou matériels. Dans cette optique, le terme « module » peut correspondre dans ce document aussi bien à un composant logiciel, qu'à un composant matériel ou à un ensemble de composants matériels et logiciels.According to one embodiment, the invention is implemented by means of software and/or hardware components. From this perspective, the term "module" may correspond in this document to a software component, a hardware component or a set of hardware and software components.
Un composant logiciel correspond à un ou plusieurs programmes d'ordinateur, un ou plusieurs sous-programmes d'un programme, ou de manière plus générale à tout élément d'un programme ou d'un logiciel apte à mettre en œuvre une fonction ou un ensemble de fonctions, selon ce qui est décrit ci-dessous pour le module concerné. De la même manière, un composant matériel correspond à tout élément d'un ensemble matériel (ou hardware) apte à mettre en œuvre une fonction ou un ensemble de fonctions, selon ce qui est décrit ci-dessous pour le module concerné.A software component corresponds to one or more computer programs, one or more sub-programs of a program, or more generally to any element of a program or software capable of implementing a function or a set of functions, as described below for the module concerned. In the same way, a hardware component corresponds to any element of a hardware assembly (or hardware) able to implement a function or a set of functions, according to what is described below for the module concerned.
A noter que les différents modes de réalisation mentionnés ci-avant en relation avec le procédé de traitement de l’invention ainsi que les avantages associés s’appliquent de façon analogue au premier dispositif électronique de l’invention.It should be noted that the various embodiments mentioned above in relation to the processing method of the invention as well as the associated advantages apply analogously to the first electronic device of the invention.
Pour chaque étape du procédé de l’invention décrit dans ce document, le dispositif électronique de l’invention peut comprendre un module correspondant configuré pour réaliser ladite étape.For each step of the method of the invention described in this document, the electronic device of the invention may comprise a corresponding module configured to perform said step.
L’invention concerne également un système, dit deuxième système, comprenant un premier système comme déjà défini ci-avant ; et ledit deuxième dispositif électronique, comportant une deuxième mémoire, étant configuré pour coopérer avec le premier système.The invention also relates to a system, called second system, comprising a first system as already defined above; and said second electronic device, comprising a second memory, being configured to cooperate with the first system.
D’autres caractéristiques et avantages de la présente invention ressortiront de la description faite ci-dessous, en référence aux dessins annexés qui en illustrent des exemples de réalisation dépourvus de tout caractère limitatif. Sur les figures:Other characteristics and advantages of the present invention will emerge from the description given below, with reference to the appended drawings which illustrate examples of embodiments without any limiting character. In the figures:
[Fig. 8-9] les figures 8 et 9 représentent, sous forme de diagrammes, les étapes de mécanisme d’éviction selon des modes de réalisation particuliers de l'invention ;[Fig. 8-9] FIGS. 8 and 9 represent, in the form of diagrams, the steps of the eviction mechanism according to particular embodiments of the invention;
la figure 11 représente, sous forme d’un diagramme, un mécanisme de sécurisation selon un mode de réalisation particulier de l’invention.
Description détaillée de plusieurs modes de réalisation FIG. 11 represents, in the form of a diagram, a securing mechanism according to a particular embodiment of the invention.
Detailed description of several embodiments
Comme indiqué précédemment, l’invention vise à améliorer l’utilisation de l’espace mémoire dans une mémoire volatile d’un dispositif électronique. L’invention vise notamment à faciliter l’accès à du code interprétable orienté objet qui est stocké dans une mémoire, telle qu’une mémoire non volatile dont les accès en lecture et écriture sont couteux en ressources.As indicated previously, the invention aims to improve the use of the memory space in a volatile memory of an electronic device. The invention aims in particular to facilitate access to interpretable object-oriented code which is stored in a memory, such as a non-volatile memory whose read and write accesses are expensive in terms of resources.
Les problèmes de gestion d’une mémoire volatile tels que décrits précédemment se posent plus particulièrement dans les systèmes dits bytecode-compilés, c’est-à-dire dans lesquels le code source des applications est compilé ou traduit en code interprétable orienté objet que l’on appelle couramment du « bytecode ».The problems of management of a volatile memory as described above arise more particularly in so-called bytecode-compiled systems, that is to say in which the source code of the applications is compiled or translated into interpretable object-oriented code that the commonly called "bytecode".
Un code interprétable (ou exécutable) orienté objet est généralement conçu initialement en code source puis converti par compilation en bytecode. De façon bien connue pour l’homme du métier, le bytecode est une représentation intermédiaire qui n’est pas directement exécutable par un processeur et doit donc être interprétée ou compilée par un logiciel spécifique, appelé « machine virtuelle », pour permettre l’exécution de l’application par un processeur. Cette forme de code exécutable présente notamment l’avantage d’être portable entre différentes architectures.An object-oriented interpretable (or executable) code is generally designed initially in source code and then converted by compilation into bytecode. In a manner well known to those skilled in the art, the bytecode is an intermediate representation which is not directly executable by a processor and must therefore be interpreted or compiled by specific software, called a "virtual machine", to allow the execution of the application by a processor. This form of executable code has the particular advantage of being portable between different architectures.
Comme bien connu de l’homme du métier, un objet dans le contexte d’un langage interprété orienté objet constitue une instance d’une classe et une classe est un descripteur programmatique regroupant un ensemble d’attributs et de méthodes. En outre, une méthode dans un langage interprété orienté objet est une routine membre d’une classe. Il peut s’agir aussi bien de méthodes d’instance que de méthodes statiques. Ces éléments étant bien connus de l’homme du métier, ils ne sont pas décrits plus en détail dans ce document.As well known to those skilled in the art, an object in the context of an interpreted object-oriented language constitutes an instance of a class and a class is a programmatic descriptor grouping together a set of attributes and methods. Also, a method in an interpreted object-oriented language is a member routine of a class. They can be both instance methods and static methods. These elements being well known to those skilled in the art, they are not described in more detail in this document.
Aujourd’hui, divers types de langages interprétés orientés objet peuvent être compilés en bytecode avant d’être exécutés par un interpréteur (ou compilé par un compilateur). Ainsi, une application Java ou Java Card est habituellement transmise sous forme de bytecode à un dispositif cible tel qu’un élément sécurisé comme évoqué ci-avant. Cet élément sécurisé réalise une compilation ou interprétation, éventuellement à la volée, pour traduire le bytecode en code machine avant exécution. Pour ce faire, l’élément sécurisé met en œuvre un logiciel spécifique appelé « machine virtuelle », bien connu de l’homme du métier.Today, various types of interpreted object-oriented languages can be compiled to bytecode before being executed by an interpreter (or compiled by a compiler). Thus, a Java or Java Card application is usually transmitted in the form of bytecode to a target device such as a secure element as mentioned above. This secure element carries out a compilation or interpretation, possibly on the fly, to translate the bytecode into machine code before execution. To do this, the secure element implements specific software called “virtual machine”, well known to those skilled in the art.
Comme déjà indiqué, le chargement de codes interprétables de type bytecode depuis une mémoire non volatile dans une mémoire volatile, notamment dans la RAM d’un élément sécurisé embarqué dans un dispositif hôte, pose des problèmes de performance en raison du temps et des ressources nécessaires pour l’accès dans la mémoire non volatile et le chargement dans la RAM.As already indicated, the loading of interpretable codes of the bytecode type from a non-volatile memory into a volatile memory, in particular into the RAM of a secure element embedded in a host device, poses performance problems due to the time and resources required. for accessing non-volatile memory and loading into RAM.
A cet effet, l’invention, selon différents modes de réalisation, vise un procédé de traitement mis en œuvre par un premier système comprenant un premier dispositif électronique comportant une première mémoire (une mémoire volatile par exemple), ce premier système coopérant avec un deuxième dispositif électronique comportant une deuxième mémoire (une mémoire non volatile par exemple). Pour permettre l’accès par le premier dispositif électronique à un code interprétable orienté objet, le procédé prévoit en particulier la génération, pour chaque méthode exécutable défini dans le code interprétable orienté objet, d’un objet distinct dit « objet-méthode » qui est stocké en mémoire dans le deuxième dispositif. Ces objets-méthodes sont accessibles si besoin par le premier dispositif et peuvent être chargés dans la première mémoire de ce dernier. Lorsque le premier dispositif électronique interprète le code interprétable orienté objet et identifie des objets-méthodes invoqués dans ce code, il peut accéder directement à ces objets-méthodes s’ils sont stockés dans sa mémoire volatile ou, à défaut, il peut charger ces objets-méthodes depuis la deuxième mémoire du deuxième dispositif (ou éventuellement depuis une autre mémoire de ce dernier) dans sa première mémoire.To this end, the invention, according to various embodiments, relates to a processing method implemented by a first system comprising a first electronic device comprising a first memory (a volatile memory for example), this first system cooperating with a second electronic device comprising a second memory (a non-volatile memory for example). To allow access by the first electronic device to an interpretable object-oriented code, the method provides in particular the generation, for each executable method defined in the interpretable object-oriented code, of a distinct object called "object-method" which is stored in memory in the second device. These object-methods are accessible if necessary by the first device and can be loaded into the first memory of the latter. When the first electronic device interprets the interpretable object-oriented code and identifies object-methods invoked in this code, it can directly access these object-methods if they are stored in its volatile memory or, failing that, it can load these objects -methods from the second memory of the second device (or possibly from another memory of the latter) in its first memory.
L’invention offre ainsi une gestion avantageuse de l’espace mémoire de la première mémoire, par exemple de type volatile, dans la mesure où le code exécutable peut être récupéré sous forme d’objet-méthode depuis la deuxième mémoire (par exemple de type non volatile) et chargé quand cela est nécessaire dans la première mémoire (par exemple de type volatile). Le code interprétable orienté objet d’une application peut ainsi être chargé dans la première mémoire même lorsque celle-ci présente une taille réduite ne permettant pas d’y charger toute l’application en même temps ou même tout une classe.The invention thus offers an advantageous management of the memory space of the first memory, for example of the volatile type, insofar as the executable code can be recovered in the form of an object-method from the second memory (for example of the type non-volatile) and loaded when necessary into the first memory (for example of the volatile type). The interpretable object-oriented code of an application can thus be loaded into the first memory even when the latter has a small size that does not allow the entire application to be loaded there at the same time or even an entire class.
Le procédé, selon des modes de réalisation particuliers, comprend une étape de chargement initial au cours de laquelle le premier dispositif électronique : fait l’acquisition d’une application comportant du code interprétable orienté objet, définissant une pluralité de méthodes exécutables ; génère dans la première mémoire, pour chaque méthode du code interprétable, un objet distinct dit objet-méthode. Le procédé comprend en outre une étape d’envoi au cours de laquelle le premier dispositif électronique envoie chaque objet-méthode au deuxième dispositif électronique pour enregistrement dans la deuxième mémoire ; puis une étape d’interprétation ultérieure. Au cours de cette étape d’interprétation, le premier dispositif électronique : interprète du code interprétable de l’application ; et identifie, à partir de ladite interprétation, au moins un objet-méthode invoqué dans le code interprétable. Le procédé comprend en outre, suite à l’étape d’interprétation, une étape d’allocation réalisée par le premier dispositif électronique pour chaque objet-méthode invoqué qui n’est pas stocké dans la première mémoire, comprenant : une récupération depuis la deuxième mémoire dudit objet-méthode ; et un enregistrement dans la première mémoire dudit objet-méthode récupéré depuis la deuxième mémoire, pour en permettre un accès par le premier dispositif électronique.The method, according to particular embodiments, comprises an initial loading step during which the first electronic device: acquires an application comprising interpretable object-oriented code, defining a plurality of executable methods; generates in the first memory, for each method of the interpretable code, a distinct object called object-method. The method further comprises a sending step during which the first electronic device sends each method object to the second electronic device for recording in the second memory; then a subsequent stage of interpretation. During this interpretation step, the first electronic device: interprets interpretable code of the application; and identifies, from said interpretation, at least one object-method invoked in the interpretable code. The method further comprises, following the interpretation step, an allocation step performed by the first electronic device for each invoked object-method which is not stored in the first memory, comprising: a retrieval from the second memory of said object-method; and a recording in the first memory of said object-method retrieved from the second memory, to allow access to it by the first electronic device.
L’invention vise également le premier dispositif électronique, un système comprenant les premiers et deuxièmes dispositifs électroniques, ainsi qu’un programme d’ordinateur pour l’exécution du procédé de l’invention et un support d’enregistrement comportant un tel programme d’ordinateur.The invention also relates to the first electronic device, a system comprising the first and second electronic devices, as well as a computer program for the execution of the method of the invention and a recording medium comprising such a program for computer.
D’autres aspects et avantages de la présente invention ressortiront des exemples de réalisation décrits ci-dessous en référence aux dessins mentionnés ci-avant.Other aspects and advantages of the present invention will emerge from the embodiments described below with reference to the drawings mentioned above.
Dans ce document, des exemples de mise en œuvre de l’invention sont décrits dans le cadre d’un élément sécurisé (ES) coopérant avec un dispositif électronique hôte, tel qu’un SOC (pour « System on Chip ») par exemple, dans lequel l’élément sécurisé est embarqué ou intégré. Des mises en œuvre de l’invention sont toutefois possibles dans d’autres environnements.In this document, examples of implementation of the invention are described in the context of a secure element (SE) cooperating with a host electronic device, such as a SOC (for “System on Chip”) for example, in which the secure element is embedded or integrated. However, implementations of the invention are possible in other environments.
Comme défini par l’organisme de standardisation « GlobalPlatform » bien connu de l’homme du métier, un élément sécurisé (pour « secure element ») est une plateforme matérielle et logicielle configurée pour héberger de façon sécurisée des applications et leurs données sensibles associées (clés cryptographiques, algorithmes…), en conformité avec des règles fixées par une autorité tierce de confiance. Un élément sécurisé fournit un environnement d’exécution sécurisé à des applications. Il peut prendre diverses formes, telles qu’un module UICC (pour « Universal Integrated Circuit Card »), un élément sécurisé embarqué (ou « embedded SE » ou encore « eSIM ») en tant qu’élément discret ou intégré, ou encore une carte microSD. Un module UICC et une carte microSD sont généralement amovibles. Chaque forme d’élément sécurisé est destinée à être utilisée dans des applications bien particulières et doit répondre à des exigences propres au marché concerné.As defined by the "GlobalPlatform" standardization organization well known to those skilled in the art, a secure element (for "secure element") is a hardware and software platform configured to securely host applications and their associated sensitive data ( cryptographic keys, algorithms, etc.), in accordance with rules set by a trusted third-party authority. A secure element provides a secure execution environment for applications. It can take various forms, such as a UICC module (for “Universal Integrated Circuit Card”), an embedded secure element (or “embedded SE” or “eSIM”) as a discrete or integrated element, or even a microSD card. A UICC module and a microSD card are usually removable. Each form of secure element is intended for use in very specific applications and must meet the requirements specific to the market concerned.
Un élément sécurisé peut par exemple être utilisé en téléphonie mobile pour authentifier l’utilisateur d’un terminal de communication auprès d’un réseau mobile auquel il est abonné, ou encore pour mettre en œuvre une application de paiement dans le domaine bancaire.A secure element can for example be used in mobile telephony to authenticate the user of a communication terminal with a mobile network to which he is subscribed, or to implement a payment application in the banking sector.
Toutefois, l’invention ne s’applique pas de manière exclusive aux architectures SE/SOC mais vise de manière plus générale la gestion de l’espace mémoire dans une première mémoire – par exemple une mémoire volatile – d’un premier dispositif électronique afin de permettre à celui-ci un accès rapide et efficace à du code exécutable, et plus particulièrement à du code interprétable orienté objet, qui est stocké et accessible dans une deuxième mémoire, par exemple une mémoire non volatile.However, the invention does not apply exclusively to SE/SOC architectures but aims more generally at the management of the memory space in a first memory – for example a volatile memory – of a first electronic device in order to allow the latter rapid and efficient access to executable code, and more particularly to interpretable object-oriented code, which is stored and accessible in a second memory, for example a non-volatile memory.
L’invention peut s’appliquer dans divers architectures ou systèmes dans lesquels du code interprétable orienté objet doit être chargé dans une première mémoire pour exécuter une application. En particulier, l’invention peut être mise en œuvre dans une carte à puce, dans un terminal de communication ou dans tout autre système approprié comportant une mémoire volatile et une mémoire non volatile.The invention can be applied in various architectures or systems in which interpretable object-oriented code must be loaded into a first memory in order to execute an application. In particular, the invention can be implemented in a smart card, in a communication terminal or in any other appropriate system comprising a volatile memory and a non-volatile memory.
Sauf indications contraires, les éléments communs ou analogues à plusieurs figures portent les mêmes signes de référence et présentent des caractéristiques identiques ou analogues, de sorte que ces éléments communs ne sont généralement pas à nouveau décrits par souci de simplicité.Unless otherwise indicated, the elements common or similar to several figures bear the same reference signs and have identical or similar characteristics, so that these common elements are generally not described again for the sake of simplicity.
Lafigure 1représente un système SY, dit premier système, comportant un premier dispositif électronique DV1 et un deuxième dispositif électronique DV2, selon un mode de réalisation particulier. Les premiers et deuxièmes dispositifs électroniques DV1 et DV2 sont configurés pour coopérer ensemble pour permettre notamment la gestion d’un code exécutable comme décrit ci-après. FIG. 1 represents a system SY, called a first system, comprising a first electronic device DV1 and a second electronic device DV2, according to a particular embodiment. The first and second electronic devices DV1 and DV2 are configured to cooperate together to allow in particular the management of an executable code as described below.
Comme représenté enfigure 1, le premier système SY peut en outre comprendre un troisième dispositif électronique DV3 configuré pour coopérer avec le deuxième dispositif DV2. Dans ce cas, le premier dispositif DV1 et le troisième dispositif DV3 forment ensemble un deuxième système noté SZ. Comme indiqué par la suite, des mises en œuvre de l’invention sans ce troisième disposition DV3 sont toutefois possibles.As represented in FIG. 1 , the first system SY can also comprise a third electronic device DV3 configured to cooperate with the second device DV2. In this case, the first device DV1 and the third device DV3 together form a second system denoted SZ. As indicated below, implementations of the invention without this third arrangement DV3 are however possible.
Dans l’exemple de réalisation considéré ici, le premier dispositif DV1 est un élément sécurisé (SE) comme déjà décrit précédemment, ce dernier étant intégré ou embarqué dans le deuxième dispositif électronique (un SOC par exemple) servant de dispositif hôte. Un tel élément sécurisé peut être, par exemple, embarqué, ou intégré sous forme de brique matérielle, dans un modem ou une puce. Plus généralement, l’élément sécurisé peut être une unité de traitement indépendante, configurée pour coopérer de façon sécurisée avec le dispositif électronique hôte, dans lequel est intégré ou embarqué l’élément sécurisé.In the example embodiment considered here, the first device DV1 is a secure element (SE) as already described above, the latter being integrated or embedded in the second electronic device (a SOC for example) serving as a host device. Such a secure element can be, for example, embedded, or integrated in the form of hardware brick, in a modem or a chip. More generally, the secure element can be an independent processing unit, configured to cooperate in a secure manner with the host electronic device, in which the secure element is integrated or embedded.
Selon l’exemple représenté enfigure 1, le premier dispositif électronique DV1 et le deuxième dispositif électronique DV2 sont donc deux dispositifs électroniques distincts coopérant ensemble. En variante, le premier dispositif électronique DV1 et le deuxième dispositif électronique DV2 forment un seul et même dispositif électronique.According to the example represented in FIG. 1 , the first electronic device DV1 and the second electronic device DV2 are therefore two distinct electronic devices cooperating together. As a variant, the first electronic device DV1 and the second electronic device DV2 form one and the same electronic device.
Le premier dispositif électronique DV1 comprend dans cet exemple un processeur 2, une mémoire volatile MR1 (RAM) et une interface de communication 4 pour communiquer avec le deuxième dispositif électronique DV2.The first electronic device DV1 comprises in this example a processor 2, a volatile memory MR1 (RAM) and a communication interface 4 to communicate with the second electronic device DV2.
La mémoire volatile MR1 constitue une « première mémoire » au sens de l’invention. Cette mémoire est apte à stocker notamment des objets, et plus particulièrement des objets-méthodes OBM et des objets-données OBDT, ainsi que des données de position DP (notées ici DP1 à DP5) et des données de localisation DL (notées ici DL1 à DL5). Ces différents éléments seront décrits plus en détails ultérieurement.The volatile memory MR1 constitutes a “first memory” within the meaning of the invention. This memory is capable of storing in particular objects, and more particularly object-methods OBM and object-data OBDT, as well as position data DP (denoted here DP1 to DP5) and location data DL (denoted here DL1 to DL5). These different elements will be described in more detail later.
Dans ce document, on désigne par « objet-méthode » un objet (au sens d’un langage orienté objet) correspondant à une méthode du code interprétable considéré incluant éventuellement son gestionnaire d’exception, à savoir dans cet exemple, le code interprétable orienté objet défini dans une application APP1. De même, un « objet-donnée » est un objet correspondant à des données de l’application considérée, à savoir APP1 dans cet exemple.In this document, the term “object-method” designates an object (in the sense of an object-oriented language) corresponding to a method of the interpretable code considered possibly including its exception handler, namely in this example, the interpretable code oriented object defined in an application APP1. Similarly, a “data-object” is an object corresponding to data of the application considered, namely APP1 in this example.
La mémoire volatile MR1 constitue un support d’enregistrement (ou support d’informations) conforme à un mode de réalisation particulier, lisible par le premier dispositif électronique DV1, et sur lequel peut être enregistré un programme d’ordinateur PG1 conforme à un mode de réalisation particulier. En variante, ce programme PG1 est stocké dans une mémoire non volatile (non représenté) du premier dispositif DV1. Ce programme d’ordinateur PG1 comporte des instructions pour l’exécution des étapes d’un procédé de traitement qui est décrit ultérieurement selon des modes de réalisation particuliers.The volatile memory MR1 constitutes a recording medium (or information medium) conforming to a particular embodiment, readable by the first electronic device DV1, and on which can be recorded a computer program PG1 conforming to a mode of particular achievement. Alternatively, this program PG1 is stored in a non-volatile memory (not shown) of the first device DV1. This computer program PG1 comprises instructions for the execution of the steps of a processing method which is described later according to particular embodiments.
Selon une variante, la mémoire MR1 est une mémoire non volatile (par exemple une mémoire non volatile réinscriptible). Dans ce cas, le premier dispositif DV1 peut en outre comporter une mémoire volatile (non représentée) qui peut servir de mémoire intermédiaire dans le cadre de l’invention.According to a variant, the memory MR1 is a non-volatile memory (for example a rewritable non-volatile memory). In this case, the first device DV1 can also include a volatile memory (not shown) which can serve as an intermediate memory within the scope of the invention.
Le deuxième dispositif électronique DV2 comprend dans cet exemple un processeur 12, une mémoire non volatile MR2, une interface de communication 14 pour communiquer avec le premier dispositif électronique DV1, et éventuellement une mémoire volatile MR3.The second electronic device DV2 comprises in this example a processor 12, a non-volatile memory MR2, a communication interface 14 for communicating with the first electronic device DV1, and optionally a volatile memory MR3.
La mémoire MR2 constitue une « deuxième mémoire » au sens de l’invention. Cette mémoire est par exemple une mémoire non volatile réinscriptible, par exemple de type Flash, EEPROM ou autre. Cette mémoire permet de stocker une application susceptible d’être exécutée si besoin par le premier dispositif DV1, une telle application comprenant le code exécutable (ou code interprétable orienté objet) et les données associées. Selon une variante, la mémoire MR2 est une mémoire volatile.The memory MR2 constitutes a “second memory” within the meaning of the invention. This memory is for example a rewritable non-volatile memory, for example of the Flash, EEPROM or other type. This memory makes it possible to store an application capable of being executed if necessary by the first device DV1, such an application comprising the executable code (or interpretable object-oriented code) and the associated data. According to a variant, the memory MR2 is a volatile memory.
On considère ici que la mémoire MR2 est en particulier apte à stocker une application APP1 et des objets associés à cette application, à savoir des objets-méthodes OBM1 à OBM5 notés collectivement OBM et des objets-données OBDT1 à OBDT6 notés collectivement OBDT, dans l’exemple de lafigure 1.It is considered here that the memory MR2 is in particular capable of storing an application APP1 and objects associated with this application, namely object-methods OBM1 to OBM5 collectively denoted OBM and data objects OBDT1 to OBDT6 collectively denoted OBDT, in the example in Figure 1 .
Comme illustré aussi enfigure 1, on suppose par la suite que l’application APP1 comporte du code interprétable orienté objet, définissant une pluralité de méthodes exécutables MT1 à MT5, notées collectivement MT. Ces méthodes MT se présentent sous la forme de bytecode qui est interprétable par le premier dispositif DV1 en mettant en œuvre un logiciel spécifique, à savoir une machine virtuelle.As also illustrated in FIG. 1 , it is subsequently assumed that the application APP1 comprises interpretable object-oriented code, defining a plurality of executable methods MT1 to MT5, denoted collectively MT. These methods MT are in the form of bytecode which can be interpreted by the first device DV1 by implementing specific software, namely a virtual machine.
Le code interprétable orienté objet est par exemple codé dans le langage Java ou Java Card, d’autres langages étant toutefois possibles.The interpretable object-oriented code is for example coded in the Java or Java Card language, other languages being however possible.
Dans cet exemple, l’application APP1 comporte en outre des données DT1 à DT6, notées collectivement DT.In this example, application APP1 further includes data DT1 through DT6, collectively denoted DT.
La mémoire non volatile MR2 constitue un support d’enregistrement (ou support d’informations) conforme à un mode de réalisation particulier, lisible par le deuxième dispositif électronique DV2, et sur lequel peut être enregistré un programme d’ordinateur PG2 conforme à un mode de réalisation particulier. Ce programme d’ordinateur PG2 est exécuté par le deuxième dispositif DV2 pour coopérer avec le premier dispositif DV1.The non-volatile memory MR2 constitutes a recording medium (or information medium) conforming to a particular embodiment, readable by the second electronic device DV2, and on which can be recorded a computer program PG2 conforming to a mode particular achievement. This computer program PG2 is executed by the second device DV2 to cooperate with the first device DV1.
De façon optionnelle, la mémoire volatile (RAM) MR3 peut être utilisée comme mémoire intermédiaire pour charger l’application APP1 ou encore pour permettre l’accès par le premier dispositif DV1 à certains objets (objets-méthodes et/ou objets-données).Optionally, the volatile memory (RAM) MR3 can be used as intermediate memory to load the application APP1 or to allow access by the first device DV1 to certain objects (method objects and/or data objects).
De manière générale, l’application APP1, une fois stockée en mémoire dans le deuxième dispositif DV2 (dans la mémoire non volatile MR2 ou éventuellement dans la mémoire volatile MR3), doit être chargée dans la mémoire volatile MR1 du premier dispositif DV1 pour pouvoir être exécutée. Pour ce faire, les méthodes MT doivent être chargées dans la mémoire volatile MR1 comme décrit ultérieurement.In general, the application APP1, once stored in memory in the second device DV2 (in the non-volatile memory MR2 or possibly in the volatile memory MR3), must be loaded into the volatile memory MR1 of the first device DV1 in order to be able to be executed. To do this, the methods MT must be loaded into the volatile memory MR1 as described later.
A noter que certains éléments généralement présents dans un élément sécurisé et dans un SOC destiné à coopérer avec un tel élément sécurisé, ont été volontairement omis car ils ne sont pas nécessaires à la compréhension de la présente invention.It should be noted that certain elements generally present in a secure element and in a SOC intended to cooperate with such a secure element, have been deliberately omitted because they are not necessary for the understanding of the present invention.
Le système SY représenté enfigure 1ne constitue qu’un exemple de réalisation, d’autres mises en œuvre étant possibles dans le cadre de l’invention. L’homme du métier comprendra en particulier que certains éléments du système SY ne sont décrits ici que pour faciliter la compréhension de l’invention, ces éléments n’étant pas nécessaires pour mettre en œuvre l’invention.The system SY represented in FIG. 1 constitutes only one embodiment, other implementations being possible within the scope of the invention. Those skilled in the art will understand in particular that certain elements of the SY system are only described here to facilitate understanding of the invention, these elements not being necessary to implement the invention.
Par ailleurs, lafigure 2représente selon un mode de réalisation particulier des modules mis en œuvre par le processeur 2 piloté par le programme d’ordinateur PG1, à savoir : un module d’acquisition MD2, un module de génération MD4, un module d’envoi MD6, un module d’interprétation MD8, un module d’identification MD10 et un module de traitement MD12.Furthermore, FIG. 2 represents, according to a particular embodiment, modules implemented by the processor 2 controlled by the computer program PG1, namely: an acquisition module MD2, a generation module MD4, a sending MD6, an interpretation module MD8, an identification module MD10 and a processing module MD12.
Le module d’acquisition MD2 et le module de génération MD4 sont configurés pour réaliser ensemble un chargement initial de l’application APP1.The acquisition module MD2 and the generation module MD4 are configured to perform together an initial loading of the application APP1.
Dans l’exemple considéré ici, ces modules MD2, MD4 et MD6 sont mis en œuvre dans le premier dispositif DV1 (dans ce cas, le troisième dispositif DV3 n’est donc pas nécessaire). Selon une variante, ces modules MD2, MD4 et MD6 sont mis en œuvre à l’extérieur du premier dispositif DV1, par exemple dans le troisième dispositif DV3 représenté enfigure 1. Dans une telle variante, le troisième dispositif DV3 utilise donc un processeur et une troisième mémoire volatile (et/ou une mémoire non volatile) qui lui sont propres pour réaliser les fonctions associées aux modules MD2, MD4 et MD6 comme décrits ci-après.In the example considered here, these modules MD2, MD4 and MD6 are implemented in the first device DV1 (in this case, the third device DV3 is therefore not necessary). According to a variant, these modules MD2, MD4 and MD6 are implemented outside the first device DV1, for example in the third device DV3 represented in FIG . In such a variant, the third device DV3 therefore uses a processor and a third volatile memory (and/or a non-volatile memory) specific to it to perform the functions associated with the modules MD2, MD4 and MD6 as described below.
Plus spécifiquement, le module d’acquisition MD2 est configuré pour acquérir (recevoir ou obtenir) une application APP1. Dans cet exemple, cette application APP1 a par exemple été chargée au préalable en mémoire dans le deuxième dispositif électronique DV2 (dans la mémoire non volatile MR2 ou dans la mémoire volatile MR3), bien que d’autres exemples soient possibles.More specifically, the acquisition module MD2 is configured to acquire (receive or obtain) an application APP1. In this example, this application APP1 has for example been loaded beforehand into memory in the second electronic device DV2 (in the non-volatile memory MR2 or in the volatile memory MR3), although other examples are possible.
Le module de génération MD4 est configuré pour générer dans la mémoire volatile MR1, pour chaque méthode MT du code interprétable de l’application APP1, un objet distinct OBM dit objet-méthode. Lors de cette génération, le premier dispositif DV1 génère ou crée ainsi des objets-méthodes OBM correspondant respectivement à chacune des méthodes MT définies dans le code interprétable de l’application APP1. La nature de ces objets-méthodes et la manière dont ceux-ci sont générés sont décrites plus en détail ultérieurement dans des exemples particuliers.The generation module MD4 is configured to generate in the volatile memory MR1, for each method MT of the interpretable code of the application APP1, a distinct object OBM called object-method. During this generation, the first device DV1 thus generates or creates object-methods OBM corresponding respectively to each of the methods MT defined in the interpretable code of the application APP1. The nature of these object-methods and the way in which they are generated are described in more detail later in particular examples.
Le module d’envoi MD6 est configuré pour envoyer chaque objet-méthode généré par le module de génération MD4 au deuxième dispositif DV2 pour enregistrement dans la mémoire non volatile MR2.The MD6 sending module is configured to send each method object generated by the MD4 generating module to the second device DV2 for recording in the non-volatile memory MR2.
Comme décrit par la suite, le module de génération MD4 peut en outre générer et enregistrer dans la mémoire volatile MR1 des données de position DP associées aux objets-méthodes ainsi alloués, ces données étant représentatives de la position respective à laquelle ces objets-méthodes sont stockés dans la mémoire non volatile MR2. A partir de ces données de position DP, le premier dispositif DV1 peut ainsi récupérer depuis la mémoire non volatile MR2 des objets-méthodes souhaités.As described below, the generation module MD4 can also generate and save in the volatile memory MR1 position data DP associated with the object-methods thus allocated, this data being representative of the respective position at which these object-methods are stored in the non-volatile memory MR2. From these position data DP, the first device DV1 can thus recover from the non-volatile memory MR2 desired object-methods.
Dans le cas où les objets-méthodes OBM sont non seulement générés mais également alloués dans la mémoire volatile MR1 lors du chargement initial de l’application APP1, le module de génération MD4 peut également enregistrer dans la mémoire volatile MR1 des données de localisation DL1-DL5 (appelées collectivement DL) associées respectivement aux objets-méthodes OBM1-OBM5, bien que cela ne soit pas obligatoire comme expliqué ultérieurement.In the case where the object-methods OBM are not only generated but also allocated in the volatile memory MR1 during the initial loading of the application APP1, the generation module MD4 can also save in the volatile memory MR1 location data DL1- DL5 (collectively called DL) associated respectively with object-methods OBM1-OBM5, although this is not mandatory as explained later.
Par ailleurs, le module d’interprétation MD8 et le module d’identification MD10 sont configurés pour réaliser ensemble une interprétation du code interprétable de l’application APP1, une fois que le chargement initial mentionné ci-dessus a été effectué. Dans l’exemple de réalisation considéré ici, les modules MD8-MD10, ainsi que le module MD12, sont mis en œuvre dans le premier dispositif DV1.Furthermore, the interpretation module MD8 and the identification module MD10 are configured to perform together an interpretation of the interpretable code of the application APP1, once the initial loading mentioned above has been performed. In the example embodiment considered here, the modules MD8-MD10, as well as the module MD12, are implemented in the first device DV1.
Plus spécifiquement, le module d’interprétation MD8 est configuré pour interpréter le code interprétable de l’application APP1. Pour ce faire, le module d’interprétation met en œuvre une machine virtuelle adaptée à l’application APP1 considérée.More specifically, the MD8 interpretation module is configured to interpret the interpretable code of the application APP1. To do this, the interpretation module implements a virtual machine adapted to the application APP1 considered.
Le module d’identification MD10 est configuré pour identifier, à partir de l’interprétation du code interprétable réalisée par le module d’interprétation MD8, au moins un objet-méthode OBM (par exemple OBM1) invoqué dans le code interprétable de l’application APP1.The identification module MD10 is configured to identify, from the interpretation of the interpretable code performed by the interpretation module MD8, at least one object-method OBM (for example OBM1) invoked in the interpretable code of the application APP1.
Le module de traitement MD12 est configuré pour réaliser une allocation dans la mémoire volatile MR1, pour chaque objet-méthode OBM invoqué qui n’est pas déjà stocké dans la mémoire volatile MR1, de sorte à : récupérer, depuis la mémoire non volatile MR2, ledit objet-méthode OBM ; et enregistrer, dans la mémoire volatile MR1, ledit objet-méthode OBM récupéré depuis la mémoire non volatile MR2, pour en permettre un accès par le premier dispositif électronique DV1.The processing module MD12 is configured to make an allocation in the volatile memory MR1, for each object-method OBM invoked which is not already stored in the volatile memory MR1, so as to: retrieve, from the non-volatile memory MR2, said object-method OBM; and recording, in the volatile memory MR1, said object-method OBM retrieved from the non-volatile memory MR2, to allow access thereto by the first electronic device DV1.
La configuration et le fonctionnement des modules MD2-MD12 définis ci-avant apparaîtront plus précisément dans les exemples de réalisation décrits ci-après. A noter que les modules MD2-MD12 tels que représentés enfigure 2ne représentent qu’un exemple de mise en œuvre non limitatif de l’invention.The configuration and operation of the MD2-MD12 modules defined above will appear more precisely in the embodiments described below. It should be noted that the MD2-MD12 modules as represented in FIG. 2 represent only one example of non-limiting implementation of the invention.
Comme déjà indiqué, on suppose par la suite que les modules MD2 à MD12 sont mis en œuvre dans le premier dispositif DV1, bien que des variantes soient possibles dans lesquelles les modules MD2-MD6 sont mis en œuvre dans le troisième dispositif DV3.As already indicated, it is assumed below that the modules MD2 to MD12 are implemented in the first device DV1, although variants are possible in which the modules MD2-MD6 are implemented in the third device DV3.
Un mode de réalisation particulier de l'invention est à présent décrit en référence auxfigures 3, 5 et 6. Plus précisément, le premier dispositif électronique DV1 (figures 1-2), coopérant avec le deuxième dispositif électronique DV2, met en œuvre le procédé de traitement de l’invention en exécutant le programme d’ordinateur PG1.A particular embodiment of the invention is now described with reference to FIGS. 3, 5 and 6 . More precisely, the first electronic device DV1 ( FIGS. 1-2 ), cooperating with the second electronic device DV2, implements the processing method of the invention by executing the computer program PG1.
Lafigure 3représente les étapes mis en œuvre par les premiers et deuxièmes dispositifs électroniques DV1, DV2 dans ce mode de réalisation particulier. FIG. 3 represents the steps implemented by the first and second electronic devices DV1, DV2 in this particular embodiment.
Au cours d’une étape A2 de chargement, l’application APP1 déjà décrite ci-avant est chargée en mémoire dans le deuxième dispositif électronique DV2. Dans cet exemple, l’application APP1 est chargée dans la mémoire non volatile MR2. Selon une variante, l’application APP1 est chargée dans la mémoire volatile MR3.During a loading step A2, the application APP1 already described above is loaded into memory in the second electronic device DV2. In this example, application APP1 is loaded into non-volatile memory MR2. According to a variant, the application APP1 is loaded into the volatile memory MR3.
Comme déjà décrit, l’application APP1 comporte du code interprétable orienté objet (c’est-à-dire du code exécutable de type bytecode), définissant une pluralité de méthodes MT exécutables, à savoir les méthodes MT1-MT5 dans cet exemple (figures 1-2). L’application APP1 comprend en outre des données DT associées, à savoir les données DT1-DT6.As already described, the application APP1 comprises object-oriented interpretable code (i.e. executable code of bytecode type), defining a plurality of executable MT methods, namely the MT1-MT5 methods in this example ( figures 1-2 ). The application APP1 further comprises associated data DT, namely the data DT1-DT6.
Au cours d’une étape A8 d’envoi, le deuxième dispositif DV2 envoie au premier dispositif DV1 l’application APP1, y compris les méthodes MT1-MT5. Cette transmission A8 se fait progressivement, par paquets de données comprenant notamment les méthodes MT1-MT5. Ces paquets de données peuvent également comprendre par exemple les données DT1-DT6 comme expliqué ultérieurement.During a sending step A8, the second device DV2 sends to the first device DV1 the application APP1, including the methods MT1-MT5. This A8 transmission is done gradually, by data packets including in particular the MT1-MT5 methods. These data packets can also comprise for example the data DT1-DT6 as explained later.
Le premier dispositif DV1 réalise alors une étape B8 de chargement initial au cours de laquelle il fait l’acquisition (B10) de l’application APP1 sous forme de paquets de données puis génère (B12), ou alloue, dans la mémoire volatile MR1, pour chaque méthode MT1-MT5 du code interprétable de l’application APP1, un objet distinct OBM – dit objet-méthode –, noté respectivement OMB1-OBM5. Autrement dit, le premier dispositif DV1 génère ou créée (étape B12) dans la mémoire volatile MR1 un objet-méthode respectif OBM pour chaque méthode MT défini dans le code exécutable de l’application APP1. Cette étape B8 de chargement initial vise ainsi à prédécouper chacune des méthodes MT présentes dans le bytecode de l’application APP1 en un objet-méthode OBM respectif qui pourra par la suite être appelé séparément et exécuté par le premier dispositif DV1.The first device DV1 then performs an initial loading step B8 during which it acquires (B10) the application APP1 in the form of data packets then generates (B12), or allocates, in the volatile memory MR1, for each method MT1-MT5 of the interpretable code of the application APP1, a distinct object OBM – called object-method –, denoted respectively OMB1-OBM5. In other words, the first device DV1 generates or creates (step B12) in the volatile memory MR1 a respective method object OBM for each method MT defined in the executable code of the application APP1. This initial loading step B8 thus aims to pre-cut each of the methods MT present in the bytecode of the application APP1 into a respective object-method OBM which can subsequently be called separately and executed by the first device DV1.
Plus spécifiquement, lors de l’étape B8 de chargement initial, le premier dispositif DV1 reçoit en B10 des paquets de données comportant les méthodes MT1-MT5. Pour chaque méthode MT1-MT5 reçue, le premier dispositif DV1 génère (B12) (et éventuellement alloue) un objet-méthode respectif OBM1-OBM5 qui est enregistré dans la mémoire volatile MR1.More specifically, during the initial loading step B8, the first device DV1 receives at B10 data packets comprising the methods MT1-MT5. For each method MT1-MT5 received, the first device DV1 generates (B12) (and possibly allocates) a respective method object OBM1-OBM5 which is recorded in the volatile memory MR1.
Typiquement, la taille de la mémoire volatile MR1 ne permet pas de charger en même temps toutes les méthodes MT1-MT5 dans la mémoire MR1 ou encore de stocker en même temps tous les objets-méthodes OBM1-OBM5 correspondants dans la mémoire MR1. Un mécanisme d’éviction peut alors être mis en œuvre par le premier dispositif DV1 pour libérer progressivement de l’espace mémoire dans la mémoire MR1, comme expliqué par la suite.Typically, the size of the volatile memory MR1 does not make it possible to load all the methods MT1-MT5 at the same time into the memory MR1 or even to store all the corresponding object-methods OBM1-OBM5 at the same time in the memory MR1. An eviction mechanism can then be implemented by the first device DV1 to progressively release memory space in the memory MR1, as explained below.
Les objets-méthodes OBM générés en B12 sont de type « bytecode » dans le sens où ils contiennent chacun du bytecode de l’application APP1 correspondant à une méthode MT donnée.The object-methods OBM generated in B12 are of the "bytecode" type in the sense that they each contain bytecode of the application APP1 corresponding to a given method MT.
Comme représenté enfigure 5, chaque objet-méthode OBM est généré à l’étape B12 (figure 3) par exemple sous la forme d’une structure de données prédéterminée comprenant un entête P1 et un corps d’objet P2. L’entête P1 comporte des métadonnées pouvant spécifier au moins l’un parmi :
une donnée de type (ou donnée de classification), notée DN1, indiquant que l’objet OBM considéré est un objet-méthode définissant une méthode de l’application APP1 ;
une donnée de taille, notée DN2, représentative de la taille de l’objet méthode considéré ;et
toutes autres informations appropriées.As represented in FIG. 5 , each object-method OBM is generated at step B12 ( FIG. 3 ) for example in the form of a predetermined data structure comprising a header P1 and an object body P2. The P1 header includes metadata that can specify at least one of:
a type datum (or classification datum), denoted DN1, indicating that the object OBM considered is an object-method defining a method of the application APP1;
size data, denoted DN2, representative of the size of the method object considered; and
any other relevant information.
La donnée de taille DN2 permet en particulier à l’interpréteur du premier dispositif DV1, à l’exécution de l’application APP1, de savoir comment lire l’objet considéré et comment le rapatrier si besoin depuis le deuxième dispositif DV2 vers sa mémoire MR1. En l’absence de la donnée DN2, la récupération d’un objet-méthode OBM depuis la mémoire MR2 vers la mémoire MR1 peut être affectée dans la mesure où trop ou pas assez de données sont récupérées, limitant ainsi les performances du système.The size datum DN2 in particular enables the interpreter of the first device DV1, on execution of the application APP1, to know how to read the object in question and how to repatriate it if necessary from the second device DV2 to its memory MR1 . In the absence of DN2 data, the retrieval of an OBM object-method from MR2 memory to MR1 memory may be affected insofar as too much or too little data is retrieved, thus limiting system performance.
En outre, le corps P2 de l’objet-méthode OBM comprend des données DN3 associées à la méthode MT correspondante. Autrement dit, ces données DN3 comprennent l’ensemble du bytecode (du code interprétable orienté objet) de la méthode MT correspondante, y compris les opérandes et éventuellement ses blocs de traitement d’erreur (ou « handlers ») configurés pour traiter des conditions exceptionnelles (erreurs, exceptions…) pendant l’exécution de la méthode MT. Comme le comprend l’homme du métier, lorsqu’une condition d’erreur est détectée lors de l’exécution de la méthode MT, un bloc de traitement (handler) approprié est exécuté.In addition, the P2 body of the OBM method object includes DN3 data associated with the corresponding MT method. In other words, this DN3 data includes all of the bytecode (interpretable object-oriented code) of the corresponding MT method, including the operands and possibly its error handling blocks (or “handlers”) configured to handle exceptional conditions (errors, exceptions…) during the execution of the MT method. As understood by those skilled in the art, when an error condition is detected during the execution of the MT method, an appropriate processing block (handler) is executed.
Toujours au cours de l’étape B8 de chargement initial (figure 3), le premier dispositif DV1 peut enregistrer (B13) des données de position DP qui sont représentatives de la position où chaque objet-méthode respectif OBM1-OBM5 ainsi créé est censé être stocké dans la mémoire non volatile MR2 ou éventuellement dans la mémoire volatile MR3 (cf. enregistrement A16 ci-après).Still during the initial loading step B8 ( FIG. 3 ), the first device DV1 can record (B13) position data DP which is representative of the position where each respective object-method OBM1-OBM5 thus created is supposed to be stored in the non-volatile memory MR2 or possibly in the volatile memory MR3 (see record A16 below).
Dans l’exemple considéré ici, ces données de position DP sont dites persistantes dans le sens où elles sont conservées dans la mémoire volatile MR1 même si les objets-méthodes OBM correspondants, après leur génération en B12, sont éventuellement supprimés de la mémoire volatile MR1 (par exemple en mettant en œuvre un mécanisme d’éviction pour libérer de l’espace mémoire dans MR1). Le premier dispositif DV1 peut ainsi récupérer depuis la mémoire MR2 (ou MR3) du deuxième dispositif DV2, à partir de ces données de positionnement DP, des objets-méthodes OBM désirés lorsque ceux-ci ne sont plus présents dans sa mémoire volatile MR1. Comme décrit par la suite (en référence notamment à lafigure 4), d’autres modes de réalisation sont toutefois possibles dans lesquels les données de position DP n’ont pas besoin d’être conservées de façon persistante dans la mémoire MR1.In the example considered here, these position data DP are said to be persistent in the sense that they are kept in the volatile memory MR1 even if the corresponding object-methods OBM, after their generation in B12, are possibly deleted from the volatile memory MR1 (for example by implementing an eviction mechanism to release memory space in MR1). The first device DV1 can thus recover from the memory MR2 (or MR3) of the second device DV2, from these positioning data DP, desired object-methods OBM when these are no longer present in its volatile memory MR1. As described below (with particular reference to FIG. 4 ), other embodiments are however possible in which the position data DP need not be stored persistently in the memory MR1.
Selon un exemple particulier, les données de localisation DL de chaque objet-méthode OBM sont stockées dans la mémoire volatile MR1 en tant qu’objet de données (dit « objet-données ») OBDT. Ces objets constituent ainsi l’instance d’une classe définie dans le langage, orienté objet, qui est utilisé par l’application APP1, comme le comprend l’homme du métier.According to a particular example, the location data DL of each object-method OBM are stored in the volatile memory MR1 as a data object (called “data object”) OBDT. These objects thus constitute the instance of a class defined in the language, object-oriented, which is used by the application APP1, as understood by those skilled in the art.
Toujours au cours de l’étape B8 de chargement initial, le premier dispositif DV1 peut enregistrer (B14) dans la mémoire MR1 des données de localisation DL, notées ici DL1-DL5, associés respectivement à chaque objet-méthode OBM1-OBM5 généré en B12. Comme expliqué par la suite, d’autres modes de réalisation sont possibles dans lesquels l’enregistrement de telles données de localisation DL n’est pas nécessaire à ce stade du procédé.Still during the initial loading step B8, the first device DV1 can save (B14) in the memory MR1 location data DL, denoted here DL1-DL5, respectively associated with each object-method OBM1-OBM5 generated in B12 . As explained below, other embodiments are possible in which the recording of such location data DL is not necessary at this stage of the method.
Plus précisément, comme représenté enfigure 6, les données de localisation DL comprennent une première référence d’objet AD1 indiquant où l’objet-méthode respectif OBM est enregistré dans la mémoire volatile MR1 et une deuxième référence d’objet AD2 indiquant où l’objet-méthode respectif OBM est enregistré en mémoire (en MR2 ou éventuellement en MR3) dans le deuxième dispositif électronique DV2. Ces données de localisation DL sont dites temporaires dans le sens où, lorsqu’un objet-méthode OBM est supprimé de la mémoire volatile MR1, les données de localisation DL associées sont supprimées également de la mémoire volatile MR1.More specifically, as represented in FIG. 6 , the location data DL comprises a first object reference AD1 indicating where the respective object-method OBM is stored in the volatile memory MR1 and a second object reference AD2 indicating where the respective object-method OBM is stored in memory (in MR2 or possibly in MR3) in the second electronic device DV2. These location data DL are said to be temporary in the sense that, when an object-method OBM is deleted from the volatile memory MR1, the associated location data DL are also deleted from the volatile memory MR1.
La référence d’objet AD1 (respectivement AD2) peut être une adresse dans la mémoire MR1 (respectivement MR2 ou MR3), ou encore un identifiant d’objet, par exemple pour chercher les objets-méthodes dans une liste d’objets. Ces données de localisation peuvent se présenter sous diverses formes telles qu’une table ou des objets comme décrit ci-après. La deuxième référence d’objet AD2 indique où l’objet-méthode est enregistré dans le deuxième dispositif DV2, c’est-à-dire dans la mémoire non volatile MR2 ou éventuellement dans la mémoire volatile MR3 (si MR3 est utilisée ultérieurement pour l’interprétation du code interprétable de l’application APP1).The object reference AD1 (respectively AD2) can be an address in the memory MR1 (respectively MR2 or MR3), or even an object identifier, for example to search for object-methods in a list of objects. This location data can be in various forms such as a table or objects as described below. The second object reference AD2 indicates where the object-method is stored in the second device DV2, i.e. in the non-volatile memory MR2 or possibly in the volatile memory MR3 (if MR3 is subsequently used for the interpretation of the interpretable code of the application APP1).
Dans l’exemple de réalisation considéré ici (figure 3), pour chaque objet-méthode OBM généré (B12) dans la mémoire volatile MR1, le premier dispositif DV1 conserve donc dans sa mémoire volatile MR1 les données de localisation DL correspondantes. Ainsi, en plus de générer chaque objet-méthode OBM1-OBM5 en B12, le premier dispositif DV1 alloue (B12-B13) ces objets-méthodes à une localisation donnée dans sa mémoire MR1.In the embodiment considered here ( FIG. 3 ), for each object-method OBM generated (B12) in the volatile memory MR1, the first device DV1 therefore stores in its volatile memory MR1 the corresponding location data DL. Thus, in addition to generating each object-method OBM1-OBM5 in B12, the first device DV1 allocates (B12-B13) these object-methods to a given location in its memory MR1.
Selon un exemple particulier, les données de localisation DL de chaque objet-méthode OBM stocké dans la mémoire volatile MR1 sont enregistrées, dans la mémoire volatile MR1, en tant qu’objet de données, dit objet de localisation, propre à l’objet-méthode OBM concerné. Ces objets de localisation DL constituent ainsi l’instance d’une classe définie dans le langage orienté objet utilisé par l’application APP1, comme le comprend l’homme du métier. Cet exemple particulier permet d’allouer dynamiquement un espace mémoire de taille adéquate aux données de localisation DL dans la mémoire volatile MR1, optimisant ainsi l’utilisation de l’espace dans la mémoire volatile MR1. L’affectation statique d’un espace mémoire pour ces données de localisation DL bloquerait l’usage d’un espace mémoire plus ou moins important dans la mémoire volatile MR1. Il en résulterait une difficulté pour fixer la taille de cet espace mémoire, qui risquerait d’être soit trop faible pour accueillir toutes les données de localisation DL, soit trop grande ce qui serait couteux en ressources et limiterait l’usage de la mémoire MR1 à d’autres fins. Cet exemple particulier permet d’affecter dynamiquement un espace mémoire adapté dans la mémoire volatile MR1 pour stocker les données de localisation DL, dont le volume est susceptible de varier.According to a particular example, the location data DL of each object-method OBM stored in the volatile memory MR1 are recorded, in the volatile memory MR1, as a data object, called a location object, specific to the object- OBM method concerned. These location objects DL thus constitute the instance of a class defined in the object-oriented language used by the application APP1, as understood by those skilled in the art. This particular example makes it possible to dynamically allocate a memory space of adequate size to the location data DL in the volatile memory MR1, thus optimizing the use of space in the volatile memory MR1. The static allocation of a memory space for these location data DL would block the use of a more or less large memory space in the volatile memory MR1. This would result in difficulty in fixing the size of this memory space, which would risk being either too small to accommodate all the location data DL, or too large, which would be expensive in terms of resources and would limit the use of the memory MR1 to other purposes. This particular example makes it possible to dynamically allocate a suitable memory space in the volatile memory MR1 to store the location data DL, the volume of which is likely to vary.
Ces objets de localisation DL peuvent présenter une structure analogue à celle des objets-méthodes OBM décrits en référence à lafigure 5. En particulier, ces objets de localisation peuvent se présenter sous la forme d’une structure de données prédéterminée comprenant un entête P1 et un corps d’objet P2. L’entête P1 comporte des métadonnées pouvant spécifier au moins l’un parmi :These location objects DL can have a structure similar to that of the object-methods OBM described with reference to FIG . In particular, these location objects can take the form of a predetermined data structure comprising a header P1 and an object body P2. The P1 header includes metadata that can specify at least one of:
une donnée de type (ou donnée de classification), notée DN1, indiquant que l’objet OBM considéré est un objet de localisation indiquant la localisation en mémoire d’un objet ;
une donnée de taille, notée DN2, représentative de la taille de l’objet méthode considéré ; et
toutes autres informations appropriées.a type datum (or classification datum), denoted DN1, indicating that the object OBM considered is a location object indicating the location in memory of an object;
size data, denoted DN2, representative of the size of the method object considered; And
any other relevant information.
En outre, le corps P2 de l’objet de localisation DL comprend des données DN3 définissant les données de localisation DL, et comprenant en particulier la première référence d’objet AD1 et la deuxième référence d’objet AD2 telles que définies ci-avant.In addition, the body P2 of the location object DL comprises data DN3 defining the location data DL, and comprising in particular the first object reference AD1 and the second object reference AD2 as defined above.
Selon un autre exemple de réalisation, le premier dispositif DV1 ne réalise pas l’enregistrement B14 des données de localisation DL lors de l’étape B8 de chargement initial. Les objets-méthodes OBM générés en B12 sont transmis au deuxième dispositif DV2 (lors de l’étape B15 comme décrit ci-après) sans avoir été alloué en tant que tel dans la mémoire MR1 et donc sans enregistrer les données d’allocation DL correspondantes. Cette variante permet de libérer un maximum d’espace mémoire dans la mémoire volatile MR1 pendant l’étape B8 de chargement initial, et d’économiser les ressources nécessaires lors de cette étape. Dans cette variante, les données de position DP permettent par la suite au premier dispositif DV1 de récupérer si besoin depuis la mémoire MR2 des objets-méthodes OBM invoqués, comme expliqué ci-après.According to another exemplary embodiment, the first device DV1 does not perform the recording B14 of the location data DL during the initial loading step B8. The object-methods OBM generated in B12 are transmitted to the second device DV2 (during step B15 as described below) without having been allocated as such in the memory MR1 and therefore without recording the corresponding allocation data DL . This variant makes it possible to free up a maximum of memory space in the volatile memory MR1 during the initial loading step B8, and to save the resources necessary during this step. In this variant, the position data DP subsequently allow the first device DV1 to recover, if necessary, from the memory MR2 the object-methods OBM invoked, as explained below.
Toujours en référence à lafigure 3, au cours d’une étape B15 d’envoi, le premier dispositif DV1 envoie chaque objet-méthode OBM généré en B12 au deuxième dispositif DV2 pour enregistrement dans sa mémoire non volatile MR2 (ou éventuellement dans sa mémoire volatile MR3). Ces objets-méthodes OBM sont reçus et chargés en mémoire (i.e. dans MR2 ou MR3) par le deuxième dispositif DV2 au cours d’une étape A15. Dans l’exemple considéré ici, on suppose que tous les objets-méthodes OBM sont reçus et chargés dans la mémoire MR2.Still with reference to FIG. 3 , during a sending step B15, the first device DV1 sends each object-method OBM generated in B12 to the second device DV2 for recording in its non-volatile memory MR2 (or possibly in its memory volatile MR3). These object-methods OBM are received and loaded into memory (ie into MR2 or MR3) by the second device DV2 during a step A15. In the example considered here, it is assumed that all the object-methods OBM are received and loaded into the memory MR2.
Les objets-méthodes OBM générés en B12 peuvent être transmis (B15) progressivement, l’un après l’autre ou par paquets, au deuxième dispositif DV2. Dans l’exemple considéré (figure 3), chaque objet-méthode OBM est transmis (B15) au deuxième dispositif DV2 dans une commande CMD1, accompagné d’une référence d’objet AD2 indiquant où l’objet-méthode OBM doit être enregistré en mémoire dans le deuxième dispositif DV2. Comme déjà indiqué, cette référence d’objet AD2 peut être une adresse mémoire, un identifiant ou toute autre information permettant au deuxième dispositif DV2 de déterminer où l’objet-méthode OBM doit être enregistré dans sa mémoire MR2 ou MR3.The object-methods OBM generated in B12 can be transmitted (B15) progressively, one after the other or in packets, to the second device DV2. In the example considered ( FIG. 3 ), each object-method OBM is transmitted (B15) to the second device DV2 in a command CMD1, accompanied by an object reference AD2 indicating where the object-method OBM must be saved in memory in the second device DV2. As already indicated, this object reference AD2 can be a memory address, an identifier or any other information allowing the second device DV2 to determine where the object-method OBM must be saved in its memory MR2 or MR3.
Comme illustré enfigure 1, dans un cas particulier où l’application APP1 est codée en langage interprété Java Card, l’étape B8 de chargement initial précédemment décrite peut être réalisée à partir d’une première partie CP1 et d’une deuxième partie CP2 qui sont toutes deux comprises dans l’application APP1 chargée dans le deuxième dispositif électronique DV2. La première partie CP1 (dit composant « METHOD ») comporte alors une concaténation des méthodes MT de l’application APP1 tandis que le deuxième composant CP2 (dit « DESCRIPTOR ») comporte des indications de position DN5 indiquant une position respective de chaque méthode MT dans la première partie CP1. Ces indications de position DN5 peuvent représenter par exemple l’emplacement de début de chaque méthode dans le composant CP1 (informations relatives dites « d’offset »). Le cas échéant, la deuxième partie CP2 peut également indiquer la taille de chaque méthode MT et/ou le nombre de méthodes MT.As illustrated in FIG. 1 , in a particular case where the application APP1 is coded in Java Card interpreted language, the initial loading step B8 previously described can be carried out from a first part CP1 and a second part CP2 which are both included in the application APP1 loaded in the second electronic device DV2. The first part CP1 (known as the “METHOD” component) then comprises a concatenation of the MT methods of the application APP1 while the second component CP2 (known as the “DESCRIPTOR”) includes position indications DN5 indicating a respective position of each MT method in the first part CP1. These position indications DN5 can represent for example the start location of each method in the component CP1 (relative information called “offset”). If applicable, the second part CP2 can also indicate the size of each MT method and/or the number of MT methods.
Le premier dispositif DV1 peut en outre récupérer les données DT contenues dans une troisième partie CP3 de l’application APP1. Ces parties CP1, CP2 et CP3 sont par exemple conformes à la norme « Java Card 3 Plateform Virtual Machine Specification » (chapitre 6 : « The CAP file format »).The first device DV1 can also retrieve the data DT contained in a third part CP3 of the application APP1. These parts CP1, CP2 and CP3 are for example compliant with the “Java Card 3 Platform Virtual Machine Specification” standard (chapter 6: “The CAP file format”).
A l’issue des étapes A2-A15 et B8-B15, l’application APP1 a donc été chargée progressivement dans la mémoire volatile MR1 du premier dispositif DV1 et des objets-méthodes respectifs OBM définissant chaque méthode MT du code interprétable de l’application APP1 ont été alloués et stockés dans la mémoire MR2 du deuxième dispositif DV2. Comme décrit ci-après, ces objets-méthodes sont accessibles à la demande par le premier dispositif DV1.At the end of steps A2-A15 and B8-B15, the application APP1 has therefore been progressively loaded into the volatile memory MR1 of the first device DV1 and of the respective object-methods OBM defining each method MT of the interpretable code of the application APP1 have been allocated and stored in the memory MR2 of the second device DV2. As described below, these object-methods are accessible on demand by the first device DV1.
De façon analogue aux méthodes MT, le premier dispositif DV1 peut également recevoir en B10 (figure 3) les données DT de l’application APP1, et générer en B12 un objet-données OBDT, noté respectivement OBDT1-OBDT6, pour chacune des données DT1-DT6 de l’application APP1 (figure 1). Ces objets-données OBDT sont également transmis en B15 (figure 3) par le premier dispositif DV1 au deuxième dispositif DV2 pour enregistrement dans la mémoire non volatile MR2 ou dans la mémoire volatile MR3. Des données de position DP et des données de localisation DL peuvent également être générées par le premier dispositif DV1 en association à chacun des objets-données OBDT, de façon identique à ce qui est décrit ci-avant en référence aux étapes B13 et B14.Analogously to the methods MT, the first device DV1 can also receive at B10 ( FIG. 3 ) the data DT from the application APP1, and generate at B12 an OBDT data object, denoted respectively OBDT1-OBDT6, for each of the data DT1 -DT6 of the APP1 application ( figure 1 ). These OBDT data objects are also transmitted at B15 ( FIG. 3 ) by the first device DV1 to the second device DV2 for recording in the non-volatile memory MR2 or in the volatile memory MR3. Position data DP and location data DL can also be generated by the first device DV1 in association with each of the data objects OBDT, in an identical manner to what is described above with reference to steps B13 and B14.
Toujours à l’issue des étapes A2-A15 et B8-B15, une partie des objets-méthodes OBM générés en B8 peut être conservée dans la mémoire volatile MR1. Dans ce cas, les données de localisation DL des objets-méthodes OBM sont également conservées dans la mémoire volatile MR1. Comme déjà indiqué, la mémoire volatile MR1 est typiquement de taille insuffisante pour conserver en même temps tous les objets-méthodes OBM, bien que cela soit possible dans certains cas. Aussi, le premier dispositif DV1 peut être configuré pour supprimer au moins l’un des objets-méthodes précédemment créés afin de libérer de l’espace dans la mémoire MR1 en vue de créer d’autres objets-méthodes OBM. Un exemple d’implémentation d’un mécanisme d’éviction est décrit ultérieurement.Still at the end of steps A2-A15 and B8-B15, part of the object-methods OBM generated in B8 can be kept in the volatile memory MR1. In this case, the location data DL of the object-methods OBM are also kept in the volatile memory MR1. As already indicated, the volatile memory MR1 is typically of insufficient size to keep all the object-methods OBM at the same time, although this is possible in certain cases. Also, the first device DV1 can be configured to delete at least one of the previously created object-methods in order to free up space in the memory MR1 with a view to creating other object-methods OBM. An example implementation of an eviction mechanism is described later.
Toujours en référence à lafigure 3, le premier dispositif DV1 réalise ensuite une étape B18 d’interprétation au cours de laquelle il lit et interprète le code interprétable orienté objet de l’application APP1. Pour ce faire, le premier dispositif DV1 met en œuvre un interpréteur appelé « machine virtuelle » (de type Java par exemple) qui interprète le code interprétable à partir d’une pile d’exécution, de façon bien connue de l’homme du métier. Cette interprétation permet de convertir le code interprétable de l’application APP1 en code machine avant exécution.Still with reference to FIG. 3 , the first device DV1 then performs an interpretation step B18 during which it reads and interprets the object-oriented interpretable code of the application APP1. To do this, the first device DV1 implements an interpreter called a "virtual machine" (of the Java type for example) which interprets the interpretable code from an execution stack, in a manner well known to those skilled in the art. . This interpretation makes it possible to convert the interpretable code of the application APP1 into machine code before execution.
Lors de cette interprétation, le premier dispositif DV1 identifie (B20,figure 3) un ou des objets-méthodes OBM qui sont invoqués dans le code interprétable.During this interpretation, the first device DV1 identifies (B20, FIG. 3 ) one or more object-methods OBM which are invoked in the interpretable code.
Pour chaque objet-méthode OBM invoqué, le premier dispositif DV1 vérifie (B22) si l’objet-méthode OBM en question est déjà stocké dans la mémoire volatile MR1. Dans l’affirmative, le procédé se poursuit à l’étape B24 de lecture, sinon le procédé se poursuit à l’étape B26 d’allocation.For each object-method OBM invoked, the first device DV1 checks (B22) whether the object-method OBM in question is already stored in the volatile memory MR1. If so, the method continues at step B24 of reading, otherwise the method continues at step B26 of allocation.
Plus spécifiquement, le premier dispositif DV1 procède à une étape B26 d’allocation pour chaque objet-méthode OBM invoqué qui n’est pas couramment stocké dans la mémoire volatile MR1. Pour ce faire, le premier dispositif DV1 détermine en B22, qu’un objet-méthode OBM invoqué n’est pas stocké dans la mémoire volatile MR1 s’il ne détecte pas de données de localisation DL associées dans la mémoire volatile MR1.More specifically, the first device DV1 proceeds to an allocation step B26 for each object-method OBM invoked which is not currently stored in the volatile memory MR1. To do this, the first device DV1 determines in B22 that an invoked object-method OBM is not stored in the volatile memory MR1 if it does not detect associated location data DL in the volatile memory MR1.
A titre d’exemple, on suppose dans la suite que le premier dispositif DV1 détecte en B20 (figure 3) que l’objet-méthode OBM1 est invoqué. Le premier dispositif DV1 vérifie (B22) alors si l’objet-méthode OBM1 est déjà stocké dans la mémoire volatile MR1. Pour ce faire, le premier dispositif DV1 détermine en B22 si des données de localisation DL1 associées à l’objet-méthode OBM1 sont stockées dans la mémoire volatile MR1.By way of example, it is assumed below that the first device DV1 detects at B20 ( FIG. 3 ) that the object-method OBM1 is invoked. The first device DV1 then checks (B22) whether the object-method OBM1 is already stored in the volatile memory MR1. To do this, the first device DV1 determines in B22 whether location data DL1 associated with the object-method OBM1 are stored in the volatile memory MR1.
Si de telles données de localisation DL1 sont déjà stockées dans la mémoire volatile MR1, cela signifie que l’objet-méthode OBM1 est également présent dans la mémoire volatile MR1 (OBM1 alloué dans la mémoire MR1). Dans ce cas, le premier dispositif DV1 procède à l’étape B24 de lecture au cours de laquelle il accède à l’objet-méthode OBM1 directement dans sa mémoire volatile MR1 en utilisant les données de localisation DL1, puis procède à l’étape B34 d’exécution (figure 3). Pour rappel, dans cet exemple, les données de localisation DL1 comprennent une première référence d’objet AD1 indiquant où l’objet-méthode OBM1 est enregistré dans la mémoire volatile MR1 et une deuxième référence d’objet AD2 indiquant où l’objet-méthode OBM1 est enregistré en mémoire (MR2 ou MR3) dans le deuxième dispositif DV2 (figure 6). Le premier dispositif DV1 retrouve ainsi en B24 (figure 3) l’objet-méthode OBM1 dans la mémoire volatile MR1 à partir de la première référence d’objet AD1.If such location data DL1 are already stored in the volatile memory MR1, this means that the object-method OBM1 is also present in the volatile memory MR1 (OBM1 allocated in the memory MR1). In this case, the first device DV1 proceeds to the read step B24 during which it accesses the object-method OBM1 directly in its volatile memory MR1 by using the location data DL1, then proceeds to step B34 of execution ( figure 3 ). As a reminder, in this example, the location data DL1 includes a first object reference AD1 indicating where the object-method OBM1 is stored in the volatile memory MR1 and a second object reference AD2 indicating where the object-method OBM1 is stored in memory (MR2 or MR3) in the second device DV2 ( Figure 6 ). The first device DV1 thus finds in B24 ( FIG. 3 ) the object-method OBM1 in the volatile memory MR1 from the first object reference AD1.
Si, en revanche, aucune donnée de localisation DL1 n’est stockée dans la mémoire volatile MR1 en association avec l’objet-méthode OBM1, cela signifie que cet objet-méthode n’est pas présent dans la mémoire volatile MR1. Dans ce cas, le premier dispositif DV1 procède alors à l’étape B26 d’allocation afin de récupérer l’objet-méthode OBM1 depuis la mémoire MR2 (ou éventuellement MR3) du deuxième dispositif DV2.If, on the other hand, no location data DL1 is stored in the volatile memory MR1 in association with the object-method OBM1, this means that this object-method is not present in the volatile memory MR1. In this case, the first device DV1 then proceeds to the allocation step B26 in order to recover the object-method OBM1 from the memory MR2 (or possibly MR3) of the second device DV2.
De manière générale, lors de l’étape B22 (figure 3) de détermination, l’objet-méthode OBM1 qui est recherché par le premier dispositif DV1 peut être ou non présent dans la mémoire volatile MR1 selon le cas. Comme déjà décrit, cet objet-méthode OBM1 a été précédemment généré lors de l’étape B8 de chargement initial mais le premier dispositif DV1 n’a pas nécessairement conserver en mémoire MR1 cet objet-méthode OBM1 par la suite. Ce dernier peut avoir été supprimé, c’est-à-dire évincé de la mémoire volatile MR1 pour libérer de l’espace mémoire. Comme déjà décrit, les données de localisation DL sont dites temporaires de sorte que, si l’objet-méthode OBM a été préalablement évincé de la mémoire volatile MR1, alors il en va de même concernant les données de localisation DL1 associées.In general, during step B22 ( FIG. 3 ) of determination, the object-method OBM1 which is sought by the first device DV1 may or may not be present in the volatile memory MR1 depending on the case. As already described, this object-method OBM1 was previously generated during the initial loading step B8 but the first device DV1 does not necessarily have to keep this object-method OBM1 in memory MR1 thereafter. The latter may have been deleted, that is to say evicted from the volatile memory MR1 to free up memory space. As already described, the location data DL is said to be temporary so that, if the object-method OBM has been previously evicted from the volatile memory MR1, then the same applies to the associated location data DL1.
Au cours de l’étape B26 d’allocation (figure 3), le premier dispositif DV1 récupère (B28) l’objet-méthode OBM1 manquant depuis le deuxième dispositif DV2. Pour ce faire, le premier dispositif DV1 envoie (B28) au deuxième dispositif DV2 une commande de lecture CMD2 reçue par le deuxième dispositif DV2 en A28 pour récupérer l’objet-méthode OBM1. Cette commande de lecture CMD2 comprend les données de position DP1 associées à l’objet-méthode OBM1, ces données de position DP1 ayant été préalablement récupérées dans la mémoire volatile MR1 par le premier dispositif DV1. En réponse, le premier dispositif DV1 reçoit en provenance du deuxième dispositif DV2 l’objet-méthode OBM1 qui est présent dans la mémoire MR2 ou MR3 (A30 ; B28).During the allocation step B26 ( FIG. 3 ), the first device DV1 retrieves (B28) the missing object-method OBM1 from the second device DV2. To do this, the first device DV1 sends (B28) to the second device DV2 a read command CMD2 received by the second device DV2 at A28 to retrieve the object-method OBM1. This read command CMD2 comprises the position data DP1 associated with the object-method OBM1, these position data DP1 having been previously retrieved from the volatile memory MR1 by the first device DV1. In response, the first device DV1 receives from the second device DV2 the object-method OBM1 which is present in the memory MR2 or MR3 (A30; B28).
Le premier dispositif DV1 spécifie ainsi au deuxième dispositif DV2 le ou les objets-méthodes OBM qu’il souhaite récupérer depuis la mémoire MR2 (ou MR3) du deuxième dispositif DV2. Dans l’exemple considéré ici, le processeur 12 du deuxième dispositif DV2 n’a pas un accès direct à la mémoire volatile MR1 du premier dispositif DV1 notamment pour des raisons de sécurité. Les objets-méthodes OBM demandés par le premier dispositif DV1 sont partagés par le deuxième dispositif DV2 via une mémoire intermédiaire (non représentée) accessible par le premier dispositif DV1 et par le deuxième dispositif DV2. Le processeur 2 du premier dispositif DV1 recopie ensuite les objets-méthodes OBM demandés dans sa mémoire volatile MR1 à la position souhaitée. Cette mémoire intermédiaire peut se trouver par exemple dans le premier dispositif DV1 ou dans le deuxième dispositif DV2. Il peut s’agir par exemple de la mémoire MR3.The first device DV1 thus specifies to the second device DV2 the object-methods OBM that it wishes to retrieve from the memory MR2 (or MR3) of the second device DV2. In the example considered here, the processor 12 of the second device DV2 does not have direct access to the volatile memory MR1 of the first device DV1, in particular for security reasons. The object-methods OBM requested by the first device DV1 are shared by the second device DV2 via an intermediate memory (not shown) accessible by the first device DV1 and by the second device DV2. The processor 2 of the first device DV1 then copies the object-methods OBM requested into its volatile memory MR1 at the desired position. This intermediate memory can be located for example in the first device DV1 or in the second device DV2. This may be, for example, the MR3 memory.
Selon un exemple particulier, lors de la récupération B28, le premier dispositif DV1 envoie ainsi au moins une commande de lecture CMD2 au deuxième dispositif DV2 pour récupérer chaque objet-méthode OBM désiré qui n’est pas disponible dans la mémoire volatile MR1. Cette commande de lecture CMD2 peut par exemple spécifier : l’objet-méthode souhaité, appelé ici « objet-méthode récupéré », ainsi qu’une adresse de destination respective à laquelle chaque objet-méthode récupéré doit être enregistré dans une mémoire intermédiaire (à laquelle le premier dispositif électronique DV1 a accès).According to a particular example, during recovery B28, the first device DV1 thus sends at least one read command CMD2 to the second device DV2 to recover each desired object-method OBM which is not available in the volatile memory MR1. This CMD2 read command can for example specify: the desired object-method, called here "retrieved object-method", as well as a respective destination address at which each retrieved object-method must be saved in an intermediate memory (at which the first electronic device DV1 has access).
Toujours au cours de l’étape B26 d’allocation, pour chaque objet-méthode OBM récupéré en B28, le premier dispositif DV1 enregistre (B30) cet objet-méthode dans sa mémoire volatile MR1 à la position souhaitée (figure 3). Le premier dispositif DV1 génère (B32) en outre des données de localisation DL (comme déjà décrites) en association à chaque objet-méthode récupéré, ces données de localisation DL comprenant une première référence d’objet AD1 indiquant où l’objet-méthode OBM est enregistré dans la mémoire volatile MR1 et une deuxième référence d’objet AD2 indiquant où l’objet-méthode OBM est enregistré en mémoire dans le deuxième dispositif électronique DV2, i.e. dans la mémoire non volatile MR2 ou éventuellement dans la mémoire volatile MR3 (si MR3 est utilisée pour l’interprétation). Le premier dispositif DV1 enregistre (B32) ainsi ces données de localisation DL dans la mémoire volatile MR1 en association à chaque objet-méthode OBM récupéré en B28.Still during the allocation step B26, for each object-method OBM retrieved in B28, the first device DV1 saves (B30) this object-method in its volatile memory MR1 at the desired position ( FIG. 3 ). The first device DV1 further generates (B32) location data DL (as already described) in association with each object-method retrieved, these location data DL comprising a first object reference AD1 indicating where the object-method OBM is stored in the volatile memory MR1 and a second object reference AD2 indicating where the object-method OBM is stored in memory in the second electronic device DV2, ie in the non-volatile memory MR2 or possibly in the volatile memory MR3 (if MR3 is used for interpretation). The first device DV1 thus records (B32) these location data DL in the volatile memory MR1 in association with each object-method OBM retrieved in B28.
L’étape B32 de génération et d’enregistrement peut être réalisée lors de l’étape B28 de récupération.The generation and recording step B32 can be performed during the recovery step B28.
On suppose donc dans cet exemple que le premier dispositif DV1 enregistre (B30, B32) dans sa mémoire volatile MR1 l’objet-méthode OBM1 en association avec les données de localisation DL1.It is therefore assumed in this example that the first device DV1 stores (B30, B32) in its volatile memory MR1 the object-method OBM1 in association with the location data DL1.
Les aspects décrits ci-avant en référence aux données de localisation DL susceptibles d’être générées à l’étape B14 (figures 3et6) s’appliquent de la même manière aux données de localisation DL générées en B32 lors de l’interprétation du code interprétable de l’application APP1.The aspects described above with reference to the location data DL likely to be generated in step B14 ( FIGS. 3 and 6 ) apply in the same way to the location data DL generated in B32 during the interpretation of the interpretable code of application APP1.
En particulier, ces données de localisation DL sont temporaires dans le sens où, si un objet-méthode OBM est par la suite supprimé de la mémoire volatile MR1, les données de localisation DL associées sont supprimées également de la mémoire volatile MR1. Comme déjà indiqué, pour chaque objet-méthode OBM présent dans sa mémoire volatile MR1 à un instant donné, le premier dispositif DV1 peut conserver dans sa mémoire volatile MR1 les données de localisation DL correspondantes. Par ailleurs, la nature des références d’objet AD1 et AD2 peut être adaptée selon le cas (adresse, identifiant…). La forme de ces données de localisation DL peut également varier selon le cas (table, liste d’objets…).In particular, these location data DL are temporary in the sense that, if an object-method OBM is subsequently deleted from the volatile memory MR1, the associated location data DL is also deleted from the volatile memory MR1. As already indicated, for each object-method OBM present in its volatile memory MR1 at a given instant, the first device DV1 can keep the corresponding location data DL in its volatile memory MR1. Furthermore, the nature of object references AD1 and AD2 can be adapted as appropriate (address, identifier, etc.). The form of this DL location data may also vary depending on the case (table, list of objects, etc.).
Comme déjà décrit précédemment, selon un exemple particulier, les données de localisation DL de chaque objet-méthode OBM stocké dans la mémoire volatile MR1 sont enregistrées, dans la mémoire volatile MR1, en tant qu’objet de données, dit objet de localisation, propre à l’objet-méthode OBM considéré. Ces objets de localisation constituent ainsi l’instance d’une classe définie dans le langage, orienté objet, qui est utilisé par l’application APP1, comme le comprend l’homme du métier.As already described previously, according to a particular example, the location data DL of each object-method OBM stored in the volatile memory MR1 are recorded, in the volatile memory MR1, as a data object, called a location object, specific to the considered OBM object-method. These location objects thus constitute the instance of a class defined in the language, object-oriented, which is used by the application APP1, as understood by those skilled in the art.
Une fois l’étape B26 d’allocation effectuée, le premier dispositif DV1 procède à l’étape B34 au cours de laquelle il exécute chaque objet-méthode OBM identifié précédemment en B20 (figure 3) – à savoir l’objet-méthode OBM1 dans cet exemple – depuis la mémoire volatile MR1 du premier dispositif DV1. Pour ce faire, la machine virtuelle mise en œuvre par le premier dispositif DV1 change le pointeur d’instruction pour aller exécuter chaque objet-méthode OBM invoqué.Once the allocation step B26 has been performed, the first device DV1 proceeds to step B34 during which it executes each object-method OBM previously identified in B20 ( FIG. 3 ) – namely the object-method OBM1 in this example – from the volatile memory MR1 of the first device DV1. To do this, the virtual machine implemented by the first device DV1 changes the instruction pointer to execute each invoked object-method OBM.
L’accès aux objets-données OBDT souhaités peut être réalisé par le premier dispositif DV1 de la même manière que pour les objets-méthodes OBM, comme décrit ci-avant en référence aux étapes B19-B34.The desired OBDT data objects can be accessed by the first device DV1 in the same way as for the OBM method objects, as described above with reference to steps B19-B34.
A noter par ailleurs que les étapes B19 à B34 peuvent être réalisées une pluralité de fois lors d’itérations successives.It should also be noted that steps B19 to B34 can be carried out a plurality of times during successive iterations.
Suite à l’exécution en B34 (figures 3-4) de chaque objet-méthode OBM invoqué, si le premier dispositif DV1 détecte (B20) que l’un au moins de ces objets-méthodes est à nouveau invoqué en association avec l’application APP1 (au cours d’une itération ultérieure), il réalise une opération de lecture (B24) dans sa mémoire volatile MR1 pour exécuter chaque objet-méthode OBM souhaité, stocké dans la mémoire volatile MR1. Il en va de même pour l’accès aux objets-données OBDT de l’application APP1.Following the execution in B34 ( figures 3-4 ) of each object-method OBM invoked, if the first device DV1 detects (B20) that at least one of these object-methods is invoked again in association with the application APP1 (during a subsequent iteration), it performs a read operation (B24) in its volatile memory MR1 to execute each desired object-method OBM, stored in the volatile memory MR1. The same applies to access to the OBDT data objects of the APP1 application.
Autrement dit, à partir de la deuxième exécution d’un objet-méthode OBM invoqué, l’accès à cet objet-méthode se fait directement dans la mémoire volatile MR1, sauf cas particulier où cet objet-méthode a entretemps été évincé comme expliqué ultérieurement.In other words, from the second execution of an invoked object-method OBM, access to this object-method takes place directly in the volatile memory MR1, except in special cases where this object-method has meanwhile been evicted as explained later .
Ainsi, dans l’exemple considéré ici, l’objet-méthode OBM1 est conservé dans la mémoire volatile MR1 après achèvement de l’exécution B34 de la méthode MT1. Il est ainsi possible pour le processeur 2 du premier dispositif DV1 d’accéder rapidement à la méthode MT1 sans dépenser de ressources en chargeant à nouveau l’objet-méthode OBM1 depuis la mémoire du deuxième dispositif DV2. Il en va de même pour l’accès aux données DT de l’application APP1.Thus, in the example considered here, the object-method OBM1 is kept in the volatile memory MR1 after completion of the execution B34 of the method MT1. It is thus possible for the processor 2 of the first device DV1 to quickly access the method MT1 without spending resources by again loading the object-method OBM1 from the memory of the second device DV2. The same is true for accessing the DT data of the APP1 application.
L’ordre dans lequel les étapes B8-B34 sont exécutées n’est proposé ici qu’à titre illustratif, d’autres ordres d’exécution étant possibles. Par exemple, l’ordre dans lequel les étapes B12, B13 et B14 sont exécutés lors de l’étape B8 de chargement initial peut varier selon le cas.The order in which steps B8-B34 are executed is proposed here for illustrative purposes only, other orders of execution being possible. For example, the order in which steps B12, B13, and B14 are executed during the initial loading step B8 may vary depending on the case.
L’invention permet avantageusement d’améliorer l’utilisation de l’espace mémoire dans la mémoire volatile MR1 du premier dispositif DV1. Plus particulièrement, l’accès à du code interprétable orienté objet est facilité car le premier dispositif DV1 peut accéder aux objets-méthodes directement dans sa mémoire volatile s’ils sont disponibles ou, à défaut, peut récupérer ceux-ci depuis la mémoire du deuxième dispositif DV2.The invention advantageously makes it possible to improve the use of the memory space in the volatile memory MR1 of the first device DV1. More particularly, access to interpretable object-oriented code is facilitated because the first device DV1 can access the object-methods directly in its volatile memory if they are available or, failing that, can retrieve them from the memory of the second DV2 device.
De même, le premier dispositif DV1 peut accéder facilement aux objets-donnés directement dans sa mémoire volatile s’ils sont disponibles ou, à défaut, peut récupérer ceux-ci depuis la mémoire du deuxième dispositif DV2.Similarly, the first device DV1 can easily access the given-objects directly in its volatile memory if they are available or, failing that, can retrieve them from the memory of the second device DV2.
L’invention permet en particulier de limiter le pic de consommation en mémoire volatile dans le premier dispositif DV1 lorsque l’application APP1 est chargée dans la mémoire MR1. On peut rapatrier les objets-méthodes un par un dans la mémoire MR1 lorsque ceux-ci sont invoqués à l’exécution de l’application APP1. On évite notamment le rapatriement d’un ensemble de méthodes dans la mémoire volatile, comme par exemple le chargement de toutes les méthodes d’une classe (class loading), comme cela peut être nécessaire dans les solutions conventionnelles.The invention makes it possible in particular to limit the peak consumption of volatile memory in the first device DV1 when the application APP1 is loaded into the memory MR1. The object-methods can be repatriated one by one in the memory MR1 when they are invoked during the execution of the application APP1. In particular, the repatriation of a set of methods in the volatile memory is avoided, such as for example the loading of all the methods of a class ( class loading ), as may be necessary in conventional solutions.
Lors de l’exécution de l’application, le premier dispositif DV1 détecte si chaque objet-méthode invoqué est présent en mémoire volatile interne ou pas. La détection éventuelle de la présence en mémoire volatile interne profite donc des accès sur les objets comme le prévoit le code interprétable orienté objet, et non selon des accès sur les pages de la mémoire externe du deuxième dispositif DV2 ou selon des accès sur des adresses directement.During the execution of the application, the first device DV1 detects whether each object-method invoked is present in internal volatile memory or not. The possible detection of the presence in internal volatile memory therefore benefits from accesses to objects as provided for by the interpretable object-oriented code, and not according to accesses to the pages of the external memory of the second device DV2 or according to accesses to addresses directly .
Selon l’invention, les objets peuvent contenir le bytecode d’une méthode, ou des données. La granularité de l’accès repose donc ici sur les objets, ce qui facilite l’exécution d’une application en langage interprété orienté objet. Si la mémoire volatile ne contient pas l’objet souhaité, le premier dispositif le copie depuis sa version disponible dans la mémoire non volatile du deuxième dispositif (ou éventuellement dans la mémoire volatile de ce dernier). Les accès subséquents sont ensuite réalisés depuis la version de l’objet conservée dans la mémoire volatile du premier dispositif. Si cette mémoire volatile est pleine, le premier dispositif peut évincer de manière sélective un ou plusieurs objets afin de libérer de l’espace mémoire, par exemple pour enregistrer d’autres objets.According to the invention, the objects can contain the bytecode of a method, or data. The granularity of access is therefore based on objects here, which facilitates the execution of an application in an object-oriented interpreted language. If the volatile memory does not contain the desired object, the first device copies it from its available version into the non-volatile memory of the second device (or possibly into the volatile memory of the latter). Subsequent accesses are then performed from the version of the object stored in the volatile memory of the first device. If this volatile memory is full, the first device can selectively evict one or more objects in order to free up memory space, for example to store other objects.
Un deuxième mode de réalisation particulier de l'invention est à présent décrit en référence à lafigure 4. Plus précisément, le premier dispositif électronique DV1 (figures 1-2), coopérant avec le deuxième dispositif électronique DV2, met en œuvre le procédé de traitement de l’invention en exécutant le programme d’ordinateur PG1.A second particular embodiment of the invention is now described with reference to FIG . More precisely, the first electronic device DV1 ( FIGS. 1-2 ), cooperating with the second electronic device DV2, implements the processing method of the invention by executing the computer program PG1.
Ce deuxième mode de réalisation diffère du premier mode de réalisation représenté enfigure 3dans la manière dont les données de position DP sont traitées. Plus précisément, lors de l’étape B8 de chargement initial, le premier dispositif DV1 génère (B12) un objet-méthode OBM respectif pour chaque méthode MT de l’application APP1, et peut éventuellement enregistrer (B14) également des données de localisation DL dans la mémoire MR1, de façon identique à ce qui a déjà été décrit en référence à lafigure 3.This second embodiment differs from the first embodiment represented in FIG. 3 in the way in which the position data DP are processed. More precisely, during the initial loading step B8, the first device DV1 generates (B12) a respective object-method OBM for each method MT of the application APP1, and can possibly also record (B14) location data DL in the memory MR1, identically to what has already been described with reference to FIG .
Toujours au cours de l’étape B8 de chargement initial, le premier dispositif DV1 peut enregistrer (B13) également des données de position DP qui sont représentatives de la position où chaque objet-méthode respectif OBM1-OBM5 ainsi créé est censé être stocké dans la mémoire non volatile MR2 (ou éventuellement dans la mémoire volatile MR3) lors de l’étape A15 d’enregistrement, comme déjà décrit en référence à lafigure 3. Ces données de position DP sont ainsi enregistrées dans une structure de données appropriée.Still during the initial loading step B8, the first device DV1 can also record (B13) position data DP which is representative of the position where each respective object-method OBM1-OBM5 thus created is supposed to be stored in the non-volatile memory MR2 (or possibly in the volatile memory MR3) during step A15 of recording, as already described with reference to FIG . These position data DP are thus recorded in an appropriate data structure.
Dans le premier mode de réalisation représenté enfigure 3, ces données de position DP sont conservées dans la mémoire volatile MR1 pour pouvoir être utilisées ultérieurement par le premier dispositif DV1 en B28 pour récupérer les objets-méthodes OBM invoqués qui ne sont plus présents dans la mémoire MR1. Or, selon ce deuxième mode de réalisation représenté enfigure 4, les données de position DP sont utilisées d’une manière différente.In the first embodiment represented in FIG. 3 , these position data DP are kept in the volatile memory MR1 in order to be able to be used subsequently by the first device DV1 at B28 to recover the object-methods OBM invoked which are no longer present in the MR1 memory. However, according to this second embodiment represented in FIG. 4 , the position data DP are used in a different way.
Plus précisément, comme représenté enfigure 4, une fois que tous les objets-méthodes OBM1-OBM5 générés en B12 ont été chargés lors de l’étape A15 dans la mémoire MR2, le premier dispositif DV1 reçoit en provenance du deuxième dispositif DV2 et charge (B36) à nouveau tous ces objets-méthodes OBM1-OBM5 dans sa mémoire MR1 afin d’y insérer (B37) les données de position DP adéquates. Pour ce faire, le deuxième dispositif DV2 envoie au premier dispositif DV1 les objets-méthodes OBM1-OBM5 précédemment créés en B12. Cette transmission A50 peut se faire progressivement, par paquets de données comprenant chaque objet-méthode OBM1-OBM5 et éventuellement aussi les objets-données OBDT1-OBDT6 précédemment créés. Le premier dispositif DV1 réalise alors une étape B36 de chargement (ultérieure au chargement initial B8) au cours de laquelle il reçoit dans sa mémoire MR1 les objets transmis par le deuxième dispositif DV2.More specifically, as represented in FIG. 4 , once all the object-methods OBM1-OBM5 generated in B12 have been loaded during step A15 into the memory MR2, the first device DV1 receives from the second device DV2 and loads (B36) again all these object-methods OBM1-OBM5 in its memory MR1 in order to insert (B37) the appropriate position data DP therein. To do this, the second device DV2 sends to the first device DV1 the object-methods OBM1-OBM5 previously created in B12. This transmission A50 can be done gradually, by data packets comprising each object-method OBM1-OBM5 and possibly also the data objects OBDT1-OBDT6 previously created. The first device DV1 then performs a loading step B36 (subsequent to the initial loading B8) during which it receives in its memory MR1 the objects transmitted by the second device DV2.
Au cours d’une étape B37 d’insertion, le premier dispositif DV1 insère dans au moins l’un des objets-méthodes OBM1-OBM5 les données de position DP appropriées. Ces données de position DP peuvent être insérées dans le bytecode de chaque objet-méthode OBM en remplacement des opérandes du bytecode qui, de façon connue, encodent par exemple un index dans une structure de données appelée « constant pool » (application Java). Les données de position DP ainsi insérées (B37) peuvent indiquer la localisation d’un autre objet-méthode qui est appelé par l’objet-méthode OBM en question. A l’exécution, l’interpréteur du premier dispositif DV1 interprète ainsi l’opérande de l’objet-méthode OBM comme étant les données de position DP précédemment insérées dans cet objet-méthode.During an insertion step B37, the first device DV1 inserts the appropriate position data DP into at least one of the object-methods OBM1-OBM5. These position data DP can be inserted into the bytecode of each object-method OBM replacing the operands of the bytecode which, in a known manner, encode for example an index in a data structure called “constant pool” (Java application). The DP position data thus inserted (B37) can indicate the location of another method object which is called by the OBM method object in question. At runtime, the interpreter of the first device DV1 thus interprets the operand of the object-method OBM as being the position data DP previously inserted into this object-method.
Pour ce faire, il est nécessaire que le premier dispositif DV1 détermine, avant l’exécution de l’application APP1, quel objet-méthode (dit « objet-méthode appelé ») est appelé par un objet-méthode OBM donné (dit « objet-méthode appelant »). Il s’agit d’une étape de pré-résolution (statique) effectuée avant l’étape B37 d’insertion. Le premier dispositif DV1 peut ainsi insérer, dans chaque objet-méthode OBM appelant, les données de position DP correspondant à au moins un autre objet-méthode OBM appelé par l’objet-méthode appelant.To do this, it is necessary for the first device DV1 to determine, before the execution of the application APP1, which object-method (called “object-method called”) is called by a given object-method OBM (called “object -calling method"). This is a pre-resolution (static) step performed before the insertion step B37. The first device DV1 can thus insert, in each calling object-method OBM, the position data DP corresponding to at least one other object-method OBM called by the calling object-method.
Au cours d’une étape B38 d’envoi (figure 4), le premier dispositif DV1 renvoie les objets-méthodes OBM comportant les données de position DP au deuxième dispositif DV2. Pour ce faire, le premier dispositif DV1 peut transmettre (B38) ces objets-méthodes OBM progressivement, l’un après l’autre ou par paquets, au deuxième dispositif DV2. Dans l’exemple considéré, chaque objet-méthode OBM est transmis (B38) au deuxième dispositif DV2 dans une commande CMD3, accompagné de la référence d’objet AD2 (déjà mentionnée ci-avant) indiquant où l’objet-méthode OBM doit être enregistré en mémoire dans le deuxième dispositif DV2.During a sending step B38 ( FIG. 4 ), the first device DV1 sends the object-methods OBM comprising the position data DP to the second device DV2. To do this, the first device DV1 can transmit (B38) these object-methods OBM progressively, one after the other or in packets, to the second device DV2. In the example considered, each object-method OBM is transmitted (B38) to the second device DV2 in a command CMD3, accompanied by the object reference AD2 (already mentioned above) indicating where the object-method OBM must be stored in memory in the second device DV2.
Le deuxième dispositif DV2 charge (A54) dans sa mémoire MR2 les objets-méthodes OBM transmis en B38 par le premier dispositif DV1.The second device DV2 loads (A54) into its memory MR2 the object-methods OBM transmitted at B38 by the first device DV1.
En outre, le premier dispositif DV1 supprime (B39) les données de position DP de sa mémoire MR1 une fois que ces données de position DP ont été transmises (B38), au sein des objets-méthodes, dans la mémoire MR2. Dans ce cas, les données de position DP ne sont donc pas conservées de façon persistante dans la première mémoire MR1 comme cela est le cas dans le premier mode de réalisation représenté enfigure 3.Furthermore, the first device DV1 deletes (B39) the position data DP from its memory MR1 once these position data DP have been transmitted (B38), within the object-methods, into the memory MR2. In this case, the position data DP are therefore not stored persistently in the first memory MR1 as is the case in the first embodiment represented in FIG .
A l’issue de l’étape A38 d’envoi, la mémoire MR2 contient ainsi les objets-méthodes OBM générés en B12, dans lesquels ont été insérés des données de position DP respectives permettant de retrouver à partir d’un objet-méthode appelant au moins un objet-méthode appelé dans le flux d’exécution des objets-méthodes.At the end of the sending step A38, the memory MR2 thus contains the object-methods OBM generated in B12, into which have been inserted respective position data DP making it possible to find from an object-method calling at least one object-method called in the execution flow of object-methods.
Des données de position DP peuvent également être insérées dans les objets-données OBDT de façon analogue à ce qui est décrit ci-dessus en référence aux objets-méthodes OBM.Position data DP can also be inserted into the OBDT data objects in a manner analogous to what is described above with reference to the OBM method objects.
Toujours dans ce deuxième mode de réalisation représenté enfigure 4, les étapes A28-A30 et les étapes B18-B34 sont ensuite réalisées lors de l’exécution de l’application APP1 de façon identique à ce qui est décrit précédemment en référence à lafigure 3.Still in this second embodiment represented in FIG. 4 , the steps A28-A30 and the steps B18-B34 are then carried out during the execution of the application APP1 in an identical manner to what is described above with reference to FIG. 3 .
Dans ce deuxième mode de réalisation représenté enfigure 4, on ne garde donc pas les données de position DP dans une structure additionnelle dans la mémoire MR1 du premier dispositif DV1. Lors de l’exécution, le premier dispositif DV1 détermine à partir des données de position DP présentes dans le bytecode d’un objet-méthode appelant le ou les objets-méthodes appelés dans le flux d’exécution. Le premier dispositif DV1 peut ainsi être plus rapide à l’exécution de l’application APP1 dans la mesure où l’interpréteur n’a pas besoin de consulter une structure additionnelle (de type « constant pool » par exemple) pour retrouver les objets-méthodes à exécuter. De plus, cette solution permet d’économiser l’espace mémoire qui serait sinon nécessaire dans la mémoire MR1 pour stocker une telle structure additionnelle comportant les données de position DP.In this second embodiment represented in FIG. 4 , the position data DP are therefore not kept in an additional structure in the memory MR1 of the first device DV1. During execution, the first device DV1 determines from the position data DP present in the bytecode of an object-method calling the object-methods called in the execution flow. The first device DV1 can thus be faster when executing the application APP1 insofar as the interpreter does not need to consult an additional structure (of the “constant pool” type for example) to find the objects- methods to perform. Moreover, this solution makes it possible to save the memory space which would otherwise be necessary in the memory MR1 to store such an additional structure comprising the position data DP.
A noter que l’insertion (B37) des données de position DP n’est réalisée que dans les objets-méthodes OBM correspondant à des méthodes statiques, c’est-à-dire dans les objets-méthodes dont il est possible, avant exécution de l’application, de déterminer le ou les objets-méthodes qui sont appelés (pré-résolution statique).It should be noted that the insertion (B37) of the DP position data is only carried out in the object-methods OBM corresponding to static methods, that is to say in the object-methods of which it is possible, before execution of the application, to determine the object-methods which are called (static pre-resolution).
Dans le cas où le premier dispositif DV1 ne peut pas déterminer avant exécution de l’application APP1 quel objet-méthode est appelé par un objet-méthode OBM donné, cela signifie qu’une pré-résolution statique n’est pas possible. Un tel objet-méthode correspond alors à une méthode MT dite « virtuelle ». C’est le cas par exemple en langage Java Card ou Java pour le bytecode «invokevirtual». Dans le cas d’une méthode MT virtuelle, le premier dispositif DV1 n’insère pas de données de position DP dans l’objet-méthode OBM concerné comme précédemment décrit.In the case where the first device DV1 cannot determine before execution of the application APP1 which object-method is called by a given object-method OBM, this means that a static pre-resolution is not possible. Such an object-method then corresponds to a so-called “virtual” MT method. This is the case for example in the Java Card or Java language for the “ invokevirtual ” bytecode. In the case of a virtual method MT, the first device DV1 does not insert position data DP into the object-method OBM concerned as previously described.
Selon une variante représentée schématiquement enfigure 7, on améliore aussi la localisation pour les méthodes non statiques. Le bytecode d’un appel à une méthode virtuelle prend sur la pile d’exécution 30 une référence d’objet, depuis laquelle le premier dispositif DV1 récupère une information de classe. La classe correspondante contient une table des méthodes. Selon cette variante, le premier dispositif DV1 insère, lors de l’étape d’insertion B37 (figure 4) de l’application APP1, les données de position DP de l’objet méthode OBM dans la table des méthodes de cette classe. Dans le cas par exemple du langage Java Card, le premier dispositif DV1 remplace notamment l’entrée 32 dans la table «public_virtual_method_table[]» présente par exemple dans une partie de l’application APP1 propre aux classes (class component).According to a variant shown schematically in FIG. 7 , the localization is also improved for the non-static methods. The bytecode of a call to a virtual method takes an object reference from the execution stack 30, from which the first device DV1 retrieves class information. The corresponding class contains a method table. According to this variant, the first device DV1 inserts, during the insertion step B37 ( FIG. 4 ) of the application APP1, the position data DP of the method object OBM into the table of methods of this class. In the case for example of the Java Card language, the first device DV1 notably replaces the entry 32 in the “ public_virtual_method_table[] ” table present for example in a part of the application APP1 specific to the classes (class component).
Cette variante permet également d’économiser l’espace mémoire volatile MR1 utilisé car l’interpréteur n’a pas besoin d’une structure additionnelle pour retrouver les objets-méthodes à exécuter. Elle permet également de ne pas augmenter davantage le temps d’exécution car elle ne nécessite pas d’indirection supplémentaire pour atteindre la référence d’un objet méthode OBM.This variant also makes it possible to save the volatile memory space MR1 used because the interpreter does not need an additional structure to find the object-methods to be executed. It also does not increase the execution time further because it does not require additional indirection to reach the reference of an OBM method object.
Par ailleurs, on notera que dans les modes de réalisation décrits ci-avant, c’est le premier dispositif DV1 qui réalise les étapes B8-B34 (figures 3et4) et éventuellement B36-B39 (figure 4), de sorte que l’usage du troisième dispositif DV3 (figure 1) n’est pas nécessaire. Selon une variante, les étapes B8 à B15 (figure 3), voire B8 à B39 (figure 4) sont réalisées par le troisième dispositif DV3. Autrement dit, les objets-méthodes OBM sont créés puis transmis au deuxième dispositif DV2 par le troisième dispositif DV3. Les étapes B19 à B34 à l’exécution de l’application APP1 sont toujours réalisées par le premier dispositif DV1. Dans ce cas, c’est donc le premier système SZ, comportant les dispositifs DV1 et DV3, qui réalisent le procédé de l’invention.Furthermore, it will be noted that in the embodiments described above, it is the first device DV1 which performs steps B8-B34 ( FIGS. 3 and 4 ) and possibly B36-B39 ( FIG. 4 ), so that the The use of the third device DV3 ( FIG. 1 ) is not necessary. According to a variant, steps B8 to B15 ( FIG. 3 ), or even B8 to B39 ( FIG. 4 ) are carried out by the third device DV3. In other words, the object-methods OBM are created then transmitted to the second device DV2 by the third device DV3. Steps B19 to B34 on execution of the application APP1 are always carried out by the first device DV1. In this case, it is therefore the first system SZ, comprising the devices DV1 and DV3, which carry out the method of the invention.
Un exemple de mécanisme d’éviction est à présent décrit en référence auxfigures 8et9.An example of an eviction mechanism is now described with reference to FIGS. 8 and 9 .
Typiquement, comme déjà indiqué, la taille de la mémoire volatile MR1 (figure 1) ne permet pas de charger en même temps toutes les méthodes MT1-MT5 dans la mémoire MR1 (étape B10,figures 3-4) ou encore d’allouer en même temps tous les objets-méthodes OBM1-OBM5 dans la mémoire MR1 (B12,figures 3-4). Un mécanisme d’éviction peut donc être mis en œuvre par le premier dispositif DV1 pour libérer progressivement de l’espace mémoire dans la mémoire MR1.Typically, as already indicated, the size of the volatile memory MR1 ( figure 1 ) does not allow all the MT1-MT5 methods to be loaded at the same time into the memory MR1 (step B10, figures 3-4 ) or even to allocate in at the same time all the object-methods OBM1-OBM5 in the memory MR1 (B12, figures 3-4 ). An eviction mechanism can therefore be implemented by the first device DV1 to progressively release memory space in the memory MR1.
Un tel mécanisme d’éviction est illustré enfigure 8, selon un mode de réalisation particulier. Dans cet exemple, lors de l’étape B8 de chargement initial, pour chaque méthode MT qu’il est nécessaire de charger en B10, le premier dispositif DV1 détermine (B40) au préalable s’il dispose d’un espace suffisant dans sa mémoire volatile MR1 pour enregistrer la méthode MT, ainsi que les autres éléments associés qu’il est nécessaire de générer, à savoir : l’objet-méthode OBM, les données de position DP et éventuellement les données de localisation DL (si celles-ci sont générées lors de l’étape B8 de chargement initial).Such an eviction mechanism is illustrated in FIG. 8 , according to a particular embodiment. In this example, during the initial loading step B8, for each method MT that it is necessary to load in B10, the first device DV1 determines (B40) beforehand whether it has sufficient space in its memory volatile MR1 to save the method MT, as well as the other associated elements that it is necessary to generate, namely: the object-method OBM, the position data DP and possibly the location data DL (if these are generated during the initial loading step B8).
Selon un exemple particulier, le premier dispositif DV1 réalise la détermination B40 collectivement pour une pluralité de méthodes MT à charger.According to a particular example, the first device DV1 carries out the determination B40 collectively for a plurality of methods MT to be loaded.
Le premier dispositif DV1 peut par exemple déterminer en B40 (figure 8) qu’il dispose d’un espace insuffisant si l’espace libre est inférieur à une valeur seuil prédéterminée, ou éventuellement en fonction de la taille du ou des méthodes MT à charger. Diverses implémentations sont possibles.The first device DV1 can for example determine in B40 ( FIG. 8 ) that it has insufficient space if the free space is less than a predetermined threshold value, or possibly depending on the size of the method(s) MT to be loaded . Various implementations are possible.
Si le premier dispositif DV1 détermine en B42 (figure 8) qu’il dispose d’un espace suffisant, alors il procède à l’étape B8 de chargement initial et aux étapes suivantes comme déjà décrit ci-avant en référence auxfigures 3-4. Dans le cas contraire (espace insuffisant), le premier dispositif DV1 réalise une étape B44 d’éviction au cours de laquelle il met en œuvre un mécanisme (ou algorithme) d’éviction pour supprimer (évincer) un ou des éléments (des objets par exemple) de sa mémoire volatile MR1 afin de libérer l’espace mémoire nécessaire.If the first device DV1 determines in B42 ( FIG. 8 ) that it has sufficient space, then it proceeds to the initial loading step B8 and to the following steps as already described above with reference to FIGS. 3-4 . Otherwise (insufficient space), the first device DV1 performs an eviction step B44 during which it implements an eviction mechanism (or algorithm) to delete (evict) one or more elements (objects by example) of its volatile memory MR1 in order to free the necessary memory space.
Selon un exemple particulier, lors de ce mécanisme d’éviction B44, le premier dispositif DV1 supprime au moins un objet déjà stocké dans la mémoire volatile MR1 pour libérer un espace mémoire suffisant pour charger une ou d’autres méthodes MT, ainsi que les données associées (les objets-méthodes OBM, leurs données de position DP et éventuellement leurs données de localisation DL).According to a particular example, during this eviction mechanism B44, the first device DV1 deletes at least one object already stored in the volatile memory MR1 to free sufficient memory space to load one or other methods MT, as well as the data associated (the object-methods OBM, their position data DP and possibly their location data DL).
Plus précisément, le premier dispositif détermine (B46) le ou les éléments à supprimer conformément à des règles de priorité prédéterminées, ces règles définissant des niveaux de priorité associés à différents types d’éléments susceptibles d’être stockés dans la mémoire volatile MR1. Si un espace suffisant ne peut être libéré, le processeur 2 du premier dispositif DV1 émet un message d’erreur (exception mémoire). Dans le cas contraire, le premier dispositif DV1 évince (B48) de la mémoire volatile MR1 les éléments identifiés en B46.More precisely, the first device determines (B46) the element or elements to be deleted in accordance with predetermined priority rules, these rules defining priority levels associated with different types of elements likely to be stored in the volatile memory MR1. If sufficient space cannot be freed, processor 2 of the first device DV1 issues an error message (memory exception). Otherwise, the first device DV1 evicts (B48) from the volatile memory MR1 the elements identified in B46.
Les éléments ainsi évincés peuvent être au moins l’un parmi des objets-méthodes OBM ou des objets-données OBDT précédemment alloués, ou encore les objets de localisation DL associées. Lorsqu’un objet-méthode est par exemple évincé en B48 (figure 8), le premier dispositif supprime (B50) également les données de localisation DL associées. En revanche, comme déjà décrit, le premier dispositif DV1 conserve dans sa mémoire volatile MR1 les données de position DP associées à chaque objet-méthode OBM précédemment généré lors de l’étape B12 de génération (figures 3-4), afin de pouvoir récupérer si besoin des objets-méthodes depuis la mémoire MR2 (ou MR3) du deuxième dispositif DV2.The elements thus evicted can be at least one among previously allocated object-methods OBM or object-data OBDT, or else the associated location objects DL. When a method object is for example ousted at B48 ( FIG. 8 ), the first device also deletes (B50) the associated location data DL. On the other hand, as already described, the first device DV1 keeps in its volatile memory MR1 the position data DP associated with each object-method OBM previously generated during generation step B12 ( FIGS. 3-4 ), in order to be able to recover if necessary, method objects from the memory MR2 (or MR3) of the second device DV2.
Une fois le mécanisme d’éviction B44 exécuté, le premier dispositif DV1 réalise l’étape B8 de chargement initial (figures 3-4) comme déjà décrit précédemment.Once the eviction mechanism B44 has been executed, the first device DV1 performs the initial loading step B8 ( FIGS. 3-4 ) as already described above.
Si l’on se place dans la variante incluant un troisième dispositif DV3, ce dernier sera alors en charge du prédécoupage des méthodes MT en objets-méthodes OBM (étape B8), le premier dispositif DV1 mettant en œuvre le mécanisme d’éviction déjà décrit.If we take the variant including a third device DV3, the latter will then be in charge of pre-dividing the MT methods into object-methods OBM (step B8), the first device DV1 implementing the eviction mechanism already described .
Par ailleurs, comme illustré enfigure 9, un mécanisme d’éviction analogue à celui représenté enfigure 8peut être mis en œuvre par le premier dispositif DV1 lors de l’étape B26 d’allocation (figures 3-4).Moreover, as illustrated in FIG. 9 , an eviction mechanism analogous to that represented in FIG. 8 can be implemented by the first device DV1 during the allocation step B26 ( FIGS. 3-4 ).
Plus précisément, lors de l’étape B26 d’allocation, pour chaque objet-méthode OBM qu’il est nécessaire de charger, le premier dispositif DV1 détermine (B60) au préalable s’il dispose d’un espace suffisant dans sa mémoire volatile MR1 pour enregistrer l’objet-méthode OBM désiré et ses données de localisation DL.More precisely, during the allocation step B26, for each object-method OBM that it is necessary to load, the first device DV1 determines (B60) beforehand whether it has sufficient space in its volatile memory MR1 to save the desired OBM object-method and its location data DL.
Selon un exemple particulier, le premier dispositif DV1 réalise la détermination B60 collectivement pour une pluralité d’objet-méthodes OBM à charger.According to a particular example, the first device DV1 carries out the determination B60 collectively for a plurality of object-methods OBM to be loaded.
Le premier dispositif DV1 peut par exemple déterminer en B62 (figure 9) qu’il dispose d’un espace insuffisant si l’espace libre est inférieur à une valeur seuil prédéterminée, ou éventuellement en fonction de la taille du ou des objets-méthodes OBM à charger (en tenant compte éventuellement aussi de la taille estimée des données de localisation DL). Diverses implémentations sont possibles.The first device DV1 can for example determine in B62 ( FIG. 9 ) that it has insufficient space if the free space is less than a predetermined threshold value, or possibly depending on the size of the object-methods OBM to be loaded (possibly also taking into account the estimated size of the location data DL). Various implementations are possible.
Si le premier dispositif DV1 détermine en B62 (figure 9) qu’il dispose d’un espace suffisant, alors il procède à l’étape B28 d’allocation et aux étapes suivantes comme déjà décrit ci-avant en référence auxfigures 3-4. Dans le cas contraire, le premier dispositif DV1 met en œuvre un mécanisme (ou algorithme) B64 d’éviction au cours duquel il supprime (B68) au moins un autre objet déjà stocké dans la mémoire volatile MR1 pour libérer un espace mémoire suffisant pour enregistrer chaque objet-méthode OBM remonté depuis la mémoire du deuxième dispositif DV2.If the first device DV1 determines in B62 ( FIG. 9 ) that it has sufficient space, then it proceeds to the allocation step B28 and to the following steps as already described above with reference to FIGS. 3-4 . Otherwise, the first device DV1 implements an eviction mechanism (or algorithm) B64 during which it deletes (B68) at least one other object already stored in the volatile memory MR1 to free sufficient memory space to record each object-method OBM brought up from the memory of the second device DV2.
Selon un exemple particulier, lors de ce mécanisme d’éviction, le premier dispositif DV1 supprime au moins un autre objet déjà stocké dans la mémoire volatile MR1 pour libérer un espace mémoire suffisant pour enregistrer le ou les objets-méthodes OBM à charger, ainsi que les données de localisation DL associées.According to a particular example, during this eviction mechanism, the first device DV1 deletes at least one other object already stored in the volatile memory MR1 to free sufficient memory space to save the object-methods OBM to be loaded, as well as the associated DL location data.
Plus précisément, le premier dispositif détermine (identifie) en B66 le ou les objets à supprimer conformément à des règles de priorité prédéterminées, ces règles définissant des niveaux de priorité associés à différents types d’éléments susceptible d’être stockés dans la mémoire volatile MR1. Si un espace suffisant ne peut être libéré, le processeur 2 du premier dispositif DV1 émet un message d’erreur (exception mémoire). Dans le cas contraire, le premier dispositif DV1 évince (B68) de la mémoire volatile MR1 les éléments identifiés en B66.More precisely, the first device determines (identifies) in B66 the object or objects to be deleted in accordance with predetermined priority rules, these rules defining priority levels associated with different types of elements likely to be stored in the volatile memory MR1 . If sufficient space cannot be freed, processor 2 of the first device DV1 issues an error message (memory exception). Otherwise, the first device DV1 evicts (B68) from the volatile memory MR1 the elements identified in B66.
Les éléments (ou objets) ainsi évincés peuvent être au moins l’un parmi des objets-méthodes OBM ou des objets-données OBDT précédemment alloués, ou encore les données de localisation DL associées. Pour chaque objet-méthode OBM supprimé (B68) de la mémoire volatile MR1 par le mécanisme d’éviction, le premier dispositif DV1 supprime (B70) les données de localisation DL de l’objet-méthode considéré. En revanche, comme déjà décrit, le premier dispositif DV1 conserve dans sa mémoire volatile MR1 les données de position DP associées à chaque objet-méthode OBM précédemment alloué lors de l’étape B8 de chargement initial (figures 3 et 4).The elements (or objects) thus evicted can be at least one among object-methods OBM or object-data OBDT previously allocated, or else the associated location data DL. For each object-method OBM deleted (B68) from the volatile memory MR1 by the eviction mechanism, the first device DV1 deletes (B70) the location data DL of the object-method considered. On the other hand, as already described, the first device DV1 keeps in its volatile memory MR1 the position data DP associated with each object-method OBM previously allocated during the initial loading step B8 ( FIGS. 3 and 4 ).
Une fois le mécanisme d’éviction B64 exécuté, le premier dispositif DV1 réalise l’étape B26 d’allocation (figures 3-4) comme déjà décrit précédemment.Once the eviction mechanism B64 has been executed, the first device DV1 performs the allocation step B26 ( FIGS. 3-4 ) as already described previously.
Par ailleurs, lors de l’exécution B34 (figures 3-4) d’un objet-méthode OBM invoqué dans le code interprétable orienté objet de l’application APP1, le premier dispositif DV1 peut être amené à réaliser des opérations d’écriture sur l’objet-méthode OBM correspondant (et/ou sur des objets autres tels que des objets-données), c’est-à-dire réaliser des modifications de l’objet-méthode OBM considéré. Ces modifications sont réalisées directement sur la version dite « clone » de l’objet-méthode OBM présente dans la mémoire volatile MR1 du premier dispositif DV1. Le premier dispositif DV1 est en outre configuré pour modifier de façon identique la version de ce même objet-méthode OBM présente dans la mémoire non volatile MR2 du deuxième dispositif DV2 (ou éventuellement dans sa mémoire volatile MR3).Furthermore, during the execution B34 ( figures 3-4 ) of an object-method OBM invoked in the interpretable object-oriented code of the application APP1, the first device DV1 may be required to perform write operations on the corresponding OBM object-method (and/or on other objects such as data objects), ie to carry out modifications of the OBM object-method considered. These modifications are carried out directly on the so-called “clone” version of the object-method OBM present in the volatile memory MR1 of the first device DV1. The first device DV1 is also configured to modify in an identical manner the version of this same object-method OBM present in the non-volatile memory MR2 of the second device DV2 (or possibly in its volatile memory MR3).
Plus précisément, comme illustré enfigure 10, on suppose que le premier dispositif DV1 réalise une opération d’écriture (B80) au cours de laquelle il modifie (B81), dans la mémoire volatile MR1, l’objet-méthode OBM1 en objet-méthode modifié OBM1a. Autrement dit, le premier dispositif DV1 réalise une opération d’écriture sur cet objet-méthode OBM1 pour produire l’objet-méthode modifié OBM1a. La modification, notée MF, subie par l’objet-méthode OBM1 lors de cette opération d’écriture peut être quelconque.More specifically, as illustrated in FIG. 10 , it is assumed that the first device DV1 performs a write operation (B80) during which it modifies (B81), in the volatile memory MR1, the object-method OBM1 into object- modified method OBM1a. In other words, the first device DV1 performs a write operation on this object-method OBM1 to produce the modified object-method OBM1a. The modification, denoted MF, undergone by the object-method OBM1 during this write operation can be arbitrary.
Le premier dispositif DV1 détermine (B83) alors la position où est enregistré l’objet-méthode OBM1 dans la mémoire non volatile MR2 (ou éventuellement dans la mémoire volatile MR3) du deuxième dispositif DV2. Pour ce faire, le premier dispositif DV1 récupère la localisation de l’objet-méthode OBM1 à partir des données de position DP présentes dans l’objet-méthode OBM1 (précédemment insérées à l’étape B37), ou éventuellement dans un objet donné qui contient la table des méthodes.The first device DV1 then determines (B83) the position where the object-method OBM1 is recorded in the non-volatile memory MR2 (or possibly in the volatile memory MR3) of the second device DV2. To do this, the first device DV1 retrieves the location of the object-method OBM1 from the position data DP present in the object-method OBM1 (previously inserted in step B37), or possibly in a given object which contains the method table.
Au cours d’une étape B84 d’envoi, le premier dispositif DV1 envoie au deuxième dispositif DV2 une commande d’écriture CMD4 spécifiant la modification MF qui a été réalisée pour modifier l’objet-méthode OBM1 en OBM1a. Cette commande CMD4 peut comprendre la référence objet AD2 contenue dans les données de localisation DL1 associées à l’objet-méthode OBM1, ainsi que l’objet-méthode modifiée OBM1a (ou toute autre information représentative de la modification MF réalisée en B81).During a sending step B84, the first device DV1 sends to the second device DV2 a write command CMD4 specifying the modification MF which has been carried out to modify the object-method OBM1 to OBM1a. This CMD4 command can include the object reference AD2 contained in the location data DL1 associated with the object-method OBM1, as well as the modified object-method OBM1a (or any other information representing the modification MF carried out in B81).
Le deuxième dispositif DV2 reçoit la commande CMD4 en A84 (figure 10) et, en réponse à cette commande, enregistre (A86) la version modifiée OBM1a dans sa mémoire MR2 (ou éventuellement dans la mémoire volatile MR3) en remplacement de l’objet-méthode OBM1.The second device DV2 receives the command CMD4 at A84 ( FIG. 10 ) and, in response to this command, saves (A86) the modified version OBM1a in its memory MR2 (or possibly in the volatile memory MR3) replacing the object- OBM1 method.
Un procédé identique peut être réalisé lorsque le premier dispositif DV1 apporte des modifications à des objets-données dans sa mémoire volatile MR1.An identical method can be performed when the first device DV1 makes modifications to data objects in its volatile memory MR1.
Il est ainsi possible d’assurer la cohérence entre les objets stockés dans la mémoire volatiles MR1 et ceux stockés en mémoire MR2 dans le deuxième dispositif DV2. Chaque modification apportée aux objets stockés dans la mémoire volatile MR1 du premier dispositif DV1 est répercutée dans la mémoire non volatile MR2 (ou dans la mémoire volatile MR3) du deuxième dispositif DV2. Ainsi, si un objet est par la suite évincé de la mémoire volatile MR1 du premier dispositif DV1, il est possible de récupérer ultérieurement la bonne version de l’objet depuis la mémoire du deuxième dispositif DV2.It is thus possible to ensure consistency between the objects stored in the volatile memory MR1 and those stored in the memory MR2 in the second device DV2. Each modification made to the objects stored in the volatile memory MR1 of the first device DV1 is reflected in the non-volatile memory MR2 (or in the volatile memory MR3) of the second device DV2. Thus, if an object is subsequently evicted from the volatile memory MR1 of the first device DV1, it is possible to subsequently recover the correct version of the object from the memory of the second device DV2.
Par ailleurs, comme déjà indiqué, la manière dont le premier dispositif DV1 met en œuvre une machine virtuelle pour interpréter le code exécutable de l’application APP1 (B19,figures 3-4) à partir d’une pile d’exécution est bien connue de l’homme du métier. En particulier, la machine virtuelle détecte des objets en lisant le code interprétable et place (empile) les références d’objet dans une pile d’exécution.Moreover, as already indicated, the way in which the first device DV1 implements a virtual machine to interpret the executable code of the application APP1 (B19, figures 3-4 ) from an execution stack is well known. of the skilled person. In particular, the virtual machine detects objects by reading interpretable code and pushes (stacks) object references onto an execution stack.
Un mode particulier de réalisation est à présent décrit en référence à lafigure 11. Au cours de l’interprétation B19 (figures 3-4) du code interprétable orienté objet, le premier dispositif DV1 réalise une lecture de la pile d’exécution au cours d’une première étape B90. Lors de cette étape de lecture (B90), lorsque le premier dispositif DV1 détecte (B92) une référence d’un objet sur la pile d’exécution, il exécute (B94) une action sécuritaire pour bloquer l’accès de cet objet-méthode OBM à une application. Il peut s’agir d’une référence à un objet-méthode OBM ou, le cas échéant, à un objet de localisation comme décrit précédemment.A particular embodiment is now described with reference to FIG. 11 . During the interpretation B19 ( FIGS. 3-4 ) of the interpretable object-oriented code, the first device DV1 reads the execution stack during a first step B90. During this reading step (B90), when the first device DV1 detects (B92) a reference of an object on the execution stack, it executes (B94) a security action to block the access of this object-method OBM to an application. It can be a reference to an OBM object-method or, if necessary, to a location object as described above.
Le premier dispositif DV1 détecte par exemple en B92 que l’objet référencé dans la pile d’exécution est un objet-méthode OBM à partir de la donnée de type DN1 contenue dans les métadonnées de l’objet-méthode OBM, comme précédemment décrit en référence notamment à lafigure 5.The first device DV1 detects for example in B92 that the object referenced in the execution stack is an object-method OBM from the data of type DN1 contained in the metadata of the object-method OBM, as previously described in reference in particular to FIG. 5 .
Le premier dispositif peut détecter que l’objet référencé est un objet de localisation de façon analogue, à partir d’une donnée de type contenue dans les métadonnées de l’objet de localisation, comme précédemment décrit.The first device can detect that the referenced object is a location object in an analogous way, from a type datum contained in the metadata of the location object, as previously described.
En effet, les objets-méthodes et, le cas échéant les objets de localisation, sont des objets particuliers qui sont créés par le système du premier dispositif DV1 mais auxquelles aucune application ne devrait jamais accéder par elle-même pour des raisons de sécurité. Un logiciel malveillant pourrait par exemple récupérer la référence d’un objet-méthode OBM depuis la pile d’exécution et modifier le contenu de cet objet (bytecode) pour endommager l’application APP1. De même, un risque existe qu’un tel logiciel récupère dans la pile d’exécution la référence d’un objet de relocalisation afin de fausser l’adresse de l’objet correspondant dans la mémoire non volatile MR2 du deuxième dispositif DV2, en vue par exemple de réaliser des opérations illicites en écriture et/ou en lecture.Indeed, the object-methods and, where appropriate the location objects, are particular objects which are created by the system of the first device DV1 but which no application should ever access by itself for security reasons. Malicious software could, for example, retrieve the reference of an OBM object-method from the execution stack and modify the content of this object (bytecode) to damage the APP1 application. Similarly, there is a risk that such software recovers the reference of a relocation object from the execution stack in order to falsify the address of the corresponding object in the non-volatile memory MR2 of the second device DV2, with a view to for example to carry out illicit operations in writing and/or in reading.
Il est ainsi possible de sécuriser l’accès aux objets-méthodes OBM et aux objets de localisation par de quelconques applications susceptibles d’être exécutées dans le premier dispositif DV1. Pour ce faire, le premier dispositif DV1 peut réaliser une action sécuritaire pour empêcher l’accès par une application à la référence d’un objet-méthode ou à un objet de localisation dans la pile d’exécution. Pour renforcer la sécurité de ces objets, le premier dispositif DV1 peut ainsi être configuré pour interdire d’empiler des références à de tels objets sur la pile d’exécution. De la même façon, le premier dispositif DV1 peut être configuré pour interdire de déréférencer (lors du dépilement) de tels objets. Les objets-méthodes dont on souhaite protéger l’accès peuvent être dans la mémoire volatile MR1 du premier dispositif DV1 ou dans la mémoire non volatile MR2 (ou éventuellement la mémoire volatile MR3) du deuxième dispositif DV2.It is thus possible to secure the access to the object-methods OBM and to the location objects by any applications likely to be executed in the first device DV1. To do this, the first device DV1 can perform a security action to prevent access by an application to the reference of a method object or to a location object in the execution stack. To reinforce the security of these objects, the first device DV1 can thus be configured to prohibit the stacking of references to such objects on the execution stack. In the same way, the first device DV1 can be configured to prohibit dereferencing (during popping) of such objects. The method objects whose access is to be protected can be in the volatile memory MR1 of the first device DV1 or in the non-volatile memory MR2 (or possibly the volatile memory MR3) of the second device DV2.
Par ailleurs, comme déjà décrit, des données de localisation DL peuvent être enregistrées sous forme d’un objet de localisation dans la mémoire volatile MR1 pour chaque objet-méthode OBM alloué par le premier dispositif DV1. Selon un exemple particulier, chaque objet-méthode OBM et chaque objet de localisation DL générés par le premier dispositif DV1 sont enregistrés ensemble dans un même conteneur mémoire dans la mémoire volatile MR1.Moreover, as already described, location data DL can be recorded in the form of a location object in the volatile memory MR1 for each object-method OBM allocated by the first device DV1. According to a particular example, each object-method OBM and each location object DL generated by the first device DV1 are recorded together in the same memory container in the volatile memory MR1.
Dans le présent document, un conteneur mémoire est une abstraction logiciel d’un espace mémoire physique, généralement borné en taille (exemple: le tas d’objet est un conteneur d’objet). Le système d’exploitation (OS) du premier dispositif DV1 est typiquement en charge de fournir des routines d’allocation et de libération pour utiliser ce conteneur.In this document, a memory container is a software abstraction of a physical memory space, usually bounded in size (example: the object heap is an object container). The operating system (OS) of the first device DV1 is typically in charge of providing allocation and freeing routines to use this container.
Plus généralement, le premier dispositif DV1 peut stocker dans sa mémoire volatile MR1 divers types d’objet, à savoir des objets-méthodes, des objets de localisation, d’autres objets contenant des données récupérées dans la mémoire non volatile MR2, et/ou des objets transitoires comportant des données générées ponctuellement par le premier dispositif DV1 pour exécuter l’application APP1 et qui sont effacées par la suite. Le premier dispositif DV1 peut être configuré pour stocker tous ces objets dans un même conteneur de sa mémoire volatile MR1.More generally, the first device DV1 can store in its volatile memory MR1 various types of object, namely method objects, location objects, other objects containing data retrieved from the non-volatile memory MR2, and/or transient objects comprising data generated punctually by the first device DV1 to execute the application APP1 and which are subsequently erased. The first device DV1 can be configured to store all these objects in the same container of its volatile memory MR1.
En faisant cohabiter tous ces objets dans un même conteneur mémoire dans la mémoire volatile MR1, on permet une utilisation maximale de la mémoire volatile MR1 par rapport à une solution basée sur de la segmentation mémoire. En effet, une segmentation suppose de créer statiquement plusieurs conteneurs, à savoir au moins : un conteneur pour les données de localisation DL, un conteneur pour les objets-méthodes, et un conteneur pour les objets transitoires. Il est cependant difficile d’estimer à l’avance les tailles optimales pour chacun de ces conteneurs. Le nombre d’objets qui sont chargés dans la mémoire volatile MR1 dépend notamment des commandes exécutées lors de l’exécution de l’application. Une exécution est donc plus performante en consommation mémoire si l’on fait cohabiter les objets précités dans un même conteneur mémoire.By having all these objects coexist in the same memory container in the volatile memory MR1, maximum use of the volatile memory MR1 is made possible with respect to a solution based on memory segmentation. Indeed, a segmentation supposes to statically create several containers, namely at least: a container for the DL localization data, a container for the object-methods, and a container for the transient objects. However, it is difficult to estimate in advance the optimal sizes for each of these containers. The number of objects which are loaded into the volatile memory MR1 depends in particular on the commands executed during the execution of the application. An execution is therefore more efficient in terms of memory consumption if the aforementioned objects cohabit in the same memory container.
Un homme du métier comprendra que les modes de réalisation et variantes décrits ci-avant ne constituent que des exemples non limitatifs de mise en œuvre de l’invention. En particulier, l’homme du métier pourra envisager une quelconque adaptation ou combinaison des modes de réalisation et variantes décrits ci-avant afin de répondre à un besoin bien particulier.A person skilled in the art will understand that the embodiments and variants described above only constitute non-limiting examples of implementation of the invention. In particular, those skilled in the art may consider any adaptation or combination of the embodiments and variants described above in order to meet a very specific need.
Claims (21)
une étape de chargement initial (B8) comprenant :
- acquisition (B10) d’une application (APP1) comportant du code interprétable orienté objet, définissant une pluralité de méthodes (MT) exécutables ;
- génération (B12) dans la première mémoire, pour chaque méthode du code interprétable, d’un objet distinct (OBM) dit objet-méthode ;
une étape d’interprétation (B18) comprenant :
- interprétation (B19) du code interprétable de l’application (APP1) ;
- identification (B20), à partir de ladite interprétation, d’au moins un objet-méthode (OBM1) invoqué dans le code interprétable ; et
- récupération (B28), depuis la deuxième mémoire (MR2), dudit objet-méthode ; et
- enregistrement (B30), dans la première mémoire (MR1), dudit objet-méthode récupéré depuis la deuxième mémoire, pour en permettre un accès par le premier dispositif électronique.
an initial loading step (B8) comprising:
- acquisition (B10) of an application (APP1) comprising interpretable object-oriented code, defining a plurality of executable methods (MT);
- generation (B12) in the first memory, for each method of the interpretable code, of a distinct object (OBM) called object-method;
an interpretation step (B18) comprising:
- interpretation (B19) of the interpretable code of the application (APP1);
- identification (B20), from said interpretation, of at least one object-method (OBM1) invoked in the interpretable code; And
- retrieval (B28), from the second memory (MR2), of said object-method; And
- recording (B30), in the first memory (MR1), of said object-method retrieved from the second memory, to allow access to it by the first electronic device.
chargement dans la première mémoire (MR1) de ladite méthode du code interprétable ; et
génération dans la première mémoire d’un objet-méthode correspondant, sous la forme d’une structure de données prédéterminée comprenant un entête et un corps d’objet ;
dans lequel le corps d’objet comprend du code interprétable orienté objet (DN3) définissant l’objet-méthode.A method according to claim 1 or 2, wherein said initial loading step (B8) comprises, for each method of interpretable code:
loading into the first memory (MR1) of said method of the interpretable code; And
generation in the first memory of a corresponding method object, in the form of a predetermined data structure comprising a header and an object body;
wherein the object body includes interpretable object-oriented code (DN3) defining the object-method.
la première partie (CP1) comportant une concaténation de la pluralité de méthodes (MT) de l’application, et
la deuxième partie (CP2) comportant des indications de position (DN5) indiquant une position respective de chaque méthode dans la première partie (CP1).Method according to any one of Claims 1 to 3, in which the said initial loading step is carried out from a first part (CP1) and a second part (CP2) which are included in the application (APP1) loaded into the second electronic device (DV2) during said initial loading step,
the first part (CP1) comprising a concatenation of the plurality of methods (MT) of the application, and
the second part (CP2) comprising position indications (DN5) indicating a respective position of each method in the first part (CP1).
- vérification (B22), pour chaque objet-méthode invoqué, de si ledit objet-méthode (OBM) est stocké dans la première mémoire (MR1),
- checking (B22), for each object-method invoked, whether said object-method (OBM) is stored in the first memory (MR1),
dans lequel pour chaque objet-méthode supprimé de la mémoire volatile (MR1) par le mécanisme d’éviction, le premier dispositif électronique (DV1) supprime (B50 ; B70) les données de localisation (DL) dudit objet-méthode.Method according to any one of Claims 6 to 10, in which, upon detection (B62) during the said step of allocating that the volatile memory (MR1) does not have sufficient memory space to record each object-method invoked , the first electronic device (DV1) performs an eviction mechanism (B64) during which it deletes (B68) at least one other object already stored in the first memory (MR1) to free sufficient memory space to record each object- invoked method,
wherein for each object-method deleted from the volatile memory (MR1) by the eviction mechanism, the first electronic device (DV1) deletes (B50; B70) the location data (DL) of said object-method.
- modification (B81) d’un objet-méthode (OBM1) stocké dans la première mémoire (MR1) ;
- détermination (B83) de la position où est enregistré l’objet-méthode dans la deuxième mémoire (MR2) ; et
- envoi (B84) d’une commande d’écriture (CMD4) spécifiant ladite modification dudit objet-méthode pour modifier ledit objet-méthode stockée à ladite localisation dans la mémoire non volatile (MR2).
- modification (B81) of a method object (OBM1) stored in the first memory (MR1);
- determination (B83) of the position where the object-method is recorded in the second memory (MR2); And
- sending (B84) of a write command (CMD4) specifying said modification of said object-method to modify said object-method stored at said location in the non-volatile memory (MR2).
- ledit objet-méthode, dit objet-méthode récupéré, qui est invoqué et qui n’est pas stocké dans la mémoire volatile (MR1); et
- said method object, called retrieved method object, which is invoked and which is not stored in the volatile memory (MR1); And
sur détection (B92) d’une référence d’un objet-méthode sur la pile d’exécution, exécution (B94) d’une action sécuritaire pour bloquer son accès à une application.
dans lequel le premier dispositif électronique (DV1) détecte que l’objet référencé dans la pile d’exécution est un objet-méthode à partir de la donnée de type (DN1) contenue dans les métadonnées de l’objet-méthode.Method according to any one of Claims 1 to 15, in which the first electronic device (DV1) comprises a virtual machine capable of interpreting the interpretable code of the application (APP1) from an execution stack, the method including:
on detection (B92) of a reference of a method object on the execution stack, execution (B94) of a security action to block its access to an application.
in which the first electronic device (DV1) detects that the object referenced in the execution stack is a method object from the type datum (DN1) contained in the metadata of the method object.
le premier système comprenant, pour réaliser un chargement initial :
un module d’acquisition (MD2) configuré pour acquérir une application (APP1) comportant du code interprétable orienté objet, définissant une pluralité de méthodes (MT) exécutables ;
- un module de génération (MD4) configuré pour générer dans la première mémoire, pour chaque méthode du code interprétable, un objet distinct (OBM) dit objet-méthode ;
- un module d’envoi (MD6) configuré pour envoyer chaque objet-méthode au deuxième dispositif pour enregistrement dans la mémoire non volatile (MR2) ;
- un module d’interprétation (MD8) configuré pour interpréter le code interprétable de l’application (APP1) ;
- un module d’identification (MD10) configuré pour identifier, à partir d’une interprétation du code interprétable réalisée par le module d’interprétation, au moins un objet-méthode (OBM1) invoqué dans le code interprétable ;
- un module de traitement (MD12) configuré pour réaliser une allocation dans la première mémoire, pour chaque objet-méthode (OBM) invoqué qui n’est pas stocké dans la mémoire volatile (MR1), de sorte à :
- récupérer, depuis la deuxième mémoire (MR2), ledit objet-méthode ; et
- enregistrer, dans la première mémoire (MR1), ledit objet-méthode récupéré depuis la deuxième mémoire, pour en permettre un accès par le premier dispositif électronique.
the first system comprising, to perform an initial loading:
an acquisition module (MD2) configured to acquire an application (APP1) comprising interpretable object-oriented code, defining a plurality of executable methods (MT);
- a generation module (MD4) configured to generate in the first memory, for each method of the interpretable code, a distinct object (OBM) called object-method;
- a sending module (MD6) configured to send each method object to the second device for recording in the non-volatile memory (MR2);
- an interpretation module (MD8) configured to interpret the interpretable code of the application (APP1);
- an identification module (MD10) configured to identify, from an interpretation of the interpretable code performed by the interpretation module, at least one object-method (OBM1) invoked in the interpretable code;
- a processing module (MD12) configured to make an allocation in the first memory, for each object-method (OBM) invoked which is not stored in the volatile memory (MR1), so as to:
- retrieving, from the second memory (MR2), said object-method; And
- recording, in the first memory (MR1), said object-method retrieved from the second memory, to allow access thereto by the first electronic device.
- un premier système (SZ) selon la revendication 20 ; et
- ledit deuxième dispositif électronique (DV2), comportant une deuxième mémoire (MR2), étant configuré pour coopérer avec le premier système (SZ).
- a first system (SZ) according to claim 20; And
- said second electronic device (DV2), comprising a second memory (MR2), being configured to cooperate with the first system (SZ).
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR1903864A FR3095054B1 (en) | 2019-04-11 | 2019-04-11 | Managing a memory in an electronic device |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR1903864 | 2019-04-11 | ||
FR1903864A FR3095054B1 (en) | 2019-04-11 | 2019-04-11 | Managing a memory in an electronic device |
Publications (2)
Publication Number | Publication Date |
---|---|
FR3095054A1 true FR3095054A1 (en) | 2020-10-16 |
FR3095054B1 FR3095054B1 (en) | 2021-03-19 |
Family
ID=68342951
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
FR1903864A Active FR3095054B1 (en) | 2019-04-11 | 2019-04-11 | Managing a memory in an electronic device |
Country Status (1)
Country | Link |
---|---|
FR (1) | FR3095054B1 (en) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0996059A2 (en) * | 1998-10-19 | 2000-04-26 | International Business Machines Corporation | Class loading model |
US20030093781A1 (en) * | 2001-11-14 | 2003-05-15 | Ksheerabdhi Krishna | Method and apparatus for linking converted applet files without relocation annotations |
US20030229769A1 (en) * | 2002-06-07 | 2003-12-11 | Montemayor Oscar A. | Using short references to access program elements in a large address space |
EP3392791A1 (en) * | 2017-04-20 | 2018-10-24 | Idemia Identity & Security France | Method for executing a program intended for being interpreted by a virtual machine protected against fault-injection attacks |
-
2019
- 2019-04-11 FR FR1903864A patent/FR3095054B1/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0996059A2 (en) * | 1998-10-19 | 2000-04-26 | International Business Machines Corporation | Class loading model |
US20030093781A1 (en) * | 2001-11-14 | 2003-05-15 | Ksheerabdhi Krishna | Method and apparatus for linking converted applet files without relocation annotations |
US20030229769A1 (en) * | 2002-06-07 | 2003-12-11 | Montemayor Oscar A. | Using short references to access program elements in a large address space |
EP3392791A1 (en) * | 2017-04-20 | 2018-10-24 | Idemia Identity & Security France | Method for executing a program intended for being interpreted by a virtual machine protected against fault-injection attacks |
Non-Patent Citations (1)
Title |
---|
FRANZ M ET AL: "Splitting Data Objects to Increase Cache Utilization", INTERNET CITATION, 1 October 1998 (1998-10-01), XP002196016, Retrieved from the Internet <URL:http://www.ics.uci.edu/~franz/pubs-pdf/ICS-TR-98-34.pdf> [retrieved on 20020412] * |
Also Published As
Publication number | Publication date |
---|---|
FR3095054B1 (en) | 2021-03-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8813031B2 (en) | System and method for automatically resolving dependencies of Java Archive files for use with Maven | |
US9336018B2 (en) | Mechanism for class data sharing using extension and application class-loaders | |
US8490120B2 (en) | System and method for the service configuration of application server environments | |
US9563446B2 (en) | Binary file generation | |
CN109960597B (en) | Dynamic registration method and related device of application layer interface | |
US8650537B2 (en) | Optimizing an object-oriented program by transforming invocations of synthetic accessor methods | |
FR2977694A1 (en) | MICROPROCESSOR PROTECTS AGAINST A BATTERY OVERFLOW | |
CN115378735B (en) | Data processing method and device, storage medium and electronic equipment | |
EP1782191A2 (en) | Method for loading software with an intermediate object oriented language in a portable device | |
CN108846129B (en) | Storage data access method, device and storage medium | |
US9250917B2 (en) | Auto-cloudifying applications via runtime modifications | |
US12032970B2 (en) | Reducing the startup latency of functions in a FaaS infrastructure | |
CN111400757A (en) | Method for preventing native code in android third-party library from revealing user privacy | |
CN116661910B (en) | Application calling method and device | |
CN114329367B (en) | Network disk file tracing method and device, network disk and storage medium | |
US20040243986A1 (en) | Interpreter and native code execution method | |
CN109032572B (en) | Method for Java program method internal connection based on byte code | |
FR3095054A1 (en) | Managing a memory in an electronic device | |
EP3392791B1 (en) | Method for executing a program intended for being interpreted by a virtual machine protected against fault-injection attacks | |
US8788785B1 (en) | Systems and methods for preventing heap-spray attacks | |
FR2864650A1 (en) | METHOD FOR UPDATING APPLICATIONS FOR A CHIP CARD | |
EP4018313B1 (en) | Data collector in an electronic device | |
WO2006048378A1 (en) | Method for loading a software code compiled in an object-oriented intermediate language in a portable device | |
EP1337915A1 (en) | Formal verification in particular of a secured virtual machine | |
FR3074317B1 (en) | METHOD FOR ACCESSING A FLASH TYPE NON-VOLATILE MEMORY ZONE OF A SECURE ELEMENT, SUCH AS A CHIP CARD |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PLFP | Fee payment |
Year of fee payment: 2 |
|
PLSC | Publication of the preliminary search report |
Effective date: 20201016 |
|
PLFP | Fee payment |
Year of fee payment: 3 |
|
PLFP | Fee payment |
Year of fee payment: 4 |
|
PLFP | Fee payment |
Year of fee payment: 5 |
|
PLFP | Fee payment |
Year of fee payment: 6 |