EP1346286A1 - Optimised management method for allocating memory workspace of an onboard system and corresponding onboard system - Google Patents

Optimised management method for allocating memory workspace of an onboard system and corresponding onboard system

Info

Publication number
EP1346286A1
EP1346286A1 EP01989649A EP01989649A EP1346286A1 EP 1346286 A1 EP1346286 A1 EP 1346286A1 EP 01989649 A EP01989649 A EP 01989649A EP 01989649 A EP01989649 A EP 01989649A EP 1346286 A1 EP1346286 A1 EP 1346286A1
Authority
EP
European Patent Office
Prior art keywords
memory
packets
elementary
blocks
object code
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.)
Withdrawn
Application number
EP01989649A
Other languages
German (de)
French (fr)
Inventor
Nicolas Fougeroux
Patrice Hameau
Olivier Landier
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
CP8 Technologies SA
Original Assignee
CP8 Technologies SA
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by CP8 Technologies SA filed Critical CP8 Technologies SA
Publication of EP1346286A1 publication Critical patent/EP1346286A1/en
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management

Definitions

  • the invention relates to an optimized management method for the allocation of memory of an on-board computer system, designated by on-board system, and to the corresponding on-board system.
  • Embedded systems currently available on the market such as digital assistants, microprocessor or microcontroller cards, PCMCIA type cards, portable computing devices, also designated by "no e ooJc” or “suJb-notefoooJc” in language Anglo-Saxon, have for common characteristic, often contradictory, the reduction of their dimension and their obstruction and the increase of their functionality, thanks, in particular, to the constant progress of the computing power of the microprocessors or microcontrollers integrated in these last .
  • on-board systems tend in fact to reproduce the functionalities of microcomputers as faithfully as possible, with the exception, however, of the functionalities offered by the possibility of connecting peripheral devices or organs to these latter .
  • the on-board system is constituted by a microprocessor card, also designated by smart card, as shown in FIG. 1, this on-board system referenced 10 conventionally comprises input / output circuits, I / O, referenced 12, information processing resources, referenced 14, constituted by a microcontroller and connected to the input / output circuits 12.
  • a non-volatile memory 18 is provided, which consists of a programmable memory 18a and into a ROM type memory, or read-only type memory 18b.
  • a working memory, RAM memory referenced 16 is also provided. These memories are connected to the microcontroller or microprocessor 14 by a bus link. The whole is managed by an operating system OS, which can be installed in non-volatile memory 18.
  • the microprocessor card can include a cryptographic calculation unit SI, referenced 20, itself connected to the microprocessor 14, and playing the role, in a way, of a dedicated co-processor.
  • the microprocessor itself can be replaced or supplemented by logic circuits implanted in a semiconductor chip, these logic circuits being able to be circuits of type ASIC, from the English Application Specifies Integrated Circuit.
  • the management of the memory area is conventionally carried out, for the installation of multiple applications for example, by a reference constituted by a pointer, linking a start address and an end address of the memory area relating to an application.
  • data packets relating to these applications are written to any addresses in this memory area, the only memory allocation and writing criterion consisting of a criterion of sufficient free memory space between a start pointer and an end pointer, to allow the storage of a data packet of determined size.
  • the aforementioned crumbling or fragmentation phenomenon presents, as in the case of the fragmentation phenomenon of the memory area of the hard disks of microcomputers, serious drawbacks, such as the slowing down of the execution of the applications or programs considered. , non-optimized use of the memory space of the on-board system.
  • the object of the present invention is to remedy the aforementioned drawbacks of on-board systems of the prior art.
  • an object of the present invention is the implementation of a method for optimized management of the dynamic allocation of memory to a data structure or application identified by an identification number and stored in the form of packets.
  • digital information in the memory area of an on-board system process by which the elementary memory area is subdivided into elementary memory blocks organized according to an addressable network.
  • Another object of the present invention is therefore the implementation of an optimized management method for the dynamic allocation of memory in an on-board system, in which, by virtue of the subdivision of the memory area into elementary memory blocks, and in a process of rearranging the elementary blocks of allocated blocks, the phenomenon of crumbling or fragmentation of the memory area of the on-board system is substantially eliminated.
  • Another object of the present invention is therefore the implementation of an optimized management method for the dynamic allocation of memory in an on-board system in which a defragmentation process of the memory area of the latter makes it possible to remove substantially all crumbling phenomenon after uninstalling an application.
  • the method for optimized management of the dynamic allocation of memory to a data structure identified by a digital identification number in the memory area of an embedded system, object of the invention is implemented from packets d information consisting of object code packets representative of this data structure and of data packets relating to this data structure, the memory area being subdivided into elementary addressable memory blocks.
  • It consists in allocating to object code packets a set of elementary memory blocks located at addresses substantially contiguous in a first memory range dedicated to allocating memory of object code packets from this memory area and to allocating to the data packets another set of elementary memory blocks in a second memory range dedicated to memory allocation of data packets in this memory area. This avoids the fragmentation of the first and second dedicated ranges, during successive installations / uninstalls of data structures.
  • the method of optimized management of the dynamic allocation of memory, object of the invention finds application to any on-board system, but more particularly to multi-application microprocessor or microcontroller cards.
  • FIG. 2a represents a functional flowchart illustrating! f steps allowing the implementation of the method for optimized management of the memory allocation of a system embedded object of the present invention during an application installation process
  • FIG. 2b represents, by way of illustration, a flowchart representative of the detail of the steps for implementing the method for optimally managing the allocation of memory of an embedded system, object of the present invention, during a process of erasing an application
  • FIG. 2a represents a functional flowchart illustrating! f steps allowing the implementation of the method for optimized management of the memory allocation of a system embedded object of the present invention during an application installation process
  • FIG. 2b represents, by way of illustration, a flowchart representative of the detail of the steps for implementing the method for optimally managing the allocation of memory of an embedded system, object of the present invention, during a process of erasing an application
  • FIG. 2a represents a functional flowchart illustrating! f steps allowing the implementation of the method for optimized management of the memory allocation of a system embedded object of
  • FIG. 2c represents, by way of illustration, a functional flowchart of a particular nonlimiting operating mode of allocation of elementary memory blocks allowing the implementation of the method of managing the allocation of memory of an embedded system, object of the present invention
  • Figures 3a and 3b show, by way of illustration, a preferred implementation mode of the non-limiting memory allocation method of managing an embedded system, the object of 'the present invention, wherein a process of reallocation of already allocated elementary memory blocks is used
  • FIG. 4 represents, by way of illustration, an on-board system, such as a multi-application microprocessor or microcontroller card, comprising, stored in non-volatile memory, data structures to which elementary memory blocks have been allocated, thanks to the implementation of the optimized management method of the memory allocation of an embedded system object of the present invention.
  • an on-board system such as a multi-application microprocessor or microcontroller card, comprising, stored in non-volatile memory, data structures to which elementary memory blocks have been allocated, thanks to the implementation of the optimized management method of the memory allocation of an embedded system object of the present invention.
  • FIG. 2a represents a functional flowchart of the essential steps allowing the implementation of the method of optimized management of the dynamic allocation of memory to a data structure in a embedded system, in accordance with the object of the present invention, during the installation of an application, this functional flowchart corresponding in fact to a state diagram of the abovementioned essential steps.
  • step S represented in FIG. 2a corresponds to a starting state in which a data structure, constituted by an application, by system data, if necessary by keys or specific numerical values, must be stored, that is to say installed in the case of applications for example in the memory area of the on-board system, the structure of which corresponds to that previously described in the description in conjunction with FIG. 1.
  • each data structure can advantageously be identified by an identification number, denoted ID_A j where j can take values between 1 and n, n indicating the total number of data structures capable of being stored in the aforementioned memory space .
  • each block B i can be a power of 2, in order to facilitate the addressing of each memory block elementary as well as the addressing in each elementary memory block thus defined.
  • each elementary memory block can comprise 256 bytes.
  • AAAA AAAA
  • step S at the start there is an arbitrary numerical value, noted AAAA, at step S at the start, which can be advantageously used in order to allow the implementation of a dynamic memory allocation method by specific elementary memory blocks, more particularly adapted to the implementation of the optimized management method of dynamic memory allocation, object of the present invention, as will be described later in the description.
  • [ID_Aj]? 1 the set of identification numbers of data structures capable of being installed and managed in accordance with the optimized memory allocation management protocol object of the present invention
  • QCOjp any object code packet relating to a data structure or application with identification number ID_A during the installation procedure of the application in question;
  • QD jp any data packet relating to the data structure or application of the same identification number ID_Aj during
  • the information packets are constituted by above-mentioned object code packets, representative of this data structure, and by data packets relating to this data structure or to the application considered.
  • This subdivision into information packets of the two aforementioned categories results from a de facto discrimination of these information packets according to the installation step carried out. It is understood in particular that during the installation of the object code representative of the data structure or of the application, the corresponding information packets are known as such. The same applies to the data packets relating to this data structure or application. Thus, the aforementioned subdivision results a priori from the process of installing each application in the memory area of the corresponding embedded system.
  • the method of optimized management of the dynamic allocation of memory to a data structure, object of the present invention consists of a step Ai, as shown in FIG. 2a, to be allocated to the packets of object code QC0 jP for the corresponding application or data structure, a set of elementary memory blocks, noted [BLi] J ⁇ J these elementary memory blocks being located at substantially contiguous addresses in a first memory range dedicated to the allocation of memory for object code packets of the memory zone considered.
  • step Ai the allocation process, in step Ai, to the object code packets is noted:
  • MSi designates the first range of memory dedicated to the allocation of memory of the aforementioned object code packets.
  • QC designating in fact the memory space required in number of elementary memory blocks to ensure the storage of all the packets of information of object code QCO jp for the corresponding data structure or application.
  • Dynamic allocation of memory to a data structure object of the present invention, consists, in a step A 2 / of allocating to QD jP data packets another set of elementary memory blocks, denoted
  • step A 2 the corresponding allocation operation is noted according to the relation:
  • the starting address is established in a nonlimiting manner at the value L-QD where QD denotes in fact the memory space necessary for memorizing all the data packets QDj P for the application or the corresponding data structure.
  • start and end addresses for defining the sets of elementary memory blocks mentioned above in step Ai respectively A 2 / these data can be arbitrary, provided that no risk of recovery is incurred as regards relates to the aforementioned sets.
  • Sub-step 1 of erasure is then followed by a sub-step 2 of translation of E ⁇ code 2 .
  • This translation operation is carried out for lo designating the first code block of the application referenced ID_Ar and the max last code block of this same application subject to erasure.
  • the previous translation operation consists in fact of translating the blocks of index lmax + j to the blocks of index 10 + j followed by erasure by assigning the identification value AAAA of the displaced blocks.
  • an erasure step E 2 is shown in FIG. 2b, this operation being noted, for any index 1 of the blocks BLi, with
  • the subdivision of the aforementioned memory area into addressable blocks can be carried out in a particularly advantageous manner thanks to the implementation of a specific memory allocation process, which will now be described in a non-limiting manner. more detailed limitation in conjunction with FIG. 2c.
  • FIG. 2c it is indicated that the process of dynamic memory allocation by elementary memory blocks to a data structure is implemented on the basis of at least one instruction for allocating an elementary memory block BLi , allocation operation denoted A by which, to the aforementioned elementary memory block is associated a reference to the identification number of the data structure or application considered, and from at least one instruction for erasing a block of elementary memory, instruction corresponding to operation E shown in FIG. 2c.
  • the allocation operation A for allocating an elementary memory block, consists in assigning to the reference to the identification number associated with the elementary memory block considered the value of the identification number ID_A.
  • the allocation step A in accordance with the aforementioned allocation process consists in fact in assigning as a reference to the identification number of the data structure or application, the value of the aforementioned identification number to each BLi block in which the digital information packets of object code or data are stored. It is understood in particular, as shown in FIG. 2c, that the assignment of the value of the identification number to the reference to the identification number consists in associating in a one-to-one manner the value of this identification number with the block of corresponding elementary memory BLi, this operation being noted:
  • the aforementioned one-to-one mapping can be carried out by association with each block BLi of a data field representative of the value of the aforementioned identification number ID_A j in a table for managing the dynamic allocation of memory of the memory area of the abovementioned on-board system.
  • the erasing step E consists, to erase an elementary memory block, at assign to the reference to the identification number associated with the elementary memory block considered BLi an arbitrary value in place of the identification number of the data structure or application considered.
  • This arbitrary value is of course the AAAA value previously mentioned in the description. This arbitrary value is distinct from any value of identification number assigned to a data structure considered.
  • 2c can consist, to allocate a block of given elementary memory, denoted BLi, to the aforementioned digital information packet Q k , and prior to any step consisting in assigning to the reference to the identification number the value of the identification number, to be verified, for any block of elementary memory already allocated, the identity of the reference to the identification number and of the identification number of the corresponding data structure, in a step AAi.
  • This identity verification consists in carrying out a test consisting in searching for the first memory block BLi whose associated identification number ID_A r corresponds to the identification number ID_Ak of the data structure or application for which the allocation is to be carried out. .
  • step AA3 On a negative response to the AAl test, consisting in searching for the next block belonging to the application whose identification number is ID_A k , an instruction for allocating a block of free elementary memory is called in step AA3, none any memory blocks already allocated to the application, the identification number of which is ID_A k, which does not have sufficient free space to contain the information packet Q k .
  • BL a (AAAA) BL a (ID_A).
  • the aforementioned allocation instruction of the following elementary block thus makes it possible to allocate an elementary memory block of address a, a being any offset value, da ⁇ N set of natural integers.
  • the selected elementary memory block is of course an elementary block to which the arbitrary value AAAA was previously assigned and therefore corresponds to an erased block, that is to say a free block ready for any allocation operation and memorizing the corresponding information packet Q k .
  • the positive response to the AAi test indicates that the elementary memory block which has just been found is at least partially allocated to the data structure or application for which the allocation is to be carried out.
  • the allocation method then consists in verifying, in a test AA 2 , the existence of a sufficient memory space remaining in the current elementary memory block BL ⁇ (ID_A j ) mentioned above to memorize the digital information Q k previously mentioned.
  • the verification of the existence of sufficient memory space for the test AA 2 includes setting the particular index r 0 to value r and is noted:
  • LR r designates the remaining memory space for the current elementary memory block
  • LB r designates the total memory space of each current elementary block, that is to say 256 bytes in the embodiment indicated above
  • LO r designates the memory space occupied in the aforementioned current elementary memory block.
  • the information packet Q k On a positive response to the verification test AA 2 , the information packet Q k requiring a memory space less than the memory space of the current elementary memory block, the information packet Q k can be allocated, in a step AA, the aforementioned current elementary memory block BL ⁇ (ID_A r ), the digital information packet Q k can be stored in the free memory area of the aforementioned current elementary memory block.
  • the allocation method in accordance with the object of the present invention can consist of in addition to calculating, in a step AA 5, a verification value of the allocated elementary memory block, this operation being designated by calculation CKS in FIG. 2c.
  • step AA 5 the calculation of the verification value, also designated by check sum in Anglo-Saxon language, can be carried out by means of calculation of verification value of conventional type, these calculation means being able moreover to correspond to the specialized calculation circuit 20 contained in the systems onboard of the conventional type, as described previously in the description.
  • Step A 55 can make it possible to call a step AA 6 of error management of conventional type making it possible to highlight a problem of integrity of the data or of stored code, which can provide for the blocking of the on-board system.
  • the dynamic memory allocation process previously described in connection with FIG. 2c can be implemented in a preferential manner to proceed to the allocation steps Ai and / or A 2 of FIG. 2a or 2b.
  • a data structure such as an application
  • that can create data relating to that application or to that data structure at any time and much more frequently it is however much easier to control because the data blocks do not have to be stored consecutively. It is therefore quite easy to reuse an empty elementary memory block by storing in it data packets relating to an application. The fact of separating the data packets from the code packets therefore solves the problem of crumbling or fragmentation.
  • the method of optimized management of the dynamic allocation of memory to a data structure in accordance with the object of the present invention, also implements a defragmentation process, which will be described in conjunction with the Figures 3a and 3b.
  • FIG. 3a different applications have been represented, successively designated Applet 1, Applet 2, Applet 3 and Applet 4.
  • the different applications in the example given correspond to the following numerical values:
  • Step 1 The successive steps for installing / uninstalling the aforementioned applications are shown in Figure 3b and are as follows: Step 1
  • the usable memory space is deemed to be subdivided into a set of elementary memory blocks, of address between 1 and L, of start address, respectively of end address.
  • the references le, 2c, 3c and 4c denote the elementary memory blocks allocated to the object code packets of the applications Applet 1, Applet 2, Applet 3 and Applet 4 respectively and the elementary memory blocks ld, 2d, 3d and 4d denote the elementary memory blocks allocated to data packets relating to these same applications.
  • the reallocation to the remaining object code packet, i.e. packet 2c following the deletion of the Applet 1 application in step 2, the Applet 2 application not being uninstalled consists in fact to reallocate by rearranging the elementary memory blocks allocated to the above-mentioned object code packet.
  • the rearrangement of the elementary memory block occupied by the object code 2c in FIG. 3b is represented by the translation T of the latter for passage to the elementary memory block of address 1 at the start of step 2.
  • the aforementioned reallocation by rearrangement, and in particular by translation allows the rearrangement of any set of elementary memory blocks located at substantially contiguous addresses to fill the erased elementary memory blocks allocated previously to the uninstalled application.
  • the memory area of the on-board system, non-volatile programmable memory area is preferably addressed according to a linear address field comprising a start address and an end address of the memory area. , these addresses each constituting an end address. These addresses are denoted 1 and L in FIG. 3b.
  • the definition of the first, respectively of the second dedicated memory range and the allocation of the data packets can be carried out from one, respectively from the other of the end addresses, or vice versa.
  • the choice of the start address 1, respectively of the end address L to ensure the allocation of the elementary memory blocks to the object code packets has no effect on the implementation of the method object of the present invention.
  • the explicit definition of each of the first and second memory ranges dedicated to the allocation of memory for object code packets or data packets is not necessary. In particular, this operating mode makes it possible to optimize the occupation of the aforementioned memory area in the absence of any explicit definition of the first and of the second dedicated memory range.
  • addressing the content of the elementary memory blocks, for the allocation, reallocation and addressing operations for the definition of the first and of the second memory range is relative addressing.
  • the relative addressing, in each elementary memory block allows without difficulty the rearrangement of the aforementioned blocks by translation of a desired number of elementary memory blocks freed following the declaration of anterior and / or posterior elementary blocks as free or deleted blocks.
  • FIG. 4 A more detailed description of an on-board multi-application system specially adapted for implementing the method of optimized management of the memory allocation to a data structure, in accordance with the object of the present invention, will now be given in conjunction with FIG. 4.
  • the abovementioned on-board system comprises an operating system ensuring the management of the input / output circuits of the random access memory and of the non-volatile programmable memory of this system. operation via the microprocessor.
  • the on-board system comprises, in the non-volatile programmable memory area 18a, a management table, denoted TG, and for allocating the memory area by elementary memory blocks.
  • this TG management table can correspond either to a FAT type file, or, on the contrary, as shown in a nonlimiting manner in FIG. 4, in a table comprising for each application or data structure, a identification number ID_A k , the value of the occupied memory space noted LI k for the corresponding elementary memory block and the verification values CKS ⁇ a and CKSib for the aforementioned elementary memory block.
  • the aforementioned management table TG makes it possible to ensure the allocation process as shown in FIG. 2c and of course the process for optimized management of the dynamic allocation of memory in accordance with the object of the present invention.
  • the non-volatile programmable memory 18a can comprise, by way of example, the elementary memory blocks allocated to the object code packets, respectively to the data packets, according to the arrangement represented in FIG. 4 for the applet 3 applications. , Applet 2 and Applet 4 previously mentioned in the description after performing step 4 of Figure 3b.
  • the non-volatile programmable memory 18a comprises the object code packets representative of a set of applications, these object code packets being stored in a set of elementary memory blocks located at addresses substantially contiguous in the first range. of memory Pi as well as data packets relating to each application, these data packets being stored in another set of elementary memory blocks in a second memory range P 2 dedicated to the memory allocation of the data packets.
  • the definition of the first MSi and the second MS 2 dedicated memory range is then carried out from the aforementioned end addresses, the first and second dedicated memory range MSi, MS 2 then being defined according to a first and a second disjoint set of elementary memory blocks, the memory area being thus optimized from the point of view of the occupation thereof.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)

Abstract

The invention concerns an optimised management method for allocating memory space of an onboard system to a data structure and a corresponding onboard system. The object code packets and the data packets being discriminated, and the memory being subdivided into addressable elementary memory blocks, the method consists in allocating (A1) to the object code packets a set of elementary memory blocks located in a first memory space (MS1) to addresses substantially adjacent and to the data packets another set of elementary memory blocks located in a second memory space (MS2). This enables to avoid fragmentation of the memory zone, during successive installations/deinstallations and to implement very easily an optimal defragmentation procedure, adapted to each type of data, code or application data.

Description

PROCEDE DE GESTION OPTIMISEE DE L'ALLOCATION DE MEMOIRE D'UN SYSTEME EMBARQUE ET SYSTEME EMBARQUE CORRESPONDANT. METHOD FOR OPTIMIZED MANAGEMENT OF THE ALLOCATION OF MEMORY OF AN ON-BOARD SYSTEM AND CORRESPONDING ON-BOARD SYSTEM.
L'invention est relative à un procédé de gestion optimisée de l'allocation de mémoire d'un système informatique embarqué, désigné par système embarqué, et au système embarqué correspondant .The invention relates to an optimized management method for the allocation of memory of an on-board computer system, designated by on-board system, and to the corresponding on-board system.
Les systèmes embarqués actuellement disponibles dans le commerce, tels que notamment les assistants numériques, les cartes à microprocesseur ou microcontrôleur, les cartes de type PCMCIA, les appareils informatiques portables, encore désignés par "no e ooJc" ou "suJb-notefoooJc" en langage anglo-saxon, ont pour caractéristique commune, souvent contradictoire, la réduction de leur dimension et de leur encombrement et l'augmentation de leur fonctionnalité, grâce, notamment, aux progrès constants de la puissance de calcul des microprocesseurs ou micro-contrôleurs intégrés dans ces derniers . Compte tenu de l'évolution précitée, les systèmes embarqués tendent, en fait, à reproduire de la manière la plus fidèle possible les fonctionnalités des microordinateurs, à l'exception toutefois des fonctionnalités offertes par la possibilité de connexion d'appareils ou organes périphériques à ces derniers .Embedded systems currently available on the market, such as digital assistants, microprocessor or microcontroller cards, PCMCIA type cards, portable computing devices, also designated by "no e ooJc" or "suJb-notefoooJc" in language Anglo-Saxon, have for common characteristic, often contradictory, the reduction of their dimension and their obstruction and the increase of their functionality, thanks, in particular, to the constant progress of the computing power of the microprocessors or microcontrollers integrated in these last . In view of the above-mentioned development, on-board systems tend in fact to reproduce the functionalities of microcomputers as faithfully as possible, with the exception, however, of the functionalities offered by the possibility of connecting peripheral devices or organs to these latter .
Parmi l'un des aspects du mode opératoire des systèmes embarqués qui sont susceptibles de restreindre le rapprochement des fonctionnalités de ces derniers de celles des micro-ordinateurs, celui relatif au mode de gestion de l'espace mémoire disponible apparaît crucial, dans la mesure où, à l'heure actuelle, un tel mode de gestion apparaît réduit à sa plus simple expression. En effet, dans le cas où le système embarqué est constitué par une carte à microprocesseur, encore désignée par carte à puce, ainsi que représenté en figure 1, ce système embarqué référencé 10 comprend de manière classique des circuits d'entrée/sortie, I/O, référencés 12, des ressources de traitement de l'information, référencés 14, constituées par un micro-contrôleur et reliées aux circuits d'entrée/sortie 12. En outre, une mémoire non volatile 18 est prévue, laquelle consiste en une mémoire programmable 18a et en une mémoire de type ROM, ou mémoire de type à accès en lecture seulement 18b. Enfin, une mémoire de travail, mémoire RAM référencée 16, est également prévue. Ces mémoires sont reliées au microcontrôleur ou microprocesseur 14 par une liaison par BUS. L'ensemble est géré par un système d'exploitation OS, lequel peut être implanté en mémoire non volatile 18. Enfin, dans certains cas, la carte à microprocesseur peut comporter une unité de calcul cryptographique SI, référencée 20, elle-même reliée au microprocesseur 14, et jouant le rôle, en quelque sorte, d'un co-processeur dédié .Among one of the aspects of the operating mode of on-board systems which are likely to restrict the reconciliation of their functionalities with those of microcomputers, that relating to the mode of management of available memory space appears crucial, insofar as , at present, such a management method appears reduced to its simplest expression. In fact, in the case where the on-board system is constituted by a microprocessor card, also designated by smart card, as shown in FIG. 1, this on-board system referenced 10 conventionally comprises input / output circuits, I / O, referenced 12, information processing resources, referenced 14, constituted by a microcontroller and connected to the input / output circuits 12. In addition, a non-volatile memory 18 is provided, which consists of a programmable memory 18a and into a ROM type memory, or read-only type memory 18b. Finally, a working memory, RAM memory referenced 16, is also provided. These memories are connected to the microcontroller or microprocessor 14 by a bus link. The whole is managed by an operating system OS, which can be installed in non-volatile memory 18. Finally, in certain cases, the microprocessor card can include a cryptographic calculation unit SI, referenced 20, itself connected to the microprocessor 14, and playing the role, in a way, of a dedicated co-processor.
Le microprocesseur lui-même peut être remplacé ou complété par des circuits logiques implantés dans une puce à semi-conducteur, ces circuits logiques pouvant être des circuits de type ASIC, de l'anglais Application Spécifie Integrated Circui t .The microprocessor itself can be replaced or supplemented by logic circuits implanted in a semiconductor chip, these logic circuits being able to be circuits of type ASIC, from the English Application Specifies Integrated Circuit.
La gestion de la zone mémoire est de manière classique réalisée, pour l'installation d'applications multiples par exemple, par une référence constituée par un pointeur, liant une adresse de début et une adresse de fin de zone mémoire relative à une application. Lors de l'exécution de ces applications, des paquets de données relatives à ces applications sont écrites à des adresses quelconques de cette zone mémoire, le seul critère d'allocation mémoire et d'écriture consistant en un critère d'espace mémoire libre suffisant entre un pointeur de début et un pointeur de fin, pour permettre la mémorisation d'un paquet de données de grandeur déterminée .The management of the memory area is conventionally carried out, for the installation of multiple applications for example, by a reference constituted by a pointer, linking a start address and an end address of the memory area relating to an application. During the execution of these applications, data packets relating to these applications are written to any addresses in this memory area, the only memory allocation and writing criterion consisting of a criterion of sufficient free memory space between a start pointer and an end pointer, to allow the storage of a data packet of determined size.
Dans le cas de procédures d'installation / désinstallation successives d'applications dans la zone mémoire correspondante, des espace mémoires libres sont créés dans lesquels des paquets de code objet, respectivement de données, peuvent être écrits et mémorisés . Un tel processus opératoire conduit à un phénomène d' endettement , encore désigné par fragmentation, de la zone mémoire considérée.In the case of successive installation / uninstallation procedures of applications in the corresponding memory area, free memory spaces are created in which object code packets, respectively of data, can be written and stored. Such an operational process leads to a phenomenon of indebtedness, also referred to as fragmentation, of the memory area considered.
Le phénomène d' émiettement ou de fragmentation précité présente, de même que dans le cas du phénomène de fragmentation de la zone mémoire des disques durs des micro-ordinateurs, de sérieux inconvénients, tels que le ralentissement de l'exécution des applications ou programmes considérés, utilisation non optimisée de l'espace mémoire du système embarqué. La présente invention a pour objet de remédier aux inconvénients précités des systèmes embarqués de l'art antérieur.The aforementioned crumbling or fragmentation phenomenon presents, as in the case of the fragmentation phenomenon of the memory area of the hard disks of microcomputers, serious drawbacks, such as the slowing down of the execution of the applications or programs considered. , non-optimized use of the memory space of the on-board system. The object of the present invention is to remedy the aforementioned drawbacks of on-board systems of the prior art.
En conséquence, un objet de la présente invention est la mise en œuvre d'un procédé de gestion optimisée de l'allocation dynamique de mémoire à une structure de données ou application identifiée par un numéro d'identification et mémorisée sous forme de paquets d'information numérique dans la zone mémoire d'un système embarqué, procédé par lequel la zone mémoire élémentaire est subdivisée en blocs de mémoire élémentaires organisés selon un réseau adressable. Un autre objet de la présente invention est en conséquence la mise en œuvre d'un procédé de gestion optimisée de l'allocation dynamique de mémoire dans un système embarqué, dans lequel, grâce à la subdivision de la zone mémoire en blocs de mémoire élémentaires, et à un processus de réarrangement des blocs élémentaires de blocs alloués, le phénomène d' émiettement ou de fragmentation de la zone mémoire du système embarqué est sensiblement supprimé.Consequently, an object of the present invention is the implementation of a method for optimized management of the dynamic allocation of memory to a data structure or application identified by an identification number and stored in the form of packets. digital information in the memory area of an on-board system, process by which the elementary memory area is subdivided into elementary memory blocks organized according to an addressable network. Another object of the present invention is therefore the implementation of an optimized management method for the dynamic allocation of memory in an on-board system, in which, by virtue of the subdivision of the memory area into elementary memory blocks, and in a process of rearranging the elementary blocks of allocated blocks, the phenomenon of crumbling or fragmentation of the memory area of the on-board system is substantially eliminated.
Un autre objet de la présente invention est en conséquence la mise en œuvre d'un procédé de gestion optimisée de l'allocation dynamique de mémoire dans un système embarqué dans lequel un processus de défragmentation de la zone mémoire de ce dernier permet de supprimer sensiblement tout phénomène d' émiettement après désinstallation d'une application.Another object of the present invention is therefore the implementation of an optimized management method for the dynamic allocation of memory in an on-board system in which a defragmentation process of the memory area of the latter makes it possible to remove substantially all crumbling phenomenon after uninstalling an application.
Le procédé de gestion optimisée de l'allocation dynamique de mémoire à une structure de données identifiée par un numéro d'identification numérique dans la zone mémoire d'un système embarqué, objet de l'invention, est mis en œuvre à partir de paquets d'information constitués par des paquets de code objet représentatifs de cette structure de données et par des paquets de données relatives à cette structure de données, la zone mémoire étant subdivisée en blocs de mémoire élémentaires adressables.The method for optimized management of the dynamic allocation of memory to a data structure identified by a digital identification number in the memory area of an embedded system, object of the invention, is implemented from packets d information consisting of object code packets representative of this data structure and of data packets relating to this data structure, the memory area being subdivided into elementary addressable memory blocks.
Il consiste à allouer aux paquets de code objet un ensemble de blocs de mémoire élémentaires localisés à des adresses sensiblement contigués dans une première plage de mémoire dédiée à l'allocation de mémoire de paquets de code objet de cette zone mémoire et à allouer aux paquets de données un autre ensemble de blocs de mémoire élémentaires dans une deuxième plage de mémoire dédiée à l'allocation de mémoire de paquets de données de cette zone mémoire. Ceci permet d'éviter la fragmentation des première et deuxième plages dédiées, lors d' installations/désinstallations successives de structures de données.It consists in allocating to object code packets a set of elementary memory blocks located at addresses substantially contiguous in a first memory range dedicated to allocating memory of object code packets from this memory area and to allocating to the data packets another set of elementary memory blocks in a second memory range dedicated to memory allocation of data packets in this memory area. This avoids the fragmentation of the first and second dedicated ranges, during successive installations / uninstalls of data structures.
Le procédé de gestion optimisée de l'allocation dynamique de mémoire, objet de l'invention, trouve application à tout système embarqué, mais de manière plus particulière aux cartes à microprocesseur ou micro- contrôleur multi-application.The method of optimized management of the dynamic allocation of memory, object of the invention finds application to any on-board system, but more particularly to multi-application microprocessor or microcontroller cards.
Le procédé de gestion optimisée de l'allocation dynamique de mémoire d'un système embarqué et le système embarqué correspondant seront mieux compris à la lecture de la description et à 1 ' observations des dessins ci- après dans lesquels, outre la figure 1 relative à un système embarqué, tel qu'une carte à puce, de l'art antérieur : la figure 2a représente un organigramme fonctionnel illustrât!f des étapes permettant la mise en œuvre du procédé de gestion optimisée de l'allocation de mémoire d'un système embarqué objet de la présente invention lors d'un processus d'installation d'une application ; la figure 2b représente, à titre illustratif, un organigramme représentatif du détail des étapes de mise en œuvre du procédé de gestion optimisée de l'allocation de mémoire d'un système embarqué, objet de la présente invention, lors d'un processus d'effacement d'une application ; la figure 2c représente, à titre illustratif, un organigramme fonctionnel d'un mode opératoire particulier non limitatif d'allocation de blocs de mémoire élémentaires permettant la mise en œuvre du procédé de gestion de l'allocation de mémoire d'un système embarqué, objet de la présente invention ; les figures 3a et 3b représentent, à titre illustratif, un mode de mise en œuvre préférentiel non limitatif du procédé de gestion de l'allocation de mémoire d'un système embarqué, objet de' la présente invention, dans lequel un processus de réallocation de blocs de mémoire élémentaires déjà alloués est utiliséThe method of optimized management of the dynamic allocation of memory of an on-board system and the corresponding on-board system will be better understood on reading the description and the observations of the drawings below in which, in addition to FIG. 1 relating to an on-board system, such as a smart card, of the prior art: FIG. 2a represents a functional flowchart illustrating! f steps allowing the implementation of the method for optimized management of the memory allocation of a system embedded object of the present invention during an application installation process; FIG. 2b represents, by way of illustration, a flowchart representative of the detail of the steps for implementing the method for optimally managing the allocation of memory of an embedded system, object of the present invention, during a process of erasing an application; FIG. 2c represents, by way of illustration, a functional flowchart of a particular nonlimiting operating mode of allocation of elementary memory blocks allowing the implementation of the method of managing the allocation of memory of an embedded system, object of the present invention; Figures 3a and 3b show, by way of illustration, a preferred implementation mode of the non-limiting memory allocation method of managing an embedded system, the object of 'the present invention, wherein a process of reallocation of already allocated elementary memory blocks is used
la figure 4 représente, à titre illustratif, un système embarqué, tel qu'une carte à microprocesseur ou micro-contrôleur multi-application, comportant, mémorisées en mémoire non volatile, des structure de données auxquelles des blocs de mémoire élémentaires ont été alloués, grâce à la mise en œuvre du procédé de gestion optimisée de l'allocation de mémoire d'un système embarqué objet de la présente invention.FIG. 4 represents, by way of illustration, an on-board system, such as a multi-application microprocessor or microcontroller card, comprising, stored in non-volatile memory, data structures to which elementary memory blocks have been allocated, thanks to the implementation of the optimized management method of the memory allocation of an embedded system object of the present invention.
Une description plus détaillée du procédé de gestion optimisée de l'allocation dynamique de mémoire à une structure de données, objet de la présente invention, sera maintenant donnée en liaison avec la figure 2a et les figures suivantes .A more detailed description of the method for optimized management of the dynamic allocation of memory to a data structure, object of the present invention, will now be given in conjunction with FIG. 2a and the following figures.
La figure 2a représente un organigramme fonctionnel des étapes essentielles permettant la mise en œuvre du procédé de gestion optimisée de l'allocation dynamique de mémoire à une structure de données dans un système embarqué, conformément à l'objet de la présente invention, lors de l'installation d'une application, cet organigramme fonctionnel correspondant en fait à un diagramme d'état des étapes essentielles précitées. En particulier, on comprend que l'étape S représentée en figure 2a correspond à un état de départ dans lequel une structure de données, constituée par une application, par des données système, le cas échéant par des clés ou des valeurs numériques spécifiques, doit être mémorisée, c'est-à-dire installée dans le cas d'applications par exemple dans la zone mémoire du système embarqué dont la structure correspond à celle précédemment décrite dans la description en liaison avec la figure 1. En particulier, on comprend que chaque structure de données peut avantageusement être identifiée par un numéro d'identification, noté ID_Aj où j peut prendre des valeurs comprises entre 1 et n, n indiquant le nombre total de structures de données susceptibles d'être mémorisées dans l'espace mémoire précité.FIG. 2a represents a functional flowchart of the essential steps allowing the implementation of the method of optimized management of the dynamic allocation of memory to a data structure in a embedded system, in accordance with the object of the present invention, during the installation of an application, this functional flowchart corresponding in fact to a state diagram of the abovementioned essential steps. In particular, it is understood that step S represented in FIG. 2a corresponds to a starting state in which a data structure, constituted by an application, by system data, if necessary by keys or specific numerical values, must be stored, that is to say installed in the case of applications for example in the memory area of the on-board system, the structure of which corresponds to that previously described in the description in conjunction with FIG. 1. In particular, it is understood that each data structure can advantageously be identified by an identification number, denoted ID_A j where j can take values between 1 and n, n indicating the total number of data structures capable of being stored in the aforementioned memory space .
En outre, pour la mise en œuvre du procédé objet de la présente invention, on indique que l'espace mémoire géré de manière optimisée conformément à ce dernier est avantageusement subdivisé en blocs de mémoire élémentaires, chaque bloc de mémoire élémentaire, noté BLi avec 1 pouvant varier de 1 = 1 à 1 = L, étant formé par un nombre déterminé d'octets.In addition, for the implementation of the method which is the subject of the present invention, it is indicated that the memory space managed in an optimized manner in accordance with the latter is advantageously subdivided into elementary memory blocks, each elementary memory block, denoted BLi with 1 can vary from 1 = 1 to 1 = L, being formed by a determined number of bytes.
Dans un mode de réalisation préférentiel non limitatif, on indique que le nombre d'octets constitutifs de chaque bloc B i peut être une puissance de 2, afin de faciliter l'adressage de chaque bloc de mémoire élémentaire ainsi que l'adressage dans chaque bloc de mémoire élémentaire ainsi défini .In a preferred nonlimiting embodiment, it is indicated that the number of constituent bytes of each block B i can be a power of 2, in order to facilitate the addressing of each memory block elementary as well as the addressing in each elementary memory block thus defined.
Dans un mode de réalisation donné à titre d'exemple non limitatif, on indique que chaque bloc de mémoire élémentaire peut comporter 256 octets.In an embodiment given by way of nonlimiting example, it is indicated that each elementary memory block can comprise 256 bytes.
Enfin, et dans le cadre de la mise en œuvre du procédé objet de la présente invention, on dispose à l'étape S de départ d'une valeur numérique arbitraire, notée AAAA, laquelle peut être avantageusement utilisée afin de permettre la mise en œuvre d'un procédé d'allocation dynamique de mémoire par blocs de mémoire élémentaires spécifique, plus particulièrement adapté à la mise en œuvre du procédé de gestion optimisée de l'allocation dynamique de mémoire, objet de la présente invention, ainsi qu'il sera décrit ultérieurement dans la description.Finally, and in the context of the implementation of the method which is the subject of the present invention, there is an arbitrary numerical value, noted AAAA, at step S at the start, which can be advantageously used in order to allow the implementation of a dynamic memory allocation method by specific elementary memory blocks, more particularly adapted to the implementation of the optimized management method of dynamic memory allocation, object of the present invention, as will be described later in the description.
Sur la figure 2a, à l'étape de départ S précitée, on note :In FIG. 2a, at the aforementioned starting step S, we note:
[ID_Aj] ?=1 l'ensemble des numéros d'identification de structures de données susceptibles d'être installées et gérées conformément au protocole de gestion optimisée d'allocation de mémoire objet de la présente invention ;[ID_Aj]? = 1 the set of identification numbers of data structures capable of being installed and managed in accordance with the optimized memory allocation management protocol object of the present invention;
[BLi] l'ensemble des blocs de mémoire élémentaires dont on dispose après subdivision de la zone mémoire du système embarqué précédemment cité ;[BL] all of the elementary memory blocks which are available after subdivision of the memory area of the abovementioned on-board system;
QCOjp tout paquet de code objet relatif à une structure de données ou application de numéro d'identification ID_A lors de la procédure d'installation de l'application considérée ; QDjp tout paquet de données relatif à la structure de données ou application de même numéro d'identification ID_Aj au cours deQCOjp any object code packet relating to a data structure or application with identification number ID_A during the installation procedure of the application in question; QD jp any data packet relating to the data structure or application of the same identification number ID_Aj during
1 ' installation. D'une manière générale, on indique que lors de l'installation d'une structure de données ou d'une application, les paquets d'information sont constitués par des paquets de code objet précités, représentatifs de cette structure de données, et par des paquets de données relatives à cette structure de données ou à l'application considérée .1 installation. In general, it is indicated that during the installation of a data structure or of an application, the information packets are constituted by above-mentioned object code packets, representative of this data structure, and by data packets relating to this data structure or to the application considered.
Cette subdivision en paquets d'information des deux catégories précitées résulte d'une discrimination de fait de ces paquets d'information en fonction de l'étape d'installation réalisée. On comprend en particulier que lors de l'installation du code objet représentatif de la structure de données ou de l'application, les paquets d'information correspondants sont connus en tant que tels. Il en est de même pour ce qui concerne les paquets de données relatives à cette structure de données ou application. Ainsi, la subdivision précitée résulte a priori du processus d'installation de chaque application dans la zone mémoire du système embarqué correspondant.This subdivision into information packets of the two aforementioned categories results from a de facto discrimination of these information packets according to the installation step carried out. It is understood in particular that during the installation of the object code representative of the data structure or of the application, the corresponding information packets are known as such. The same applies to the data packets relating to this data structure or application. Thus, the aforementioned subdivision results a priori from the process of installing each application in the memory area of the corresponding embedded system.
Compte tenu de la subdivision de la zone mémoire précitée en blocs de mémoire élémentaires adressables et de la discrimination de fait, et donc de la subdivision des paquets d'information en paquets de code objet et en paquets de données relatives à cette structure de données, le procédé de gestion optimisée de l'allocation dynamique de mémoire à une structure de données, objet de la présente invention, consiste en une étape Ai, ainsi que représenté en figure 2a, à allouer aux paquets de code objet QC0jP pour l'application ou la structure de données correspondante, un ensemble de blocs de mémoire élémentaires, noté [BLi] J^J ces blocs de mémoire élémentaires étant localisés à des adresses sensiblement contigués dans une première plage de mémoire dédiée à l'allocation de mémoire de paquets de code objet de la zone mémoire considérée.Given the subdivision of the aforementioned memory area into addressable elementary memory blocks and de facto discrimination, and therefore the subdivision of the information packets into object code packets and into data packets relating to this data structure, the method of optimized management of the dynamic allocation of memory to a data structure, object of the present invention, consists of a step Ai, as shown in FIG. 2a, to be allocated to the packets of object code QC0 jP for the corresponding application or data structure, a set of elementary memory blocks, noted [BLi] J ^ J these elementary memory blocks being located at substantially contiguous addresses in a first memory range dedicated to the allocation of memory for object code packets of the memory zone considered.
Sur la figure 2a, le processus d'allocation, à l'étape Ai, aux paquets de code objet est noté :In FIG. 2a, the allocation process, in step Ai, to the object code packets is noted:
[BLι]jgeMSι[BLι] jgeMSι
Dans la relation précédente, on indique que MSi désigne la première plage de mémoire dédiée à l'allocation de mémoire des paquets de code objet précités. En outre, et de manière non limitative, l'ensemble de blocs de mémoire élémentaires localisés à des adresses sensiblement contigués dans la première plage de mémoire dédiée est réputé défini par l'adresse de départ 1=1 et par l'adresse d'arrivée QC, QC désignant en fait l'espace mémoire nécessaire en nombre de blocs de mémoire élémentaires pour assurer la mémorisation de l'ensemble des paquets d'informations de code objet QCOjp pour la structure de données ou application correspondante. En outre, le procédé de gestion optimisée deIn the previous relation, it is indicated that MSi designates the first range of memory dedicated to the allocation of memory of the aforementioned object code packets. In addition, and in a nonlimiting manner, the set of elementary memory blocks located at addresses substantially contiguous in the first dedicated memory range is deemed to be defined by the starting address 1 = 1 and by the finishing address. QC, QC designating in fact the memory space required in number of elementary memory blocks to ensure the storage of all the packets of information of object code QCO jp for the corresponding data structure or application. In addition, the optimized management method of
1 ' allocation dynamique de mémoire à une structure de données, objet de la présente invention, consiste, en une étape A2/ à allouer aux paquets de données QDjP un autre ensemble de blocs de mémoire élémentaires, notéDynamic allocation of memory to a data structure, object of the present invention, consists, in a step A 2 / of allocating to QD jP data packets another set of elementary memory blocks, denoted
[BLi] L-QD dans une deuxième plage de mémoire dédiée à l'allocation de mémoire de paquets de données de la zone mémoire considérée.[BLi] L-QD in a second memory range dedicated to the memory allocation of data packets of the memory area considered.
Sur la figure 2a, à l'étape A2, l'opération d'allocation correspondante est notée selon la relation :In FIG. 2a, in step A 2 , the corresponding allocation operation is noted according to the relation:
[BLι]L_QDeMS2 [BLι] L _ QD eMS 2
En ce qui concerne l'ensemble de blocs de mémoire élémentaires dans la deuxième plage de mémoire dédiée à l'allocation de mémoire de paquets de données, l'adresse de départ est établie de manière non limitative à la valeur L-QD où QD désigne en fait l'espace mémoire nécessaire à la mémorisation de l'ensemble des paquets de données QDjP pour l'application ou la structure de données correspondante.As regards the set of elementary memory blocks in the second memory range dedicated to the allocation of data packet memory, the starting address is established in a nonlimiting manner at the value L-QD where QD denotes in fact the memory space necessary for memorizing all the data packets QDj P for the application or the corresponding data structure.
En ce qui concerne les adresses de début et de fin de définition des ensembles de blocs de mémoire élémentaires précités à l'étape Ai, respectivement A2/ ces données peuvent être arbitraires, pourvu qu'aucun risque de recouvrement ne soit encouru en ce qui concerne les ensembles précités.With regard to the start and end addresses for defining the sets of elementary memory blocks mentioned above in step Ai, respectively A 2 / these data can be arbitrary, provided that no risk of recovery is incurred as regards relates to the aforementioned sets.
En outre, ainsi que représenté en figure 2b, pour une opération d'effacement E des paquets de code QCOj, respectivement des paquets de données QDj précédemment mentionnés, le processus de gestion d'allocation de mémoire, objet de la présente invention, peut consister, ainsi que représenté sur la figure précitée, à partir d'une étape d'effacement d'une application ID_Ar, pour l'effacement de paquets de code objet QCOj , en une étape Ei, en une sous-étape d'effacement des blocs d'indice 1, cette sous-étape, portant la référence Eu, étant désignée sur la figure 2b par la relation : Eu ([BL )e MSi et [BLι]=ID_Ar alors [BLι]<-AAAA.In addition, as shown in FIG. 2b, for an erase operation E of the code packets QCO j , respectively of the data packets QD j previously mentioned, the memory allocation management process, object of the present invention, may consist, as shown in the aforementioned figure, from a step of erasing an application ID_Ar, for the erasure of packets of object code QCO j , in a step Ei, in a sub-step of erasure of blocks of index 1, this sub-step, bearing the reference Eu, being designated in FIG. 2b by the relation: Eu ([BL) e MSi and [BLι] = ID_Ar then [BLι] <- AAAA.
Par cette opération d'effacement, on comprend que pour tout bloc soumis à effacement, bloc BLi appartenant à la zone de mémorisation des paquets de code objet MSi, l'ensemble de ces blocs correspondant à l'application soumise à effacement, et donc à l'application référencée ID_Ar, alors, on attribue à chacun des blocs précités BLi la référence spécifique AAAA précédemment mentionnée dans la description.By this erasing operation, it is understood that for any block subjected to erasure, block BLi belonging to the storage area of the object code packets MSi, all of these blocks corresponding to the application subjected to erasure, and therefore to the application referenced ID_Ar, then, each of the aforementioned blocks BLi is assigned the specific reference AAAA previously mentioned in the description.
La sous-étape 1 d'effacement est alors suivie d'une sous-étape 2 de translation de code Eι2. Cette opération de translation est effectuée pour lo désignant le premier bloc de code de 1 ' application référencée ID_Ar et lmax dernier bloc de code de cette même application soumise à effacement.Sub-step 1 of erasure is then followed by a sub-step 2 of translation of Eι code 2 . This translation operation is carried out for lo designating the first code block of the application referenced ID_Ar and the max last code block of this same application subject to erasure.
L'opération de translation est alors effectuée sur chaque bloc d'indice lmaχ+j pour lesquels le numéro de référence est différent de AAAA, cette opération étant notée sur la figure 2b : [BLio+ ] = [BLιmax+j ]The translation operation is then performed on each block of index l ma χ + j for which the reference number is different from AAAA, this operation being noted in FIG. 2b: [BLio + ] = [BLι max + j]
[BLlmax+j ] <^AAAA .[BL l m a x + j ] <^ YYYY.
L'opération de translation précédente consiste en fait à réaliser une translation des blocs d'indice lmax+j vers les blocs d'indice 10+j suivie d'un effacement par attribution de la valeur d'identification AAAA des blocs déplacés .The previous translation operation consists in fact of translating the blocks of index lmax + j to the blocks of index 10 + j followed by erasure by assigning the identification value AAAA of the displaced blocks.
En ce qui concerne 1 ' effacement des paquets de données QDj, une étape d'effacement E2 est représentée en figure 2b, cette opération étant notée, pour tout indice 1 des blocs BLi, avecAs regards the erasure of the data packets QDj, an erasure step E 2 is shown in FIG. 2b, this operation being noted, for any index 1 of the blocks BLi, with
[BLι]eMS2 et [BLι]=ID_Ar alors [BLiJ AAAA.[BLι] eMS 2 and [BLι] = ID_Ar then [BLiJ YYYY.
On comprend ainsi qu'en tout bloc B i relatif aux paquets de données QDj est alors affecté la valeur d'identification AAAA précédemment mentionnée dans la description, ce qui permet d'effectuer l'effacement des paquets de données correspondant au bloc précité.It is thus understood that in any block B i relating to the data packets QD j is then assigned the identification value AAAA previously mentioned in the description, which makes it possible to erase the data packets corresponding to the aforementioned block.
On constate en particulier que, pour l'effacement des paquets de données QDj, il n'est pas nécessaire d'effectuer une translation des blocs effacés.It is noted in particular that, for the erasure of the data packets QDj, it is not necessary to carry out a translation of the erased blocks.
En ce qui concerne la mise en œuvre du procédé de gestion optimisée de l'allocation dynamique de mémoire à une structure de données ou application, objet de la présente invention, on indique qu'il est nécessaire de disposer d'un système de gestion de la zone mémoire précitée permettant de savoir quelles parties de celle-ci sont libres ou utilisées. Bien entendu, un tel système peut consister en un système analogue à celui utilisé pour la gestion des disques durs des micro-ordinateurs, ce système étant connu sous le nom de système de table d'allocation de fichier, encore désigné en vocable anglo- saxon par File Allocation Table, ou FAT.With regard to the implementation of the method of optimized management of the dynamic allocation of memory to a data structure or application, object of the present invention, it is indicated that it is necessary to have a system of management of the aforementioned memory zone making it possible to know which parts of it are free or used. Of course, such a system can consist of a system analogous to that used for the management of the hard disks of microcomputers, this system being known under the name of file allocation table system, also designated in Anglo-Saxon terms. by File Allocation Table, or FAT.
De préférence, mais de manière non limitative, la subdivision de la zone mémoire précitée en blocs adressables peut être réalisée de manière particulièrement avantageuse grâce à la mise en œuvre d'un processus d'allocation de mémoire spécifique, lequel sera maintenant décrit de manière non limitative plus détaillée en liaison avec la figure 2c. Ainsi que représenté en figure 2c, on indique que le processus d'allocation dynamique de mémoire par blocs de mémoire élémentaires à une structure de données est mis en œuvre à partir d'au moins une instruction d'allocation d'un bloc mémoire élémentaire BLi, opération d'allocation notée A par laquelle, au bloc mémoire élémentaire précité est associée une référence au numéro d'identification de la structure de données ou application considérée, et à partir d'au moins une instruction d'effacement d'un bloc de mémoire élémentaire, instruction correspondant à l'opération E représentée sur la figure 2c.Preferably, but not limited to, the subdivision of the aforementioned memory area into addressable blocks can be carried out in a particularly advantageous manner thanks to the implementation of a specific memory allocation process, which will now be described in a non-limiting manner. more detailed limitation in conjunction with FIG. 2c. As shown in FIG. 2c, it is indicated that the process of dynamic memory allocation by elementary memory blocks to a data structure is implemented on the basis of at least one instruction for allocating an elementary memory block BLi , allocation operation denoted A by which, to the aforementioned elementary memory block is associated a reference to the identification number of the data structure or application considered, and from at least one instruction for erasing a block of elementary memory, instruction corresponding to operation E shown in FIG. 2c.
En particulier, l'opération d'allocation A, pour allouer un bloc de mémoire élémentaire, consiste à attribuer à la référence au numéro d'identification associé au bloc de mémoire élémentaire considéré la valeur du numéro d'identification ID_A .In particular, the allocation operation A, for allocating an elementary memory block, consists in assigning to the reference to the identification number associated with the elementary memory block considered the value of the identification number ID_A.
Alors que dans les procédés d'allocation de mémoire des systèmes embarqués antérieurs, les zones de mémorisation des structures de données, telles que les applications, comportent une simple référence au numéro d'identification de la structure de données ou application correspondante réalisée sous forme d'un pointeur, pointeur de début de mémorisation de la structure de données ou application et pointeur de fin de mémorisation de la structure de données ou application considérée, l'étape d'allocation A conforme au processus d'allocation précité consiste en fait à attribuer à titre de référence au numéro d'identification de la structure de données ou application, la valeur du numéro d'identification précité à chaque bloc BLi dans lequel les paquets d'information numérique de code objet ou de données sont mémorisés. On comprend en particulier, ainsi que représenté en figure 2c, que l'attribution de la valeur du numéro d'identification à la référence au numéro d'identification consiste à associer de manière bi-univoque la valeur de ce numéro d'identification au bloc de mémoire élémentaire correspondant BLi, cette opération étant notée :Whereas in the memory allocation methods of the previous embedded systems, the storage areas of the data structures, such as the applications, include a simple reference to the identification number of the data structure or corresponding application produced in the form of a pointer, pointer at the start of storage of the data structure or application and pointer at the end of storage of the data structure or application considered, the allocation step A in accordance with the aforementioned allocation process consists in fact in assigning as a reference to the identification number of the data structure or application, the value of the aforementioned identification number to each BLi block in which the digital information packets of object code or data are stored. It is understood in particular, as shown in FIG. 2c, that the assignment of the value of the identification number to the reference to the identification number consists in associating in a one-to-one manner the value of this identification number with the block of corresponding elementary memory BLi, this operation being noted:
BLi ( ID_Aj )BLi (ID_Aj)
On comprend ainsi que la mise en correspondance bi-univoque précitée peut être réalisée par association à chaque bloc BLi d'un champ de données représentatif de la valeur du numéro d'identification précité ID_Aj dans un tableau de gestion de l'allocation dynamique de mémoire de la zone mémoire du système embarqué précité .It is thus understood that the aforementioned one-to-one mapping can be carried out by association with each block BLi of a data field representative of the value of the aforementioned identification number ID_A j in a table for managing the dynamic allocation of memory of the memory area of the abovementioned on-board system.
La structure complète du tableau précité sera donnée ultérieurement dans la description.The complete structure of the above table will be given later in the description.
Conformément à un autre aspect remarquable du processus précité d'allocation dynamique de mémoire par blocs de mémoire élémentaires, on indique, en référence à la figure 2b, que l'étape d'effacement E consiste, pour effacer un bloc de mémoire élémentaire, à attribuer à la référence au numéro d'identification associée au bloc de mémoire élémentaire considéré BLi une valeur arbitraire en lieu et place du numéro d'identification de la structure de données ou application considérée. Cette valeur arbitraire est bien entendu la valeur AAAA précédemment citée dans la description. Cette valeur arbitraire est distincte de toute valeur de numéro d'identification attribué à une structure de données considérée. En référence à la figure 2c, on note : [lD_Ar]"__:1 l'ensemble des numéros d'identification de structures de données déjà installées ; ID_Ak le numéro d'identification de la structure de données ou application pour laquelle l'allocation mémoire doit être effectuée, e [l,n] ; Qk 1 ' espace mémoire nécessaire aux paquets d'information numérique, paquets de code objet ou paquets de données auxquels un espace mémoire correspondant doit être alloué. Par ailleurs, on définit un indice r particulier, que l'on note r0 , à qui l'on donne la valeur 0. Dans ces conditions, l'opération d'allocation A, ainsi que représenté en figure 2c, peut consister, pour allouer un bloc de mémoire élémentaire donné, noté BLi, au paquet d'information numérique Qk précité, et préalablement à toute étape consistant à attribuer à la référence au numéro d'identification la valeur du numéro d'identification, à vérifier, pour tout bloc de mémoire élémentaire déjà alloué, l'identité de la référence au numéro d'identification et du numéro d'identification de la structure de données correspondante, en une étape AAi. Cette vérification d'identité consiste à effectuer un test consistant à chercher le premier bloc de mémoire BLi dont le numéro d'identification associé ID_Ar correspond au numéro d'identification ID_Ak de la structure de données ou application pour laquelle l'allocation doit être effectuée.In accordance with another remarkable aspect of the aforementioned process of dynamic allocation of memory by elementary memory blocks, it is indicated, with reference to FIG. 2b, that the erasing step E consists, to erase an elementary memory block, at assign to the reference to the identification number associated with the elementary memory block considered BLi an arbitrary value in place of the identification number of the data structure or application considered. This arbitrary value is of course the AAAA value previously mentioned in the description. This arbitrary value is distinct from any value of identification number assigned to a data structure considered. With reference to FIG. 2c, we note: [lD_A r ] "__ : 1 the set of identification numbers of data structures already installed; ID_A k the identification number of the data structure or application for which l the memory allocation must be carried out, e [l, n]; Q k 1 the memory space required for digital information packets, object code packets or data packets to which a corresponding memory space must be allocated. a particular index r, which we denote r 0 , to which we give the value 0. Under these conditions, the allocation operation A, as shown in FIG. 2c, can consist, to allocate a block of given elementary memory, denoted BLi, to the aforementioned digital information packet Q k , and prior to any step consisting in assigning to the reference to the identification number the value of the identification number, to be verified, for any block of elementary memory already allocated, the identity of the reference to the identification number and of the identification number of the corresponding data structure, in a step AAi. This identity verification consists in carrying out a test consisting in searching for the first memory block BLi whose associated identification number ID_A r corresponds to the identification number ID_Ak of the data structure or application for which the allocation is to be carried out. .
Le test précité est noté : 3 BLι(ID_Ar) avec ID_Ar = ID_Ak ? et r>roThe above test is noted: 3 BLι (ID_A r ) with ID_A r = ID_A k ? and r> ro
Sur réponse négative au test AAl, consistant à rechercher le prochain bloc appartenant à l'application dont le numéro d'identification est ID_Ak, une instruction d'allocation d'un bloc de mémoire élémentaire libre est appelé à l'étape AA3 , aucun des éventuels blocs de mémoire déjà alloués à l'application dont le numéro d'identification est ID_Ak ne possédant un espace libre suffisant pour contenir le paquet d'informations Qk.On a negative response to the AAl test, consisting in searching for the next block belonging to the application whose identification number is ID_A k , an instruction for allocating a block of free elementary memory is called in step AA3, none any memory blocks already allocated to the application, the identification number of which is ID_A k, which does not have sufficient free space to contain the information packet Q k .
Sur la figure 2c, l'appel de l'instruction d'allocation du bloc de mémoire élémentaire suivant est notée : BLa(AAAA) = BLa(ID_A) .In FIG. 2c, the call to the instruction to allocate the following elementary memory block is noted: BL a (AAAA) = BL a (ID_A).
L'instruction d'allocation précitée du bloc élémentaire suivant permet ainsi d'allouer un bloc de mémoire élémentaire d'adresse a, a étant une valeur de décalage quelconque, da ε N ensemble des entiers naturels. Le bloc de mémoire élémentaire retenu est bien entendu un bloc élémentaire auquel la valeur arbitraire AAAA a été attribuée précédemment et correspond de ce fait à un bloc effacé, c'est-à-dire à un bloc libre et prêt pour toute opération d'allocation et de mémorisation du paquet d'information Qk correspondant.The aforementioned allocation instruction of the following elementary block thus makes it possible to allocate an elementary memory block of address a, a being any offset value, da ε N set of natural integers. The selected elementary memory block is of course an elementary block to which the arbitrary value AAAA was previously assigned and therefore corresponds to an erased block, that is to say a free block ready for any allocation operation and memorizing the corresponding information packet Q k .
La réponse positive au test AAi indique que le bloc de mémoire élémentaire qui vient d'être trouvé est au moins partiellement alloué à la structure de données ou application pour laquelle l'allocation doit être effectuée. Sur réponse positive au test AAi précité, le procédé d'allocation consiste ensuite à vérifier, en un test AA2, l'existence d'un espace mémoire suffisant restant dans le bloc de mémoire élémentaire courant BLι(ID_Aj) précité pour mémoriser l'information numérique Qk précédemment mentionnée.The positive response to the AAi test indicates that the elementary memory block which has just been found is at least partially allocated to the data structure or application for which the allocation is to be carried out. On a positive response to the aforementioned test AAi, the allocation method then consists in verifying, in a test AA 2 , the existence of a sufficient memory space remaining in the current elementary memory block BLι (ID_A j ) mentioned above to memorize the digital information Q k previously mentioned.
Sur la figure 2c, la vérification de l'existence d'un espace mémoire suffisant au test AA2 comprend la mise à la valeur r de l'indice particulier r0 et est notée :In FIG. 2c, the verification of the existence of sufficient memory space for the test AA 2 includes setting the particular index r 0 to value r and is noted:
LRr = LBr - LOr et Qk < LRr ?LR r = LB r - LO r and Q k <LR r ?
relation dans laquelle LRr désigne 1 ' espace mémoire restant pour le bloc de mémoire élémentaire courant, LBr désigne 1 ' espace mémoire total de chaque bloc élémentaire courant, c'est-à-dire 256 octets dans le mode de réalisation précédemment indiqué, et LOr désigne l'espace mémoire occupé dans le bloc de mémoire élémentaire courant précité.relation in which LR r designates the remaining memory space for the current elementary memory block, LB r designates the total memory space of each current elementary block, that is to say 256 bytes in the embodiment indicated above, and LO r designates the memory space occupied in the aforementioned current elementary memory block.
Sur réponse positive au test de vérification AA2, le paquet d'information Qk nécessitant un espace mémoire inférieur à 1 ' espace mémoire du bloc de mémoire élémentaire courant, au paquet d'information Qk peut être alloué, en une étape AA, le bloc de mémoire élémentaire courant précité BLι(ID_Ar), le paquet d'information numérique Qk pouvant être mémorisé dans la zone mémoire libre du bloc de mémoire élémentaire courant précité.On a positive response to the verification test AA 2 , the information packet Q k requiring a memory space less than the memory space of the current elementary memory block, the information packet Q k can be allocated, in a step AA, the aforementioned current elementary memory block BLι (ID_A r ), the digital information packet Q k can be stored in the free memory area of the aforementioned current elementary memory block.
Ainsi, l'étape d'allocation AA4 consiste en une écriture du paquet d'information Qk dans le bloc BLι(lD_Ar) et en une actualisation de la valeur de l'espace mémoire occupé dans le bloc, notée : LOr = LOr+Qk .Thus, the allocation step AA 4 consists of writing the information packet Q k in the block BLι (lD_A r ) and updating the value of the memory space occupied in the block, noted: LO r = LO r + Q k .
Sur réponse négative au test de vérification AA , le bloc courant BL(ID_Aj0) ne possédant pas assez d'espace libre pour contenir le paquet d'information Qk, il convient de retourner à l'étape AAl afin de rechercher un nouveau bloc dont le numéro d'identification est ID_Ak et n'ayant pas encore été analysé lors de cette allocation.On negative response to the verification test AA, the current block BL (ID_A j0 ) not having enough free space to contain the information packet Qk, it is advisable to return to step AAl in order to search for a new block whose the identification number is ID_A k and has not yet been analyzed during this allocation.
Bien entendu, les étapes d'allocation proprement dites AA3 et AA4 sont suivies d'un retour à l'état de départ S .Of course, the allocation steps proper AA 3 and AA 4 are followed by a return to the starting state S.
Dans un mode de réalisation préférentiel non limitatif, on indique que, suite aux étapes d'allocation AA3 et AA4, et donc suite à l'allocation d'un bloc de mémoire élémentaire à une application et bien entendu à la mémorisation par écriture de l'information numérique, c'est-à-dire du paquet d'information Qk par écriture de cette information dans le bloc de mémoire élémentaire alloué, le procédé d'allocation conforme à l'objet de la présente invention peut consister en outre à calculer, en une étape AA5 une valeur de vérification du bloc de mémoire élémentaire alloué, cette opération étant désignée par calcul CKS sur la figure 2c.In a preferred nonlimiting embodiment, it is indicated that, following the allocation steps AA 3 and AA 4 , and therefore following the allocation of an elementary memory block to an application and of course the storage by writing of digital information, that is to say of the information packet Q k by writing this information in the allocated elementary memory block, the allocation method in accordance with the object of the present invention can consist of in addition to calculating, in a step AA 5, a verification value of the allocated elementary memory block, this operation being designated by calculation CKS in FIG. 2c.
D'une manière générale, on indique que pour la mise en œuvre de l'étape AA5, le calcul de la valeur de vérification, encore désigné par check sum en langage anglo-saxon, peut être effectué grâce à des moyens de calcul de valeur de vérification de type classique, ces moyens de calcul pouvant d'ailleurs correspondre au circuit de calcul spécialisé 20 contenu dans les systèmes embarqués de type classique, ainsi que décrit précédemment dans la description.In general, it is indicated that for the implementation of step AA 5 , the calculation of the verification value, also designated by check sum in Anglo-Saxon language, can be carried out by means of calculation of verification value of conventional type, these calculation means being able moreover to correspond to the specialized calculation circuit 20 contained in the systems onboard of the conventional type, as described previously in the description.
L'étape A55 peut permettre d'appeler une étape AA6 de gestion d'erreur de type classique permettant de souligner un problème d'intégrité des données ou de code mémorisés, pouvant prévoir le blocage du système embarqué .Step A 55 can make it possible to call a step AA 6 of error management of conventional type making it possible to highlight a problem of integrity of the data or of stored code, which can provide for the blocking of the on-board system.
Le processus d'allocation dynamique de mémoire précédemment décrit en liaison avec la figure 2c peut être mis en œuvre de manière préférentielle pour procéder aux étapes d'allocation Ai et/ou A2 de la figure 2a ou 2b.The dynamic memory allocation process previously described in connection with FIG. 2c can be implemented in a preferential manner to proceed to the allocation steps Ai and / or A 2 of FIG. 2a or 2b.
Par la mise en œuvre du procédé de gestion optimisée de l'allocation dynamique de mémoire à une structure de données ou application, conforme à l'objet de la présente invention, tel que décrit précédemment en liaison avec la figure 2a et le cas échéant 2c, on indique que le fait de mémoriser les paquets de code objet et les paquets de données relatifs à une application ou à une structure de données à des endroits différents permet d'éviter 1 ' émiettement de la zone mémoire lors de l'installation d'applications. En effet, lors de l'installation proprement dite, il n'existe pas vraiment de phénomène d ' émiettement ou de fragmentation pour les paquets de données de code, car les paquets de code correspondants sont stockés et mémorisés selon de gros blocs consécutifs, et ceci en une seule fois lors de 1 ' installation .By implementing the method of optimized management of the dynamic allocation of memory to a data structure or application, in accordance with the object of the present invention, as described previously in connection with FIG. 2a and if appropriate 2c , it is indicated that the fact of storing the object code packets and the data packets relating to an application or to a data structure in different places makes it possible to avoid the crumbling of the memory area during the installation of applications. Indeed, during the actual installation, there is not really any crumbling or fragmentation phenomenon for the code data packets, because the corresponding code packets are stored and memorized according to large consecutive blocks, and this all at once during installation.
En ce qui concerne le risque d' émiettement ou de fragmentation des paquets de données, une structure de données, telle qu'une application, pouvant créer des données relatives à cette application ou à cette structure de données à n'importe quel instant et de manière beaucoup plus fréquente, celui-ci est toutefois beaucoup plus facile à contrôler du fait que les blocs de données n'ont pas à être stockés consécutivement. Il est donc tout à fait facile de réutiliser un bloc de mémoire élémentaire vide en mémorisant dans ce dernier des paquets de données relatifs à une application. Le fait de séparer les paquets de données des paquets de codes résout donc bien le problème de 1 ' émiettement ou de la fragmentation.Regarding the risk of crumbling or fragmentation of data packets, a data structure, such as an application, that can create data relating to that application or to that data structure at any time and much more frequently, it is however much easier to control because the data blocks do not have to be stored consecutively. It is therefore quite easy to reuse an empty elementary memory block by storing in it data packets relating to an application. The fact of separating the data packets from the code packets therefore solves the problem of crumbling or fragmentation.
Toutefois, il apparaît tout de même des trous, c'est-à-dire des risques de blocs de mémoire élémentaires non occupés dans la première plage de mémoire dédiée à l'allocation de mémoire de paquets de code objet de la zone mémoire considérée. Ce risque apparaît lors de la suppression d'une application par exemple.However, holes still appear, that is to say risks of elementary memory blocks not occupied in the first memory range dedicated to the allocation of memory for object code packets of the memory zone considered. This risk appears when removing an application for example.
Pour supprimer totalement ce risque, le procédé de gestion optimisée de l'allocation dynamique de mémoire à une structure de données, conforme à l'objet de la présente invention, met également en œuvre un processus de défragmentation, lequel sera décrit en liaison avec les figures 3a et 3b.To completely eliminate this risk, the method of optimized management of the dynamic allocation of memory to a data structure, in accordance with the object of the present invention, also implements a defragmentation process, which will be described in conjunction with the Figures 3a and 3b.
On comprend en effet que suite à la désinstallation d'une application, cette désinstallation se traduit par un effacement des blocs de mémoire élémentaires alloués à cette application désinstallée dans la première plage de mémoire dédiée à l'allocation de mémoire de paquets de code objet.It is in fact understood that following the uninstallation of an application, this uninstallation results in an erasure of the elementary memory blocks allocated to this application uninstalled in the first range of memory dedicated to the allocation of memory for object code packets.
Sur la figure 3a, on a représenté différentes applications, désignées successivement Applet 1, Applet 2, Applet 3 et Applet 4. Les différentes applications dans l'exemple donné correspondent aux valeurs numériques ci-après :In FIG. 3a, different applications have been represented, successively designated Applet 1, Applet 2, Applet 3 and Applet 4. The different applications in the example given correspond to the following numerical values:
Les étapes successives d'installation/ désinstallation des applications précitées sont représentées en figure 3b et sont les suivantes : Etape 1The successive steps for installing / uninstalling the aforementioned applications are shown in Figure 3b and are as follows: Step 1
Installation de Applet 1 et installation de Applet 2. Etape 2Installation of Applet 1 and installation of Applet 2. Step 2
Effacement de Applet 1 et réallocation des paquets de code objet restants non désinstallés. Etape 3Clearing Applet 1 and reallocating remaining object code packages not uninstalled. Stage 3
Installation de Applet 3. Etape 4Installation of Applet 3. Step 4
Installation de Applet 4.Installation of Applet 4.
Sur la figure 3b, l'espace mémoire utilisable est réputé subdivisé en un ensemble de blocs de mémoire élémentaires, d'adresse comprise entre 1 et L, d'adresse de début, respectivement de fin.In FIG. 3b, the usable memory space is deemed to be subdivided into a set of elementary memory blocks, of address between 1 and L, of start address, respectively of end address.
Les références le, 2c, 3c et 4c désignent les blocs de mémoire élémentaires alloués aux paquets de code objet des applications Applet 1, Applet 2, Applet 3 et Applet 4 respectivement et les blocs de mémoire élémentaires ld, 2d, 3d et 4d désignent les blocs de mémoire élémentaires alloués aux paquets de données relatives à ces mêmes applications. La réallocation au paquet de code objet restant, c'est-à-dire le paquet 2c suite à l'effacement de 1 ' pplication Applet 1 à 1 ' étape 2 , 1 ' application Applet 2 n'étant pas désinstallée, consiste en fait à réallouer par réarrangement les blocs de mémoire élémentaires alloués au paquet de code objet restant précité. Ainsi, le réarrangement du bloc de mémoire élémentaire occupé par le code objet 2c sur la figure 3b est représenté par la translation T de ce dernier pour passage au bloc de mémoire élémentaire d'adresse de début 1 en fin d'étape 2.The references le, 2c, 3c and 4c denote the elementary memory blocks allocated to the object code packets of the applications Applet 1, Applet 2, Applet 3 and Applet 4 respectively and the elementary memory blocks ld, 2d, 3d and 4d denote the elementary memory blocks allocated to data packets relating to these same applications. The reallocation to the remaining object code packet, i.e. packet 2c following the deletion of the Applet 1 application in step 2, the Applet 2 application not being uninstalled, consists in fact to reallocate by rearranging the elementary memory blocks allocated to the above-mentioned object code packet. Thus, the rearrangement of the elementary memory block occupied by the object code 2c in FIG. 3b is represented by the translation T of the latter for passage to the elementary memory block of address 1 at the start of step 2.
Ainsi, la réallocation précitée par réarrangement, et en particulier par translation, permet le réarrangement de tout ensemble de blocs de mémoire élémentaires localisé à des adresses sensiblement contigués pour combler les blocs de mémoire élémentaires effacés alloués antérieurement à l'application désinstallée.Thus, the aforementioned reallocation by rearrangement, and in particular by translation, allows the rearrangement of any set of elementary memory blocks located at substantially contiguous addresses to fill the erased elementary memory blocks allocated previously to the uninstalled application.
D'une manière générale, ainsi que représenté en figure 3b, la zone mémoire du système embarqué, zone mémoire programmable non volatile, est de préférence adressée selon un champ d'adresses linéaire comportant une adresse de début et une adresse de fin de zone mémoire, ces adresses constituant chacune une adresse d'extrémité. Ces adresses sont notées 1 et L sur la figure 3b.In general, as shown in FIG. 3b, the memory area of the on-board system, non-volatile programmable memory area, is preferably addressed according to a linear address field comprising a start address and an end address of the memory area. , these addresses each constituting an end address. These addresses are denoted 1 and L in FIG. 3b.
Dans ces conditions, la définition de la première, respectivement de la deuxième plage de mémoire dédiée et l'allocation des paquets de données peuvent être effectuées à partir de l'une, respectivement de l'autre des adresses d'extrémité, ou réciproquement. On comprend bien entendu que le choix de l'adresse de début 1, respectivement de l'adresse de fin L pour assurer l'allocation des blocs de mémoire élémentaires aux paquets de code objet est sans incidence sur la mise en œuvre du procédé objet de la présente invention. On comprend également qu'en fonction du nombre d'applications installées, la définition explicite de chacune des première et deuxième plages de mémoire dédiées à l'allocation de mémoire de paquets de code objet ou de paquets de données n'est pas nécessaire. En particulier, ce mode opératoire permet d'optimiser l'occupation de la zone mémoire précitée en l'absence de toute définition explicite de la première et de la deuxième plage de mémoire dédiée.Under these conditions, the definition of the first, respectively of the second dedicated memory range and the allocation of the data packets can be carried out from one, respectively from the other of the end addresses, or vice versa. We understand of course that the choice of the start address 1, respectively of the end address L to ensure the allocation of the elementary memory blocks to the object code packets has no effect on the implementation of the method object of the present invention. It is also understood that, depending on the number of applications installed, the explicit definition of each of the first and second memory ranges dedicated to the allocation of memory for object code packets or data packets is not necessary. In particular, this operating mode makes it possible to optimize the occupation of the aforementioned memory area in the absence of any explicit definition of the first and of the second dedicated memory range.
Pour assurer un processus de réallocation des blocs de mémoire élémentaires particulièrement aisé, on indique que 1 ' adressage du contenu des blocs de mémoire élémentaires, pour les opérations d'allocation, de réallocation et d'adressage pour la définition de la première et de la deuxième plage de mémoire, est un adressage relatif. Dans ces conditions, l'adressage relatif, dans chaque bloc de mémoire élémentaire, permet sans difficulté le réarrangement des blocs précités par translation d'un nombre voulu de blocs de mémoire élémentaires libérés suite à la déclaration de blocs élémentaires antérieurs et/ou postérieurs comme blocs libres ou effacés.To ensure a process of reallocation of the elementary memory blocks particularly easy, it is indicated that addressing the content of the elementary memory blocks, for the allocation, reallocation and addressing operations for the definition of the first and of the second memory range, is relative addressing. Under these conditions, the relative addressing, in each elementary memory block, allows without difficulty the rearrangement of the aforementioned blocks by translation of a desired number of elementary memory blocks freed following the declaration of anterior and / or posterior elementary blocks as free or deleted blocks.
Le fait d'assurer l'allocation des blocs de mémoire élémentaires à partir des adresses d'extrémité, ainsi que mentionné précédemment dans la description, permet d'utiliser l'espace mémoire libre dans les meilleures conditions en l'absence de tout a priori sur la taille du code et des données relatives aux applications. La seule contrainte à respecter est l'absence de recouvrement de la première, respectivement de la deuxième plage mémoire dédiée.The fact of allocating the elementary memory blocks from the end addresses, as mentioned previously in the description, makes it possible to use the free memory space under the best conditions in the absence of any a priori on the size of the code and data relating to applications. The only constraint to be respected is the absence of overlapping of the first, respectively of the second dedicated memory area.
Une description plus détaillée d'un système embarqué multi-application spécialement adapté à la mise en œuvre du procédé de gestion optimisée de l'allocation mémoire à une structure de données, conforme à l'objet de la présente invention, sera maintenant donnée en liaison avec la figure 4. D'une manière générale, on rappelle que le système embarqué précité comporte un système d'exploitation assurant la gestion des circuits d'entrée/sortie de la mémoire vive et de la mémoire programmable non volatile de ce système d'exploitation par l'intermédiaire du microprocesseur.A more detailed description of an on-board multi-application system specially adapted for implementing the method of optimized management of the memory allocation to a data structure, in accordance with the object of the present invention, will now be given in conjunction with FIG. 4. In general, it will be recalled that the abovementioned on-board system comprises an operating system ensuring the management of the input / output circuits of the random access memory and of the non-volatile programmable memory of this system. operation via the microprocessor.
Ainsi que représenté sur la figure 4 précitée, le système embarqué comprend, dans la zone mémoire programmable non volatile 18a, un tableau de gestion, noté TG, et d'allocation de la zone mémoire par blocs de mémoire élémentaires.As shown in FIG. 4 above, the on-board system comprises, in the non-volatile programmable memory area 18a, a management table, denoted TG, and for allocating the memory area by elementary memory blocks.
Ainsi que mentionné précédemment, ce tableau de gestion TG peut correspondre soit à un fichier de type FAT, soit, au contraire, ainsi que représenté de manière non limitative sur la figure 4, en un tableau comportant pour chaque application ou structure de données, un numéro d'identification ID_Ak, la valeur de l'espace mémoire occupé noté LIk pour le bloc de mémoire élémentaire correspondant et les valeurs de vérification CKSιa et CKSib pour le bloc de mémoire élémentaire précité.As mentioned previously, this TG management table can correspond either to a FAT type file, or, on the contrary, as shown in a nonlimiting manner in FIG. 4, in a table comprising for each application or data structure, a identification number ID_A k , the value of the occupied memory space noted LI k for the corresponding elementary memory block and the verification values CKSι a and CKSib for the aforementioned elementary memory block.
Sur la figure 4, on a représenté uniquement les champs de données correspondantes pour k=l et k=2 , c'est- à-dire pour des blocs relatifs à deux applications distinctes .In FIG. 4, only the corresponding data fields have been represented for k = l and k = 2, that is ie for blocks relating to two distinct applications.
En particulier, le tableau de gestion TG précité permet d'assurer le processus d'allocation tel que représenté en figure 2c et bien entendu le processus de gestion optimisée de l'allocation dynamique de mémoire conforme à l'objet de la présente invention.In particular, the aforementioned management table TG makes it possible to ensure the allocation process as shown in FIG. 2c and of course the process for optimized management of the dynamic allocation of memory in accordance with the object of the present invention.
Dans ces conditions, la mémoire programmable non volatile 18a peut comporter, à titre d'exemple, les blocs de mémoire élémentaires alloués aux paquets de code objet, respectivement aux paquets de données, selon l'arrangement représenté en figure 4 pour les applications Applet 3 , Applet 2 et Applet 4 précédemment mentionnées dans la description après la réalisation de l'étape 4 de la figure 3b.Under these conditions, the non-volatile programmable memory 18a can comprise, by way of example, the elementary memory blocks allocated to the object code packets, respectively to the data packets, according to the arrangement represented in FIG. 4 for the applet 3 applications. , Applet 2 and Applet 4 previously mentioned in the description after performing step 4 of Figure 3b.
Dans ces conditions, la mémoire programmable non volatile 18a comprend les paquets de code objet représentatifs d'un ensemble d'applications, ces paquets de code objet étant mémorisés dans un ensemble de blocs de mémoire élémentaires localisés à des adresses sensiblement contigués dans la première plage de mémoire Pi ainsi que des paquets de données relatives à chaque application, ces paquets de données étant mémorisés dans un autre ensemble de blocs de mémoire élémentaires dans une deuxième plage de mémoire P2 dédiée à l'allocation de mémoire des paquets de données .Under these conditions, the non-volatile programmable memory 18a comprises the object code packets representative of a set of applications, these object code packets being stored in a set of elementary memory blocks located at addresses substantially contiguous in the first range. of memory Pi as well as data packets relating to each application, these data packets being stored in another set of elementary memory blocks in a second memory range P 2 dedicated to the memory allocation of the data packets.
En référence à la figure 4, on note également que, pour une zone mémoire programmable non volatile adressée selon un champ d'adresses linéaire comportant une adresse de début 1 et une adresse de fin L, constituant en fait les adresses d'extrémité précitées, la définition de la première MSi et de la deuxième MS2 plage de mémoire dédiée est alors effectuée à partir des adresses d'extrémité précitées, la première et la deuxième plage de mémoire MSi, MS2 dédiées étant alors définies selon un premier et un deuxième ensemble disjoints de blocs de mémoire élémentaires, la zone mémoire étant ainsi optimisée du point de vue de l'occupation de celle-ci. With reference to FIG. 4, it is also noted that, for a non-volatile programmable memory area addressed according to a linear address field comprising a start address 1 and an end address L, in fact constituting the aforementioned end addresses, the definition of the first MSi and the second MS 2 dedicated memory range is then carried out from the aforementioned end addresses, the first and second dedicated memory range MSi, MS 2 then being defined according to a first and a second disjoint set of elementary memory blocks, the memory area being thus optimized from the point of view of the occupation thereof.

Claims

REVENDICATIONS
1. Procédé de gestion optimisée de l'allocation dynamique de mémoire à une structure de données, mémorisée sous forme de paquets d'information numérique dans la zone mémoire d'un système embarqué, caractérisé en ce que lesdits paquets d'information étant constitués par des paquets de code objet, représentatifs de cette structure de données, et par des paquets de données relatives à cette structure de données et ladite zone mémoire étant subdivisée en blocs de mémoire élémentaires adressables, ce procédé consiste à allouer un ensemble de blocs mémoire élémentaires auxdits paquets de code et de données et pour une opération d'e facement, à réarranger, uniquement pour les paquets de code, les blocs élémentaires alloués.1. Method for optimized management of the dynamic allocation of memory to a data structure, stored in the form of digital information packets in the memory area of an on-board system, characterized in that said information packets being constituted by object code packets, representative of this data structure, and by data packets relating to this data structure and said memory area being subdivided into addressable elementary memory blocks, this method consists in allocating a set of elementary memory blocks to said code and data packets and for a faceting operation, to rearrange, only for code packets, the allocated elementary blocks.
2. Procédé selon la revendication 1, caractérisé en ce que, pour une opération d'effacement, le réarrangement des blocs consiste en une réallocation par translation auxdits paquets de code objet restants, d'un ensemble de blocs de mémoire élémentaires pour combler les blocs de mémoire élémentaires effacés .2. Method according to claim 1, characterized in that, for an erasing operation, the rearrangement of the blocks consists of a reallocation by translation to said remaining object code packets, of a set of elementary memory blocks to fill the blocks of elementary memory erased.
3. Procédé selon l'une des revendications 1 ou 2, caractérisé en ce qu'il consiste :3. Method according to one of claims 1 or 2, characterized in that it consists:
- à allouer auxdits paquets de code objet un ensemble de blocs de mémoire élémentaires localisés à des adresses sensiblement contigués dans une première plage de mémoire dédiée à l'allocation de mémoire de paquets de code objet de ladite zone mémoire ; à allouer auxdits paquets de données un autre ensemble de blocs de mémoire élémentaires dans une deuxième plage de mémoire dédiée à l'allocation de mémoire de paquets de données de ladite zone mémoire.- allocating to said object code packets a set of elementary memory blocks located at substantially contiguous addresses in a first memory range dedicated to allocating memory for object code packets from said memory area; allocating to said data packets another set of elementary memory blocks in a second memory range dedicated to allocating memory for data packets in said memory area.
4. Procédé selon la revendication 3, caractérisé en ce que, pour une zone mémoire adressée selon un champ d'adresses linéaire comportant une adresse de début et une adresse de fin de zone mémoire constituant chacune une adresse d'extrémité, la définition de la première respectivement de la deuxième plage de mémoire dédiée et l'allocation des paquets de code objet respectivement des paquets de données sont effectuées à partir de l'une respectivement de l'autre des adresses d'extrémité, ou réciproquement, ce qui permet d'optimiser l'occupation de ladite zone mémoire.4. Method according to claim 3, characterized in that, for a memory area addressed according to a linear address field comprising a start address and an end address of the memory area each constituting an end address, the definition of the first respectively of the second dedicated memory range and the allocation of the object code packets respectively of the data packets are carried out from one respectively of the other of the end addresses, or vice versa, which makes it possible to optimize the occupation of said memory area.
5. Procédé selon l'une des revendications 1 à 4, caractérisé en ce que l'adressage du contenu desdits blocs de mémoire élémentaires pour les opérations d'allocation et de réallocation destinées au moins aux paquets de code objet et d'adressage pour la définition de la première et de la deuxième plage de mémoire est un adressage relatif.5. Method according to one of claims 1 to 4, characterized in that the addressing of the content of said elementary memory blocks for the allocation and reallocation operations intended at least for object code and addressing packets for the defining the first and second memory ranges is relative addressing.
6. Système embarqué multi-application comportant un système d'exploitation assurant la gestion de la mémoire vive et de la mémoire programmable non volatile de ce système d'exploitation par l'intermédiaire d'un microprocesseur, caractérisé en ce qu'il comprend mémorisés en zone mémoire programmable non volatile : - des paquets de code objet, représentatifs d'un ensemble d'applications, ces paquets de code objet étant mémorisés dans un ensemble de blocs de mémoire élémentaires localisés, au moyen d'un processus de réarrangement des blocs élémentaires alloués uniquement pour les paquets de code, à des adresses sensiblement contigués dans une première plage de mémoire, dédiée à l'allocation de mémoire à des paquets de code objet, de ladite zone mémoire programmable non volatile ; des paquets de données relatifs à chaque application, ces paquets de données étant mémorisés dans un autre ensemble de blocs de mémoire élémentaires dans une deuxième plage de mémoire, dédiée à l'allocation de mémoire à des paquets de données, de ladite zone mémoire programmable non volatile.6. Multi-application on-board system comprising an operating system ensuring the management of the random access memory and of the non-volatile programmable memory of this operating system by means of a microprocessor, characterized in that it comprises stored in non-volatile programmable memory area: - object code packets, representative of a set of applications, these object code packets being stored in a set of memory blocks elementary localized, by means of a process of rearranging the elementary blocks allocated only for the code packets, at addresses substantially contiguous in a first range of memory, dedicated to the allocation of memory to packets of object code, of said programmable non-volatile memory area; data packets relating to each application, these data packets being stored in another set of elementary memory blocks in a second memory range, dedicated to allocating memory to data packets, from said non-programmable memory area volatile.
7. Système selon la revendication 6, caractérisé en ce que, pour une zone mémoire programmable non volatile adressée selon un champ d'adresses linéaire comportant une adresse de début et une adresse de fin de zone mémoire programmable non volatile, constituant chacune une adresse d'extrémité, la définition de la première respectivement de la deuxième plage de mémoire dédiée est effectuée à partir de l'une, respectivement de l'autre des adresses d'extrémité, ou réciproquement, ce qui permet de définir la première respectivement la deuxième plage de mémoire dédiée selon un premier et un deuxième ensemble disjoints de blocs de mémoire élémentaires et d'optimiser l'occupation de ladite zone mémoire programmable non volatile. 7. System according to claim 6, characterized in that, for a non-volatile programmable memory area addressed according to a linear address field comprising a start address and an end address of a non-volatile programmable memory area, each constituting an address d end, the definition of the first respectively of the second dedicated memory range is carried out from one, respectively of the other of the end addresses, or vice versa, which makes it possible to define the first respectively the second range dedicated memory according to a first and a second disjointed set of elementary memory blocks and to optimize the occupation of said programmable non-volatile memory area.
EP01989649A 2000-12-21 2001-12-20 Optimised management method for allocating memory workspace of an onboard system and corresponding onboard system Withdrawn EP1346286A1 (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
FR0016725A FR2818770A1 (en) 2000-12-21 2000-12-21 METHOD FOR OPTIMIZED MANAGEMENT OF THE MEMORY ALLOCATION OF AN ON-BOARD SYSTEM AND CORRESPONDING ON-BOARD SYSTEM
FR0016725 2000-12-21
PCT/FR2001/004122 WO2002050688A1 (en) 2000-12-21 2001-12-20 Optimised management method for allocating memory workspace of an onboard system and corresponding onboard system

Publications (1)

Publication Number Publication Date
EP1346286A1 true EP1346286A1 (en) 2003-09-24

Family

ID=8857970

Family Applications (1)

Application Number Title Priority Date Filing Date
EP01989649A Withdrawn EP1346286A1 (en) 2000-12-21 2001-12-20 Optimised management method for allocating memory workspace of an onboard system and corresponding onboard system

Country Status (5)

Country Link
US (1) US7093096B2 (en)
EP (1) EP1346286A1 (en)
AU (1) AU2002228114A1 (en)
FR (1) FR2818770A1 (en)
WO (1) WO2002050688A1 (en)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7856523B2 (en) * 2005-06-01 2010-12-21 Microsoft Corporation Random Access Memory (RAM) based Content Addressable Memory (CAM) management
US7793040B2 (en) * 2005-06-01 2010-09-07 Microsoft Corporation Content addressable memory architecture
US20080046724A1 (en) * 2006-07-25 2008-02-21 General Dynamics C4 System, Inc. Method for governing interaction between code within a code base
US8438365B2 (en) * 2006-10-06 2013-05-07 Calos Fund Limited Liability Company Efficient data loading in a data-parallel processor
SE531837C2 (en) * 2007-12-05 2009-08-25 Oricane Ab Procedure and computer software product
US8122219B2 (en) * 2009-07-22 2012-02-21 International Business Machines Corporation Storage allocation

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2000058838A1 (en) * 1999-03-30 2000-10-05 International Business Machines Corporation Reclaiming memory from deleted applications

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB1441816A (en) * 1973-07-18 1976-07-07 Int Computers Ltd Electronic digital data processing systems
US4044334A (en) * 1975-06-19 1977-08-23 Honeywell Information Systems, Inc. Database instruction unload
JPH10124381A (en) * 1996-10-21 1998-05-15 Mitsubishi Electric Corp Semiconductor storage device
JP3519913B2 (en) * 1997-06-10 2004-04-19 三洋電機株式会社 Digital still camera
WO1999015965A1 (en) * 1997-09-25 1999-04-01 British Telecommunications Public Limited Company Memory allocation
US6226728B1 (en) * 1998-04-21 2001-05-01 Intel Corporation Dynamic allocation for efficient management of variable sized data within a nonvolatile memory
US6546477B1 (en) * 1999-09-20 2003-04-08 Texas Instruments Incorporated Memory management in embedded systems with dynamic object instantiation
FR2818771A1 (en) * 2000-12-21 2002-06-28 Bull Cp8 METHOD OF DYNAMICALLY ALLOCATING MEMORY BY ELEMENTARY MEMORY BLOCKS TO A DATA STRUCTURE, AND EMBEDDED SYSTEM THEREOF
US7185167B2 (en) * 2003-06-06 2007-02-27 Microsoft Corporation Heap allocation

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2000058838A1 (en) * 1999-03-30 2000-10-05 International Business Machines Corporation Reclaiming memory from deleted applications

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
See also references of WO0250688A1 *

Also Published As

Publication number Publication date
US20040098554A1 (en) 2004-05-20
US7093096B2 (en) 2006-08-15
AU2002228114A1 (en) 2002-07-01
WO2002050688A1 (en) 2002-06-27
FR2818770A1 (en) 2002-06-28

Similar Documents

Publication Publication Date Title
EP1151384B1 (en) Storage system comprising means managing a storage unit with anti-wear and anti-wear management of a storage unit
CA2317950C (en) Data compaction method for an intermediate object code programme executable in an onboard system provided with data processing resources and corresponding onboard system with multiple applications
FR2828294A1 (en) METHOD FOR GENERATING AN IMAGE IN DEAD MEMORY
EP1918822A1 (en) Memory indexing system and process
WO2009156615A1 (en) Method and device for updating a computer application
EP1335287B1 (en) Process for automatically updating an access path to a system disk of a hardware perimeter of computing resources, system for implementing said process and memory used in said system
FR3055992A1 (en) INDEX MANAGEMENT IN A FLASH MEMORY
EP1346286A1 (en) Optimised management method for allocating memory workspace of an onboard system and corresponding onboard system
EP1046108B1 (en) Internal data exchange method between applications of a multi-application portable object and corresponding portable multi-application object
EP0602282A1 (en) Resequencing means for a cell switching system node
EP3503483B1 (en) Topological address assignment method and server with network switches, computer program and corresponding server cluster
EP1346287B1 (en) Method for dynamically allocating memory workspace by elementary memory blocks to a data structure, and corresponding onboard system
EP2530586B1 (en) Method for generating software
FR2600441A1 (en) MEMORY MANAGEMENT UNIT
EP2901291B1 (en) Method for managing the memory resources of a security device, such as a smart card, and security device implementing said method
EP0512881B1 (en) Apparatus and method for the selection of information usable by a local unit linked to a digital transmission system
EP3392768A1 (en) Method and electronic device for verifying a partitioning configuration, associated computer program
EP0078229B1 (en) Processor storage management system
EP1313020A1 (en) Integrated circuit architecture for smart card and memory allocation method therefor
FR3091102A1 (en) METHOD FOR CUSTOMIZING AN ELECTRONIC ENTITY, AND ASSOCIATED ELECTRONIC ENTITY
CN113741787A (en) Data storage method, device, equipment and medium
WO2006063911A1 (en) Method for positioning elementary data of a data structure in a storage unit
FR2771531A1 (en) System allowing secure recording of access and cost calculation in computer applications
FR2799046A1 (en) Methods for random writing of sector of size blow that of erasable block in memory
FR2766593A1 (en) Method and device for protecting data in an electronic system from ionising degradation, such as nuclear irradiation.

Legal Events

Date Code Title Description
PUAI Public reference made under article 153(3) epc to a published international application that has entered the european phase

Free format text: ORIGINAL CODE: 0009012

17P Request for examination filed

Effective date: 20030721

AK Designated contracting states

Kind code of ref document: A1

Designated state(s): AT BE CH CY DE DK ES FI FR GB GR IE IT LI LU MC NL PT SE TR

AX Request for extension of the european patent

Extension state: AL LT LV MK RO SI

RIN1 Information on inventor provided before grant (corrected)

Inventor name: LANDIER, OLIVIER

Inventor name: HAMEAU, PATRICE

Inventor name: FOUGEROUX, NICOLAS

17Q First examination report despatched

Effective date: 20091208

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: THE APPLICATION IS DEEMED TO BE WITHDRAWN

18D Application deemed to be withdrawn

Effective date: 20140128