Connect public, paid and private patent data with Google Patents Public Datasets

Program compaction method employing dynamic code deletion

Info

Publication number
WO2004061655A1
WO2004061655A1 PCT/FR2003/003736 FR0303736W WO2004061655A1 WO 2004061655 A1 WO2004061655 A1 WO 2004061655A1 FR 0303736 W FR0303736 W FR 0303736W WO 2004061655 A1 WO2004061655 A1 WO 2004061655A1
Authority
WO
Grant status
Application
Patent type
Prior art keywords
program
fragments
memory
deletion
deleted
Prior art date
Application number
PCT/FR2003/003736
Other languages
French (fr)
Inventor
Renaud Marlet
PHilippe TIGNOL
Original Assignee
Trusted Logic
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

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRICAL DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for programme control, e.g. control unit
    • G06F9/06Arrangements for programme control, e.g. control unit using stored programme, i.e. using internal store of processing equipment to receive and retain programme
    • G06F9/44Arrangements for executing specific programmes
    • G06F9/445Programme loading or initiating
    • G06F9/44594Unloading

Abstract

The invention relates to a program compaction method employing dynamic code deletion. More specifically, but not exclusively, the invention relates to the compaction of programs which are executed on platforms having small memory resources, e.g. small on-board systems such as chip cards and payment terminals. The inventive method comprises four steps, namely: the determination of fragments of a program which, under certain hypotheses, can be deleted without modifying the semantics; the instrumentation of a program in order to mark fragments which can be deleted and the conditions in which they can be deleted; the optional transformation of the program in order to increase the memory saving that will be produced by the deletion of deletable fragments; and the memory structuring of a program with deletable fragments and the effective deletion of said fragments in order to enable the re-use of the corresponding freed-up memory areas.

Description

PROCEDE DE COMPACTAGE DE PROGRAMME PAR SUPPRESSION DYNAMIQUE DE CODE. COMPACTING PROCESS BY REMOVING DYNAMIC PROGRAM CODE.

La présente invention concerne un procédé de compactage de programme par suppression dynamique de code. The present invention relates to a program compacting process by dynamic removal code.

Elle a plus particulièrement pour objet, mais non exclusivement, de compacter des programmes qui s'exécutent sur des plates-formes disposant de faibles ressources mémoire ; It more particularly, but not exclusively, to compact programs that run on platforms with low memory resources; c'est le cas par exemple des petits systèmes embarqués tels que les cartes à puce et les terminaux de paiement. this is the case for example of small embedded systems such as smart cards and payment terminals.

Ce procédé est particulièrement adapté à la libération de ressources mémoire dans ces systèmes et par conséquent autorise la réutilisation de ces dites ressources mémoire. This process is particularly suitable for the release of memory resources in these systems and therefore allows the reuse of these so-called memory resources.

Il comprend quatre étapes : It includes four steps:

• la détermination de fragments d'un programme qui, sous certaines hypothèses, peuvent être supprimés sans en modifier la sémantique, • the determination of fragments of a program that, under certain assumptions, can be deleted without changing the semantics,

• l'instrumentation d'un programme pour marquer des -fragments supprimables et les conditions sous lesquelles ils peuvent être supprimés, • instrumentation of a program to mark deletable -fragments and the conditions under which they can be removed,

• la transformation éventuelle du programme pour augmenter l'économie mémoire qu'apportera une suppression des fragments supprimables, • la structuration en mémoire d'un programme avec fragments supprimables et la suppression effective de ces fragments pour permettre la réutilisation des zones mémoire libérées correspondantes. • the possible transformation of the program to increase the memory economy will bring deletion fragments removable, memory • structuring a program with deletable fragments and the actual removal of these fragments to allow the reuse of memory areas corresponding released.

Ce compactage de programme par suppression dynamique de code est particulièrement utile dans les deux cas de figure suivants : This program of dynamic compaction removal code is particularly useful in the two following cases:

• si, au cours de l'exécution d'un programme, un ou plusieurs fragments de ce programme ne sont plus utiles dans la suite de l'exécution, ils peuvent être totalement supprimés. • if, during the execution of a program, one or more fragments of the program are not helpful in following the execution, they can be completely removed. La place mémoire correspondante peut être ainsi récupérée pour d'autres usages, sans incidence sur le comportement du programme. The corresponding memory space and can be recovered for other uses without affecting the behavior of the program.

• la suppression d'un ou de plusieurs fragments de programme peut aussi être forcée à tout moment. • deleting one or more program fragments can also be forced at any time. Le ou les fragments supprimés, ainsi que les portions de programme qui exploitaient ces fragments supprimés, sont alors remplacés par du code qui signale la suppression desdits fragments, afin qu'une erreur soit notifiée dans le cas où l'exécution du programme nécessiterait lesdits fragments. The deleted or fragments, as well as the program portions that exploited these fragments removed, are replaced by code which signals the removal of such fragments to an error is notified in the case where the execution of the program require said fragments . Suite à la suppression de code, le programme peut ainsi perdre certaines fonctionnalités. Following the removal code, the program may well lose some functionality. Le choix de fragments de programme à supprimer réalise donc un compromis entre les fonctionnalités offertes par le programme et la taille mémoire qu'il occupe. The choice of program fragments to remove therefore achieves a compromise between the features offered by the program and the amount of memory it occupies.

La suppression de fragments de programmes peut être opérée autant de fois que nécessaire au cours d'une exécution pour gagner davantage de place mémoire. The elimination of programs fragments can be made as many times as necessary during a performance to gain more memory space.

La suppression de fragments de programmes a également un intérêt sécuritaire : si les circonstances veulent que des fonctionnalités d'un programme doivent devenir définitivement inopérantes pour des raisons de sécurité, il est plus sûr de les supprimer effectivement de la mémoire du système que de mettre en place un contrôle d'accès. The elimination of programs fragments also a security interest if circumstances want the functionality of a program must become permanently inoperable for safety reasons, it is safer to remove effectively the system memory than to site access control.

Le besoin d'économiser la mémoire n'est pas la seule raison qui fait des petits systèmes embarqués une bonne cible pour le compactage par suppression de code ; The need to save memory is not the only reason for small embedded systems a good target for compaction by removal code; la nature même des programmes qui s'exécutent sur ces systèmes y contribue également. the nature of the programs that run on these systems also contributes. En effet, il est fréquent que des programmes chargés sur ces systèmes ne soient exécutés qu'une unique fois. Indeed, it is common for programs loaded on these systems are not executed a single time. Ce sont toutefois le plus souvent des programmes sans terminaison véritable qui réagissent sans fin à des événements et des commandes qui leur sont soumis. This, however, are usually programs with no real ending that endless react to events and orders submitted to them. Or le cycle de vie de ces programmes passe souvent par des phases irréversibles d'initialisation préalable. Now the life cycle of these programs often involves irreversible phases prior initialization. Par conséquent, les fragments de programmes qui réalisent ces phases d'initialisation deviennent inutiles une fois les initialisations effectuées, et peuvent donc être supprimés. Therefore, fragments of programs that perform these initialization phases become useless after making boots, and can therefore be deleted.

Deux cas courants de telles phases d'initialisation sont dans le cas de la carte à puce : V installation, qui crée en mémoire un exemplaire exécutable d'un programme, et la personnalisation, qui configure cet exemplaire exécutable de programme pour un utilisateur particulier. Two common cases such initialization phases are in the case of the smart card: V installation, creating in memory a copy of a executable program, and customizing, which configures this program executable copy for a particular user.

Par exemple, dans les systèmes qui acceptent des programmes "Java Card", langage employé couramment sur les cartes à puce, l'installation est effectuée par l'appel d'une méthode (routine) réservée à cet usage unique, nommée "install". For example, in systems that accept programs "Java Card" language commonly used on smart cards, the installation is done by calling a method (routine) reserved for this single use, named "install" . Une fois cette méthode appelée, son contenu n'est plus jamais exécuté, sauf pour créer un nouvel exemplaire du même programme. Once this method called, its content is never executed, except to create a new copy of the same program. Sous l'hypothèse, très fréquente, que le système ne devra jamais exécuter qu'un seul exemplaire de ce programme, le contenu de la méthode "install" peut être totalement supprimé, de même que toute autre méthode auxiliaire appelée uniquement par "install" (et non par d'autres méthodes du programme). Assuming, very common, that the system will never run one copy of the program, the contents of the "install" method can be completely removed, as well as other auxiliary method called only by "install" (not other program methods). La situation est identique pour la personnalisation. The situation is similar for customization. La seule différence, dans le cas de "Java Card", est que les fragments de code responsables de la personnalisation ne sont pas nécessairement identifiables par une méthode particulière. The only difference in the case of "Java Card" is that officials snippets of personalization may not be identifiable by a particular method. Néanmoins, une extension très répandue du système "Java Card", nommée "Open Platform", introduit une méthode, nommée "processData", qui n'est appelée que dans la phase de personnalisation. However, a widespread system expansion "Java Card", named "Open Platform", introduced a method called "processData" which is only called in the customization phase. Une fois la personnalisation terminée, cette méthode peut donc aussi être supprimée, au même titre qu"'instaU" pour la phase d'installation, sous une hypothèse identique. Once customization is complete, this method can therefore also be eliminated, just that " 'estab" for the installation phase, under the same assumption.

Dans le cas où l'exécution d'un fragment de programme supprimé resterait matériellement possible bien qu'interdite par hypothèse, il est recommandé de remplacer le fragment supprimé par du code qui signale une erreur. If the execution of a program fragment deleted remain feasible although prohibited by hypothesis, it is recommended to replace the fragment removed by code that indicates an error. Dans le cas de "Java Card", le code supprimé peut être remplacé, qu'il recouvre le contenu complet d'une méthode ou non, par une levée d'exception. In the case of "Java Card", the deleted code can be replaced, it covers the full content of a method or not, by an exception thrown.

Il s'avère que la suppression dynamique de code pose néanmoins plusieurs questions : It turns out that the code of dynamic suppression nevertheless raises several questions:

• la structuration d'un programme en mémoire pour permettre la libération de fragments, • structuring a program in memory to allow the release of fragments

• la détermination de fragments de code supprimables dans un programme, • determining deletable code fragments into a program,

• l'instrumentation du programme pour signaler les fragments supprimables, • la transformation éventuelle du programme pour optimiser les fragments supprimables, • instrumentation program to report deletable fragments • the possible transformation of the program to optimize deletable fragments

• la prise de décision de suppression de ces fragments, • the decision of removal of these fragments,

• la suppression effective de ces fragments, selon leur forme, • the effective removal of these fragments, according to their shape,

• la restructuration éventuelle du programme résultant pour accroître la possibilité de réutilisation des zones mémoire ainsi libérées. • the possible restructuring of the resulting program to increase the reusability of areas freed memory. Préalablement il faut rappeler les diverses fonctionnalités qui peuvent être offertes par les gestionnaires mémoire présents dans les systèmes d'exécution. Before we must recall the various features that can be offered by the memory managers that are in execution systems. Il en existe quatre grands types principaux : There are four main types:

• Allocation / libération. • Allocation / release. Une plate-forme ordinaire d'exécution de programme est généralement munie d'un gestionnaire mémoire qui comporte au moins deux fonctionnalités : (1) allouer un bloc de mémoire, et (2) libérer un bloc de mémoire précédemment alloué. An ordinary platform program execution is generally provided with a memory manager having at least two features: (1) allocating a memory block, and (2) release a previously allocated memory block. Quand un bloc est libéré, la zone mémoire correspondante peut être réexploitée pour d'autres usages, notamment pour une nouvelle allocation mémoire. When a block is released, the corresponding memory area can be réexploitée for other uses, including a new memory allocation. Par exemple, dans les systèmes d'exploitation de type "Unix", la fonction "malloc" alloue un bloc mémoire d'une taille donnée et retourne un pointeur vers le début du bloc, et la fonction "free" libère un bloc donné. For example, in the operating systems of the type "Unix", the "malloc" allocates a given size memory block and returns a pointer to the beginning of the block, and the "free" releases a given block. • Retaillage. • recutting. Les gestionnaires mémoire comportent également souvent des fonctionnalités de retaillage d'un bloc mémoire précédemment alloué, en réduisant la taille du bloc par la fin. The memory managers also often include resizing features of a previously allocated memory block, reducing the block size by the end. Certains systèmes permettent aussi parfois un retaillage en augmentant la taille d'un bloc par la fin. Some systems also allow resizing sometimes by increasing the size of a block at the end. Un bloc peut être physiquement déplacé ou non en mémoire pour permettre ce retaillage. A block can be physically moved or not in memory for this resizing. Par exemple, dans les systèmes de type For example, in such systems

"Unix", la fonction "realloc" effectue une réduction (ou un accroissement) de la taille d'un bloc par la fin. "Unix", the "realloc" performs a reduction (or increase) the size of a block at the end. La réduction de la taille du bloc alloué permet ainsi de supprimer un fragment final et de libérer la mémoire correspondante pour qu'elle puisse être réutilisée par le système. Reducing the size of the allocated block and to delete a final fragment and release the corresponding memory so it can be reused by the system.

• Découpage dynamique. • Dynamic cutting. Plus rarement, les gestionnaires mémoire permettent aussi de découper dynamiquement en plusieurs fragments un bloc mémoire précédemment alloué, comme si autant de blocs avaient initialement été alloués séparément. More rarely, memory managers also can proactively cut into fragments a previously allocated memory block, as if as many blocks were originally allocated separately. Des fragments choisis peuvent ainsi être libérés et réexploités par le système. Selected fragments can then be released and réexploités by the system. • Défragmentation. • Defragment. Certains gestionnaires mémoire effectuent également, de manière transparente ou non pour l'utilisateur, une défragmentation de la mémoire. Some memory managers also perform transparently or not for the user, a garbage collection. Cette opération consiste à déplacer les blocs mémoire alloués pour les regrouper. This operation is to move the memory blocks allocated to group. La défragmentation permet de réduire le nombre de petits interstices de zones libre entre blocs mémoire alloués, qui sont difficilement réutilisables. Defragmentation reduces the number of small gaps between areas of free allocated memory blocks, which are difficult to reuse.

Le déplacement de blocs mémoire alloués induit toutefois certaines contraintes concernant les pointeurs vers l'intérieur de blocs. However, moving memory blocks allocated induced constraints on pointers to within blocks. En particulier, si des déplacements de portions de programme ont lieu, notamment après une phase éventuelle d'édition de liens, un relogeage des adresses et des déplacements de sauts peut être nécessaire. In particular, if the program portions of movements occur, especially after any phase of linking a relogeage addresses and hopping trips may be necessary.

Il s'avère que pour permettre la suppression de fragments d'un programme, et surtout la réutilisation efficace de la mémoire correspondante, il faut structurer le programme en mémoire à bon escient. It turns out that to allow the removal of fragments of a program, and especially the efficient reuse of the corresponding memory, we must structure the program in memory wisely. Quatre cas typiques de gestion de la représentation en mémoire d'un programme sont à considérer : la préfragmentation statique (avant l'exécution) d'un programme, la fragmentation dynamique (après l'exécution), la réduction dynamique de taille de blocs, et la restructuration de programme après suppression de fragments. Four typical cases of memory in the representation of management of a program to be considered: the static pre-breaking (before execution) of a program, the dynamic fragmentation (after the performance), the dynamic reduction of block size and restructuring program after deletion fragments.

• Préfragmentation statique. • Static pre-breaking. Si, lors du chargement d'un programme, le système a connaissance des fragments qui pourront être supprimés dans le futur, il peut structurer le programme en mémoire en plusieurs blocs, utilisant pour cela son mécanisme ordinaire d'allocation de mémoire. If, when loading a program, the system is aware of fragments that can be removed in the future, it can structure the program in memory into several blocks, using for it his usual mechanism of memory allocation. Un espace mémoire individuel est dans ce cas alloué pour chaque fragment supprimable, qui peut ainsi être libéré séparément, sans impact sur le reste du programme. A single memory space is in this case allocated for each reducible moiety, which can then be released separately, without affecting the rest of the program.

• Fragmentation dynamique. • Dynamic Fragmentation. Si le programme n'a pas reçu de structuration particulière lors de son chargement, des fragments peuvent néanmoins être signalés comme supprimés au cours de l'exécution. If the program has not received a particular structure when loaded, fragments may still be marked as deleted during runtime. Pour que les zones mémoire correspondantes puissent être réutilisées, le système peut effectuer un découpage dynamique du bloc mémoire alloué initialement pour le programme et se ramener ainsi au cas de figure ci-dessus d'un programme préfragmenté. For the corresponding memory areas can be reused, the system can dynamically switching the memory block allocated initially for the program and thus bring the cases above a prefragmented program. • Réduction dynamique de taille de blocs. • Reduced dynamic block size. Cependant, tous les systèmes ne disposent pas d'un gestionnaire mémoire assez puissant pour réaliser la fragmentation dynamique. However, all systems do not have a strong enough memory manager to achieve the dynamic fragmentation. Il est toutefois un cas particulier que savent généralement traiter des systèmes avec gestion mémoire simple : c'est lorsque le fragment mémoire à supprimer est situé à l'extrémité finale du bloc alloué pour le programme. However, it is a special case that generally know how to treat systems with simple memory management: this is when the memory chip to delete is located at the tail end of the block allocated for the program. Dans ce cas, il suffit que le système permette un réajustement de la taille des blocs mémoire déjà alloués. In this case, just the system allows an adjustment of the size of memory blocks already allocated. La réduction de la taille du bloc alloué pour le programme permet ainsi de supprimer le fragment final et de libérer la mémoire correspondante pour qu'elle puisse être réutilisée par le système. Reducing the size of the block allocated for the program and eliminates the final fragment and release the corresponding memory so it can be reused by the system.

• Défragmentation. • Defragment. Il est également possible de défragmenter dynamiquement et explicitement un bloc programme où des zones de code ont été supprimées, sans passer par l'intermédiaire du gestionnaire mémoire. It is also possible to defrag dynamically and explicitly block a program in which areas of code have been removed, without via the memory manager. Cette opération consiste à assembler certaines des portions de programme restantes après suppression de manière à former un ou des blocs compacts, continus, sans région libre enclavée. This operation involves assembling some of the remaining program portions after removal so as to form one or compact blocks, continuous without enclosed region free. Cette technique est utile dans plusieurs cas de figure. This technique is useful in many cases. Elle est tout d'abord applicable dans des systèmes dont le gestionnaire mémoire ne permet pas une fragmentation dynamique arbitraire mais simplement un retaillage des blocs mémoire alloués : les portions de programme restantes sont assemblées en un groupe compact en début du ou des blocs et la taille du ou des blocs est ajustée à leur contenu. It is first applicable in systems whose memory manager does not allow an arbitrary dynamic fragmentation but simply a resizing of allocated memory blocks: the remaining program parts are assembled in a compact group in early or blocks and size or the block is adjusted to their content. La défragmentation peut aussi être utile plus généralement pour accroître la possibilité de réutilisation des zones mémoire libérées. Defragmentation can also be useful more generally to increase the reusability of freed memory areas. En effet, de nombreuses petites zones sont plus difficiles à réutiliser qu'une unique grande zone, qui peut éventuellement être redécoupée. Indeed, many small areas are more difficult to reuse a single large area, which can optionally be redistributed. Il faut toutefois noter que le déplacement de portions de programme en mémoire peut nécessiter de reloger le code résultant. It should be noted that the movement of stored program portions may require relocating the resulting code. Par exemple, les adresses ou les déplacements des sauts interblocs doivent être recalculés. For example, addresses or movement of interblocs jumps must be recalculated. C'est une tâche délicate à effectuer, tant sur le langage machine d'un microprocesseur réel que sur le langage d'une machine virtuelle. It is a delicate task to perform, both on the machine language of a real microprocessor as the language of a virtual machine. Mais si des routines entières sont supprimées dans un programme, reloger le code restant est souvent beaucoup plus facile car les informations à mettre à jour concernent alors davantage les adresses, déplacements et indices qui permettent d'identifier les routines plutôt que les sauts dans le corps des routines même. But if whole routines are removed in a program, relocate the remaining code is often much easier because the information to be updated then relate more addresses, travel and indices that identify the routines rather than jumping in the body the same routines.

Il s'avère que la détermination de fragments supprimables peut être effectuée de trois manières : It turns out that determining deletable fragments can be done in three ways:

1. Un programmeur, qui a connaissance du cycle de vie du programme, sait, à partir de quelles étapes d'exécution, quels fragments de programmes peuvent être considérés comme supprimables. 1. A programmer who has knowledge of the life cycle of the program, knows from what stages of execution, which fragments programs can be considered deletable.

2. Suivant les langages, des fragments d'un programme sont supprimables par construction, comme c'est le cas pour "install" et "processData" en "Java 2. Next languages, fragments of a program are deletable by construction, as is the case for "install" and "processData" in "Java

Card". Card ".

3. Enfin un traitement automatique de programme permet de déterminer des fragments de codes qui ne sont matériellement plus utiles à partir de certains points et conditions d'exécution : ce mode de détermination constitue la première étape du procédé décrit ci-après. 3. Finally an automatic program of treatment to determine fragments of codes no longer useful materially from some points and conditions of execution: this method of determination is the first step of the process described below.

Conformément au procédé selon l'invention, le compactage de programme par suppression dynamique de code s'effectue suivant les quatre étapes suivantes : • la détermination de fragments d'un programme qui, sous certaines hypothèses, peuvent être supprimés sans en modifier la sémantique, • l'instrumentation d'un programme pour marquer des fragments supprimables et les conditions sous lesquelles ils peuvent être supprimés, According to the process according to the invention, the program of dynamic compaction is next removal code performs the following four steps: • determination of fragments of a program that, under certain assumptions, can be removed without changing the semantics • instrumentation of a program to mark deletable fragments and the conditions under which they can be removed,

• la transformation éventuelle du programme pour augmenter l'économie mémoire qu'apportera une suppression des fragments supprimables, • the possible transformation of the program to increase the memory economy will bring deletion fragments removable,

• la structuration en mémoire d'un programme avec fragments supprimables et la suppression effective de ces fragments pour permettre la réutilisation des zones mémoire libérées correspondantes. • Memory in structuring a program with deletable fragments and the actual removal of these fragments to allow the reuse of memory areas corresponding released.

Premièrement, la détermination de fragments d'un programme supprimables est basée sur l'analyse statique de programme. First, the determination of fragments of a deletable program is based on static analysis program.

Vanalyse statique de programme désigne un ensemble de techniques de traitement automatique de programme qui permettent de déterminer des propriétés concernant l'exécution d'un programme sans avoir à l'exécuter véritablement. Vanalyse static program is a set of automatic program processing techniques to determine properties relating to the execution of a program without having to actually run. Un exemple extrêmement répandu d'analyse statique est Y interprétation abstraite, qui étudie des approximations de l'exécution d'un programme. An extremely common example of static analysis is Y abstract interpretation, studying approximations of running a program.

La détermination automatique de fragments de programmes supprimables par analyse statique de programme pourra être mise en œuvre selon la séquence opératoire suivante : Automatically determining fragments deletable program by static analysis program may be implemented according to the following operating sequence:

• modélisation, sous forme d'un état abstrait, de l'état initial d'un exemplaire exécutable du programme ; • modeling, as an abstract state, the initial state of an executable copy of the program;

• marquage de cet état comme "non encore exploré" ; • marking this state as "uncharted";

• tant qu'il existe un ou plusieurs états abstraits non-terminaux marqués "non encore explorés" : • As there are one or more non-terminals marked abstract states "not yet explored":

- choix de l'un de ces états ; - choice of one of these states; - marquage de l'état choisi comme "désormais exploré" ; - Marking the selected state as "now explored"; - exécution abstraite du programme à partir de cet état en prenant en compte toutes ses interactions possibles (événements et commandes reçus, etc.), ce qui conduit à un ou plusieurs nouveaux états ; - Abstract program execution from the state taking into account all possible interactions (events and commands received, etc.), which leads to one or more new states; - marquage de ces nouveaux états comme "non encore explorés" ; - labeling of these new states as "not yet explored";

- fusion des états de programmes résultants qui sont similaires, en les généralisant si nécessaire. - melting states results programs that are similar, generalizing if necessary.

L'arrêt de l'algorithme avec certitude pourra être mis en œuvre de la manière suivante : Stopping the algorithm for sure will be implemented as follows:

• modélisation de l'état d'un programme de manière à ce qu'il n'existe qu'un nombre fini de configurations différentes, ou • modeling the state of a program so that there is a finite number of different configurations, or

• généralisation plus ou moins effective des états résultants pour borner le nombre d'états à considérer, l'état quelconque généralisant tous les autres et garantissant ainsi que la fin du processus puisse toujours être forcée. • More or less effective generalization resulting states to limit the number of states to consider any state generalizing all others and ensuring that the end of the process can still be forced.

Ce procédé permet de construire un graphe orienté qui modélise les transitions d'état du programme. This method allows to construct a directed graph that models the program status transitions. Les sommets (ou nœuds) de ce graphe sont constitués par les différents états rencontrés ; The vertices (or nodes) of this graph are formed by different states met; les arêtes (ou arcs) de ce graphe représentent les calculs et interactions effectuées par le programme, et les portions de programme exécutées correspondantes. the edges (or arcs) of this graph represent the calculations and interactions performed by the program, and the program executed corresponding portions.

Les fragments de programme déterminés comme supprimables sont ceux qui ne sont plus exécutables une fois que le programme a atteint un certain état. The program fragments identified as deletable ones are not executable once the program has achieved a certain status. Autrement dit, s'il existe un sommet S du graphe à partir duquel certaines arêtes ne sont pas accessibles, alors les régions de programme correspondant à ces arêtes inaccessibles et ne figurant pas parmi les régions correspondant aux arêtes accessibles depuis S sont supprimables lorsque l'exécution du programme atteint un état correspondant à S. Les fragments ainsi identifiés sont supprimables sans affecter la sémantique du programme, sous l'hypothèse que le programme en est à sa dernière exécution. In other words, if there is a vertex of the graph S from which some edges are not available, then the program regions corresponding to these inaccessible edges and not listed among the regions corresponding to the edges S are accessible from deletable when the program execution reaches a state corresponding to S. the identified fragments are deletable without affecting the program semantics, assuming that the program is in its last execution.

La quantité et la taille des fragments de programme supprimables déterminés par ce procédé dépendent de plusieurs paramètres, notamment : The amount and size of fragments deletable program determined by this method depends on several parameters, including:

• le degré de précision avec lequel les états du programme sont modélisés, • the degree of precision with which the program states are modeled,

• le degré de précision avec lequel les interactions avec le programme sont modélisées, • the degree of precision with which the interaction with the program are modeled,

• la création éventuelle d'états intermédiaires entre chaque interaction avec le programme, • the possible creation of intermediate states between each interaction with the program,

• les conditions d'emploi de la généralisation d'état pour éventuellement forcer la terminaison de l'algorithme. • the conditions of employment of the state generalization to eventually force the termination of the algorithm.

Pour des raisons pratiques de ressources mémoire, ce procédé de détermination sera généralement mis en œuvre en dehors du système d'exécution du programme, avant son chargement. For convenience of memory resources, determination method will usually implemented outside the system of execution of the program, prior to loading. Rien n'interdit toutefois qu'il puisse avoir lieu sur le système même. However, nothing prohibits it can take place on the same system.

Deuxièmement, l'instrumentation du programme pour marquer les fragments supprimables, ainsi que les conditions sous lesquelles ils peuvent être supprimés, s'effectue de la manière suivante : Second, the instrumentation of the program to mark the deletable fragments, and the conditions under which they can be removed, is performed as follows:

Les fragments doivent tout d'abord être marqués afin d'être connus du système. The fragments should first be marked to be known to the system. Ce marquage permet d'une part de structurer le programme en mémoire afin de favoriser la suppression de code, par exemple avec une préfragmentation, et d'autre part de désigner les fragments à supprimer à un moment donné de l'exécution. This marking allows one hand to structure the program in memory in order to promote the removal code, eg with a pre-breaking, and also to designate the fragments to be removed at some point of execution. Le marquage des zones de code supprimables peut s'effectuer de multiples manières. Marking deletable code areas can be accomplished in many ways. Un fragment constitué d'une suite continue d'instructions d'une routine peut par exemple être repéré par une adresse de début et une adresse de fin de fragment, ou bien une adresse de début ou de fin et une longueur de fragment. A fragment consisting of a continuous sequence of instructions of a routine can for example be identified by a start address and end address fragment, or a start or end address and a fragment length. Un fragment peut être également repéré par des marques spéciales, neutres pour l'exécution, pour indiquer l'emplacement du début et de la fin d'un fragment. A fragment can also be identified by special neutral marks for performance, to indicate the location of the start and the end of a fragment. Un fragment constitué d'une routine peut par exemple être repéré par le nom de la routine ou son adresse mémoire. A fragment consisting of a routine can for example be identified by the name of the routine or memory address.

La condition de suppression de code associée à un fragment de programme doit également être conservée. The code suppression condition associated with a program fragment should also be retained. Elle peut être arbitrairement complexe. It can be arbitrarily complex.

La condition de suppression peut être basée sur le contrôle courant du programme. The deletion condition can be based on the current program control. Ce peut être par exemple l'adresse d'un point de programme : lorsque ce point d'exécution est atteint, alors le fragment associé peut être supprimé. This can eg be the address of a program point: when the execution point is reached, then the associated fragment may be deleted. Ce peut être aussi la désignation d'une routine du programme : lorsque cette routine est appelée, ou lorsqu'elle retourne, alors le fragment associé peut être supprimé. It may also be the designation of a program routine: when this routine is called, or when it returns, then the associated fragment may be deleted.

La condition de suppression peut aussi être basée sur les données courantes manipulées par le programme. The deletion condition can also be based on current data handled by the program. Ce peut être par exemple la désignation d'une variable du programme qui, lorsqu'elle prend une certaine valeur, ou dépasse un certain seuil, signale que le fragment associé peut être supprimé. This may be for example the designation of a program variable which, when it reaches a certain value, or exceeds a certain threshold, indicates that the associated fragment can be deleted.

L'indication des fragments à supprimer peut également être présente dans le code exécutable même. The indication to remove fragments may also be present in the same executable code.

Dans ce cas, le programme signale lui-même au système, au cours de son exécution, qu'un fragment donné peut être supprimé. In this case, the program reports itself to the system during its execution, a given fragment may be deleted. Ce type de mise en œuvre est particulièrement bien adapté au cas de conditions de suppression complexes car on dispose alors de toute la puissance d'expression d'un programme pour prendre une décision de suppression. This type of implementation is particularly well suited for complex removal of conditions because then it has the power of expression of a program to make a decision of removal.

Dans le cas d'un système "Java Card", l'information complémentaire concernant les fragments supprimables d'un code exécutable (code rangé dans le "Method Component") peut être intégrée de manière portable au programme objet ("CAP file") sous forme de composants de programmes auxiliaires ("Custom Components") : ces composants seront ignorés par les systèmes qui ne savent pas gérer le compactage par suppression de code. In the case of a "Java Card" system, additional information about deletable fragments of executable code (stored in the "Method Component") can be integrated in a portable way to object program ( "CAP file") as auxiliary program components ( "Custom components"): these components will be ignored by systems that can not handle the compaction removal code.

Troisièmement, la transformation éventuelle du programme pour augmenter l'économie mémoire apportée par la suppression de code, s'effectue de la manière suivante : Third, the possible transformation of the program to increase the memory savings provided by the removal code, is performed as follows:

La déteraiination de fragments de programme supprimables peut être automatique ou non, effectuée sur la plate-forme même d'exécution du programme ou bien à l'extérieur. The déteraiination of deletable program fragments can be automatic or not performed on the same platform for program execution or outside. Suite à cette détermination, et à l'instrumentation correspondante, le programme peut optionnellement être automatiquement transformé, sans changer sa sémantique, afin d'optimiser la possibilité de réutilisation des zones mémoire libérées. Following this determination, and the related instrumentation, the program may optionally be automatically processed, without changing its semantics in order to optimize the possibility of reuse of the liberated memory areas. Ce procédé d'optimisation est basé sur plusieurs sortes de transformations de programme, sources de gains divers. This optimization process is based on several kinds of program changes, various sources of earnings.

Des fragments supprimables initialement séparés dans le corps du programme peuvent être déplacés pour devenir contigus. The deletable fragments initially separated in the body of the program can be moved to become contiguous. Cette transformation de programme réduit la fragmentation des programmes où l'on a supprimé du code : la taille totale des fragments supprimables est augmentée et le nombre de ces fragments est réduit. This program transformation reduces fragmentation of programs where it was removed from the code: the total size of the fragments deletable is increased and the number of fragments is reduced. La possibilité de réutilisation des zones mémoires libérées est donc meilleure. The reusability of the released memory areas is better. Cette transformation est particulièrement utile pour les systèmes de gestion mémoire qui ne disposent pas de mécanisme de défragmentation. This transformation is particularly useful for memory management systems that do not have defragmentation mechanism. Des fragments supprimables peuvent aussi être placés dans des routines spécifiques. The deletable fragments can also be placed in specific routines. Comme indiqué précédemment en ce qui concerne la structuration d'un programme en mémoire (pour la défragmentation), cette transformation facilite le mécanisme de suppression de code. As stated earlier regarding the structuring of a program in memory (for defragmentation) facilitates this transformation code suppression mechanism. Elle ne nécessite même aucun mécanisme si la dernière routine du bloc mémoire contient le programme. She does not even require any mechanism if the last routine of the memory block contains the program.

Des fragments supprimables peuvent être également regroupés à la fin du programme, dans l'ordre inverse de suppression probable. The deletable fragments can also be grouped at the end of the program, in reverse order of removal likely. Autrement dit, le fragment qui a le plus de chance d'être supprimé est placé tout à la fin du bloc programme. That is, the fragment that has the best chance of being deleted is placed at the very end of the program block. Le fragment suivant qui a le plus de chance d'être supprimé est placé juste avant, et ainsi de suite. The following fragment that is most likely to be deleted is placed just before, and so on. Cette transformation facilite la suppression de code par réduction dynamique de taille de blocs. This change facilitates the removal code by reducing dynamic block size. Par exemple, dans le cas de "Java Card", on pourra placer la méthode "install" à la fin du "Method Component", précédée de la méthode "processData". For example, in the case of "Java Card", the method could be placed "install" at the end of "Method Component", preceded by the "processData" method.

Dans le cas général, il n'existe pas d'ordre optimal pour l'ordonnancement des fragments supprimables car les choix de suppression peuvent dépendre de données dynamiques : il n'existe pas de tri meilleur que les autres. In the general case, there is no optimal order for scheduling deletable fragments because the choice of removal may depend on dynamic data: there is no sorting better than others. Dans le cas où les fragments supprimables sont déterminés par traitement automatique de programme, comme décrit ci-dessus, un ordre convenable est fourni par un parcours en profondeur d'abord du graphe d'état, en partant de l'état initial, et une sélection des fragments supprimables rencontrés lors de ce parcours. In the case where the deletable fragments are determined by automatic processing program as described above, a suitable sequence is provided by a first of depth-first traversal of the state graph, starting from the initial state, and selection deletable fragments encountered during this course. Certains fragments qui sont supprimables en fonction de données dynamiques (donc inconnues au moment de l'ordonnancement) peuvent être omis de la suppression pour aménager une chaîne continue de fragments dont la suppression successive est certaine. Some fragments that are deletable according to dynamic data (therefore unknown at the time of scheduling) can be omitted from the removal to arrange a continuous chain of fragments, the subsequent removal is certain.

Ces transformations peuvent nécessiter l'introduction de sauts ou d'appels de routine. These changes may require the introduction of hops or routine calls. Dans la mesure où ces transformations de programme déplacent du code, elles peuvent aussi nécessiter le relogeage des zones de programme affectées par les mouvements de code. To the extent that these program changes move the code, they may also require the relogeage program code areas affected by movements.

Ces transformations peuvent être automatisées ou bien manuelles, c'est-à-dire laissées à l'appréciation de la personne qui prépare le programme pour le compactage par suppression de code. These transformations can be automated or manual, that is to say, at the discretion of the person preparing the program for compaction by removal code.

Il faut noter que ces transformations ne sont pas exclusives les unes des autres ; Note that these changes are not exclusive of each other; elles peuvent être combinées. they can be combined.

Concernant la décision de suppression de fragments de programme, trois entités peuvent décider de supprimer un fragment de code : le programme, le système et l'adm- -ust-rateur du système. Regarding the decision removal program fragments, three entities may decide to delete a code fragment: the program, the system and the ADM--ust-tor system.

Le programme peut être instrumenté, manuellement ou automatiquement, pour signaler au système qu'un de ses fragments peut être supprimé. The program can be instrumented, manually or automatically, to signal to the system that a fragment may be deleted. C'est l'exécution même du programme qui déclenche alors la suppression. It is the same program execution which triggers the deletion. Signaler qu'un fragment est supprimable peut être mis en œuvre de diverses manières : instruction ou groupe d'instructions spécialisé, appel à une routine spécifique du système, etc. Report a fragment is reducible can be implemented in various ways: instruction or group of specialized instructions, call a specific routine of the system, etc. La spécification du fragment supprimable peut être mis en œuvre de diverses manières : désignation d'une ou plusieurs zones de code, d'une routine ou d'un groupe de routines particulières, de la routine courante, etc. The specification of deletable fragment can be implemented in various ways: appointment of one or more areas of code, a routine or a group of specific routines of daily routine, etc. Par exemple, en "Java Card", la méthode "install" pourrait être terminée par l'appel à une méthode du système qui signalerait que la méthode en cours d'exécution n'est plus utile et peut être supprimée. For example, in "Java Card" method "install" could be completed by the call to a method of the system that would signal that the running method is not useful and can be deleted.

Le système, s'il dispose d'informations concernant la suppression possible de fragments de programme au cours de l'exécution (que ces fragments et conditions de suppression aient été déterminés automatiquement ou non), peut prendre l'initiative de supprimer certains de ces fragments dès lors que les conditions correspondantes sont remplies. The system, if it has information about the possible removal program fragments during execution (that these fragments and conditions of removal were determined automatically or not), can take the initiative to remove some of these fragments once the relevant conditions are met. La personne qui gère le système peut également forcer la suppression de certains fragments de programme. The person who manages the system can also force the deletion of some program fragments. Dans ce cas de figure, le système doit disposer d'une commande qui permet de stipuler des fragments de programme à supprimer. In this case, the system must have a command to stipulate program fragments to delete.

Ces trois sources de choix ne sont pas exclusives les unes des autres ; These three sources of choice are not exclusive of each other; elles peuvent être combinées. they can be combined.

Quatrièmement, la structuration en mémoire d'un programme avec fragments supprimables et la suppression effective de ces fragments pour permettre la réutilisation des zones mémoire libérées correspondantes s'effectue de la manière suivante : Fourth, the memory structure of a program with deletable fragments and the actual removal of these fragments to allow the reuse of the corresponding freed memory areas is done as follows:

Une fois prise la décision de supprimer certains fragments, la libération des zones mémoire correspondantes ne devient effective qu'en fonction de la structuration réelle du programme en mémoire. Once the decision to remove some fragments, the release of the corresponding memory areas becomes effective only in terms of the actual structure of the program in memory. Cela se résume aux cas suivants : It comes down to the following:

• si le programme est statiquement préfragmenté, chaque fragment à supprimer est libéré individuellement, auprès du gestionnaire mémoire du système. • If the program is statically prefragmented, each fragment to be removed is released individually, with the system memory manager.

• si le gestionnaire mémoire du système permet une fragmentation dynamique, le programme est fragmenté au vol et les fragments à supprimer sont libérés individuellement, comme dans le cas précédent. • if the system memory manager enables dynamic fragmentation, the program is fragmented and fragments flying to remove are released individually, as in the previous case.

• si les fragments à supprimer sont localisés en fin de blocs mémoire, l'espace mémoire correspondant est libéré en redimensionnant les blocs pour en réduire la taille. • if the fragments to be removed are located at the end of memory blocks, the corresponding memory space is freed by resizing the blocks to reduce its size.

• si le système est muni d'un mécanisme pour reloger du code, tous les éléments non supprimés du programme sont rassemblés en début de bloc, relogés, et le bloc est redimensionné pour en réduire la taille. • if the system is equipped with a mechanism to relocate the code, all undeleted elements of the program gathered at the start block, relocated, and the block is resized to reduce its size. Ces différents types de suppression effective ne sont pas exclusifs ; These different types of actual removal are not exclusive; ils peuvent être combinés. they can be combined.

Si un fragment de code peut être supprimé sans que la sémantique du programme soit préservée (le programme perd alors certaines de ses fonctionnalités), il est recommandé de mettre en place un mécanisme de contrôle. If a code fragment can be removed without the program semantics is preserved (the program loses some of its features), it is recommended to set up a monitoring mechanism. Une erreur sera ainsi notifiée si l'exécution du programme nécessite un fragment supprimé. An error will be notified if and program implementation requires a deleted fragment. Pour ce faire, on peut par exemple remplacer le code supprimé par du code qui lève une erreur. To do this, one can for example replace the removed code by code that raises an error.

Si un fragment supprimé doit être remplacé par du code qui signale une erreur, un nouveau bloc mémoire peut être alloué à cet effet. If a fragment removed to be replaced by code that indicates an error, a new memory block may be allocated for this purpose. Alternativement, le bloc supprimé peut aussi être réutilisé en le redimensionnant pour l'adapter à la taille du code qui signale l'erreur. Alternatively, the deleted block can also be reused by resizing it to fit to the size of code which signals the error.

Ainsi le procédé proposé selon l'invention est particulièrement adapté à la libération de ressources mémoire sur des plates-formes telles que des petits systèmes embarqués et par conséquent autorise la réutilisation de ces dites ressources mémoire. Thus the proposed method according to the invention is particularly suitable for the release of memory resources on platforms such as small embedded systems and therefore allows the reuse of these so-called memory resources.

Claims

REVENDICATIONS CLAIMS
1. Procédé de compactage de programme par suppression dynamique de code, caractérisé en ce qu'il comprend les étapes suivantes : 1. Program compacting process by dynamic removal code, characterized in that it comprises the following steps:
• la détermination de fragments d'un programme qui peuvent être supprimés soit sans en modifier la sémantique lorsque le programme en est à sa dernière exécution soit en modifiant la sémantique lorsque ces modifications sont acceptables, • l'instrumentation d'un programme pour marquer des fragments supprimables et les conditions sous lesquelles ils peuvent être supprimés, • the determination of fragments of a program that can be deleted or without changing the semantics when the program is in its last execution either by modifying the semantics when these changes are acceptable, • instrumentation of a program to mark deletable fragments and the conditions under which they can be removed,
• la structuration en mémoire d'un programme avec fragments supprimables et la suppression effective de ces fragments pour permettre la réutilisation des zones mémoire libérées correspondantes. • Memory in structuring a program with deletable fragments and the actual removal of these fragments to allow the reuse of memory areas corresponding released.
2. Procédé selon la revendication 1, caractérisé en ce qu'avant la susdite structuration en mémoire d'un programme, le procédé comprend la transformation du programme pour augmenter l'économie mémoire qu'apportera la suppression de programmes supprimables. 2. Method according to claim 1, characterized in that before the aforesaid structure in memory of a program, the method comprises converting the program to increase the memory saving will bring deleting deletable programs.
3. Procédé selon la revendication 1, caractérisé en ce que la susdite détermination de fragments de programmes supprimables s'effectue automatiquement par analyse statique de programme. 3. A method according to claim 1, characterized in that the said determination of fragments deletable program is automatically performed by static analysis program.
4. Procédé selon la revendication 3, caractérisé en ce que la susdite détermination de fragments de programmes supprimables s'effectue à partir d'un graphe orienté construit selon la séquence opératoire suivante : • modélisation, sous forme d'un état abstrait, de l'état initial d'un exemplaire exécutable du programme ; 4. A method according to claim 3, characterized in that the said determination of fragments deletable program is from a directed graph constructed in accordance with the following operating sequence: • modeling the form of an abstract state of initial state of an executable copy of the program;
• marquage de cet état comme "non encore exploré" ; • marking this state as "uncharted";
• tant qu'il existe un ou plusieurs états abstraits non-terminaux marqués comme "non encore explorés" : • As there are one or more non-terminal abstract states marked as "not yet explored":
- choix de l'un de ces états ; - choice of one of these states;
- marquage de l'état choisi comme "désormais exploré" ; - Marking the selected state as "now explored";
- exécution abstraite du programme à partir de cet état en prenant en compte toutes ses interactions possibles et produisant un ou plusieurs nouveaux états ; - Abstract program execution from the state taking into account all possible interactions and producing one or more new states;
- marquage de ces nouveaux états comme "non enclore explorés" ; - labeling of these new states as "not enclose explored";
- fusion des états de programmes résultants qui sont similaires, en les généralisant si nécessaire ; - melting states results programs that are similar, generalizing if necessary; les nœuds du graphe étant constitués par les différents états rencontrés dans la susdite séquence opératoire, les arcs entre deux états de ce graphe représentant les portions de programme exécutées pour passer d'un état à l'autre dans la susdite séquence opératoire, et les fragments supprimables étant les portions de programme correspondant aux arcs qui ne sont plus accessibles à partir d'un certain nœud sous la condition que l'exécution conduit à l'état représenté par ce nœud. the nodes of the graph being constituted by different states encountered in the above process sequence, arcs between two states of the graph representing the program portions executed to switch from one state to another in the above process sequence, and fragments deletable being the corresponding program portions to the arcs which are no longer visible from a certain node on condition that the execution leads to the state represented by this node.
5. Procédé selon la revendication 4, caractérisé en ce que l'arrêt de la susdite séquence avec certitude est mis en œuvre selon au moins l'un des deux processus suivants : • la modélisation de l'état d'un programme de manière à ce qu'il n'existe qu'un nombre fini de configurations différentes, 5. The method of claim 4, characterized in that the stop of the said sequence with certitude is implemented according to at least one of the two following processes: • modeling the state of a program to that there is a finite number of different configurations,
• la généralisation des états résultants pour borner le nombre d'états à considérer, l'état quelconque généralisant tous les autres et garantissant ainsi que la fin du processus puisse toujours être forcée. • generalization of the resulting states to limit the number of states to consider any state generalizing all others and ensuring that the end of the process can still be forced.
6. Procédé selon la revendication 4, caractérisé en ce qu'il comprend une détermination des fragments de programme supprimables qui s'effectue en fonction d'un ou plusieurs des paramètres suivants : • le degré de précision avec lequel les états du programme sont modélisés, 6. A method according to claim 4, characterized in that it comprises determining fragments deletable program which is carried out according to one or more of the following parameters: • the degree of precision with which program states are modeled ,
• le degré de précision avec lequel les interactions avec le programme sont modélisées, • the degree of precision with which the interaction with the program are modeled,
• la possibilité de création d'états intermédiaires entre chaque interaction avec le programme, • the possibility of creating intermediate states between each interaction with the program,
• les conditions d'emploi de la généralisation d'état pour forcer la terminaison de l'algorithme. • the conditions of employment of the state generalization to force the termination of the algorithm.
7. Procédé selon la revendication 1, caractérisé en ce que l'instrumentation du programme consiste en une ou plusieurs des informations suivantes : 7. A method according to claim 1, characterized in that the instrumentation program consists of one or more of the following information:
• des données auxiliaires n'altérant pas l'exécution du programme et destinées à être exploitées par le système d'exécution, • auxiliary data do not alter the implementation of the program and intended to be used by the runtime system,
• des instructions supplémentaires incluses dans le corps du programme et destinées à être exécutées au même titre que les instructions ordinaires du programme. • additional instructions included in the body of the program to be executed in the same way as ordinary program instructions.
8. Procédé selon la revendication 1, caractérisé en ce qu'il comprend un marquage des fragments supprimables effectué de la manière suivante : 8. The method of claim 1, characterized in that it comprises a marking made deletable fragments as follows:
• le repérage d'une adresse de début et d'une adresse de fin du fragment, et/ou • locating a start address and an end address of the fragment, and / or
• le repérage d'une adresse de début ou de fin et de la longueur du fragment, et/ou • le repérage d'un identifiant de routine, et/ou • l'introduction de marques spéciales, neutres pour l'exécution, pour indiquer l'emplacement du début et de la fin d'un fragment. • locating a start or end address and the length of the fragment, and / or • locating a routine identifier, and / or • the introduction of special marks, neutral for performance, for indicate the location of the beginning and end of a fragment.
9. Procédé selon la revendication 1, caractérisé en ce que les conditions de suppression sont basées sur : 9. A method according to claim 1, characterized in that the conditions for removing are based on:
• le contrôle courant du programme, et/ou • the current program control, and / or
• les données courantes manipulées par le programme. • routine data handled by the program.
10. Procédé selon la revendication 2, caractérisé en ce que la transformation du programme pour augmenter l'économie mémoire apportée par la suppression de code s'effectue selon au moins l'une des trois possibilités suivantes : 10. The method of claim 2, characterized in that the processing of the program to increase the memory saving provided by the removal code is performed according to at least one of the following possibilities:
• le déplacement des fragments supprimables initialement séparés dans le corps du programme, pour devenir contigus, « le positionnement des fragments supprimables dans des routines spécifiques, • moving deletable fragments initially separated in the body of the program, to become contiguous, "positioning deletable fragments in specific routines
• le regroupement des fragments supprimables en fin de bloc de programme dans l'ordre inverse de suppression probable. • grouping the deletable fragments at the end of program block in the reverse order of removal likely.
11. Procédé selon l'une des revendications 4 et 10, caractérisé en ce que, dans le cas où les fragments supprimables sont déterminés par analyse statique de programme, un ordre de suppression convenable est fourni par un parcours en profondeur d'abord du graphe d'état, en partant de l'état initial, et une sélection des fragments supprimables rencontrés lors de ce parcours. 11. Method according to one of claims 4 and 10, characterized in that, in the case where the deletable fragments are determined by static analysis of the program, an appropriate deletion command is provided by a first depth-first traversal of the graph state, starting from the initial state, and a selection of deletable fragments encountered in this course.
12. Procédé selon la revendication 10, caractérisé en ce que certains fragments qui sont supprimables en fonction des données dynamiques, peuvent être omis de la suppression pour aménager une chaîne continue de fragments dont la suppression successive est certaine. 12. The method of claim 10, characterized in that some fragments which are deletable based on dynamic data, may be omitted from the removal to convert a continuous chain of fragments whose successive cancellation is certain.
13. Procédé selon la revendication 1, caractérisé en ce que la structuration en mémoire d'un programme avec fragments supprimables et la suppression effective de ces fragments pour permettre la réutilisation des zones mémoire libérées correspondantes s'effectuent selon au moins l'un des quatre types de suppression suivants : 13. The method of claim 1, characterized in that the memory structure of a program with fragments deletable and the effective removal of these fragments to permit reuse of the corresponding released memory areas are made according to at least one of the four following types of deletion:
• si le programme est statiquement préfragmenté, chaque fragment à supprimer est libéré individuellement, auprès du gestionnaire mémoire du système, • If the program is statically prefragmented, each fragment to be removed is released individually, with the system memory manager
• si le gestionnaire mémoire du système permet une fragmentation dynamique, le programme est fragmenté au vol et les fragments à supprimer sont libérés individuellement, comme dans le cas précédent, • if the system memory manager enables dynamic fragmentation, the program is fragmented and fragments flying to remove are released individually, as in the previous case,
• si les fragments à supprimer sont localisés en fin de blocs mémoire, l'espace mémoire correspondant est libéré en redimensionnant les blocs pour en réduire la taille, • si le système est muni d'un mécanisme pour reloger du code, tous les éléments non supprimés du programme sont rassemblés en début de bloc, relogés, et le bloc est redimensionné pour en réduire la taille. • if the fragments to be removed are located at the end of memory blocks, the corresponding memory space is freed by resizing the blocks to reduce its size, • if the system is equipped with a mechanism to relocate the code, all unassigned deleted from the program gathered at the start of block, relocated, and the block is resized to reduce its size.
14. Procédé selon la revendication 1 destiné à être implémenté sur des systèmes embarqués, caractérisé en ce qu'un programme à fragments supprimables s'exécutant sur ces susdits systèmes est structuré en mémoire selon les informations mises à disposition par l'instrumentation de ce programme, et en ce que des fragments supprimables sont effectivement supprimés lorsque les conditions stipulées par l'instrumentation du programme sont remplies. 14. The method of claim 1 intended to be implemented in embedded systems, characterized in that a program running on fragments deletable these aforementioned systems is structured in memory according to the information provided by the instrumentation of the program and in that deletable fragments are effectively removed when the conditions specified by the instrumentation of the program are met.
PCT/FR2003/003736 2002-12-18 2003-12-15 Program compaction method employing dynamic code deletion WO2004061655A1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
FR0216253A FR2849229B1 (en) 2002-12-18 2002-12-18 program by dynamic compaction Method removal code
FR02/16253 2002-12-18

Publications (1)

Publication Number Publication Date
WO2004061655A1 true true WO2004061655A1 (en) 2004-07-22

Family

ID=32406232

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/FR2003/003736 WO2004061655A1 (en) 2002-12-18 2003-12-15 Program compaction method employing dynamic code deletion

Country Status (2)

Country Link
FR (1) FR2849229B1 (en)
WO (1) WO2004061655A1 (en)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0996059A2 (en) * 1998-10-19 2000-04-26 International Business Machines Corporation Class loading model
US6170083B1 (en) * 1997-11-12 2001-01-02 Intel Corporation Method for performing dynamic optimization of computer code
US6247175B1 (en) * 1998-12-22 2001-06-12 Nortel Networks Limited Method and apparatus for identifying and removing unused software procedures
US20020013938A1 (en) * 2000-02-09 2002-01-31 Evelyn Duesterwald Fast runtime scheme for removing dead code across linked fragments
US20020029357A1 (en) * 1998-11-16 2002-03-07 Insignia Solution, Plc Method and system of memory management using stack walking

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6170083B1 (en) * 1997-11-12 2001-01-02 Intel Corporation Method for performing dynamic optimization of computer code
EP0996059A2 (en) * 1998-10-19 2000-04-26 International Business Machines Corporation Class loading model
US20020029357A1 (en) * 1998-11-16 2002-03-07 Insignia Solution, Plc Method and system of memory management using stack walking
US6247175B1 (en) * 1998-12-22 2001-06-12 Nortel Networks Limited Method and apparatus for identifying and removing unused software procedures
US20020013938A1 (en) * 2000-02-09 2002-01-31 Evelyn Duesterwald Fast runtime scheme for removing dead code across linked fragments

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
ARNOLD M ET AL: "Online feedback-directed optimization of Java" 17TH INTERNATIONAL CONFERENCE ON OBJECT-ORIENTED PROGRAMMING, SYSTEMS, LANGUAGES AND APPLICATIONS (OOPSLA 2002), SEATTLE, WA, USA, 4-8 NOV. 2002, vol. 37, no. 11, novembre 2002 (2002-11), - 8 novembre 2002 (2002-11-08) pages 111-129, XP002251020 SIGPLAN Notices, Nov. 2002, ACM, USA ISSN: 0362-1340 *
TIP F ET AL: "Practical experience with an application extractor for Java" CONFERENCE ON OBJECT-ORIENTED PROGRAMMING, SYSTEMS, LANGUAGES AND APPLICATIONS (OOPSLA'99), DENVER, CO, USA, 1-5 NOV. 1999, vol. 34, no. 10, octobre 1999 (1999-10), - 5 novembre 1999 (1999-11-05) pages 292-305, XP002251021 SIGPLAN Notices, Oct. 1999, ACM, USA ISSN: 0362-1340 *

Also Published As

Publication number Publication date Type
FR2849229B1 (en) 2005-02-25 grant
FR2849229A1 (en) 2004-06-25 application

Similar Documents

Publication Publication Date Title
US5813011A (en) Storage of a compressed file containing its own compression management table
US6158049A (en) User transparent mechanism for profile feedback optimization
US6131192A (en) Software installation
US6272674B1 (en) Method and apparatus for loading a Java application program
US6779179B1 (en) Registry emulation
US6446254B1 (en) Packaging memory image files
US7076768B2 (en) Dynamic class packaging
US20050246704A1 (en) Registry emulation
US8650538B2 (en) Meta garbage collection for functional code
EP0974896B1 (en) Method for downloading objects or files to update software
US20050257199A1 (en) Method of and system for performance analysis and software component installation
US7546449B2 (en) Computer architecture with multiple operating systems using a common disc partition and method for the same
JP2004171234A (en) Task allocation method in multiprocessor system, task allocation program and multiprocessor system
US20070276848A1 (en) Apparatus and method for managing data
WO1992013322A1 (en) Secured method for loading a plurality of applications into a microprocessor memory card
FR2794543A1 (en) Migration from different source languages ​​to an execution medium
FR2667419A1 (en) Memory-card application-program debugging process and debugging system
FR2687816A1 (en) Process for customising a microchip card
US7024629B2 (en) System and method for processing user-selected hyperlinks on a web page
US20130311985A1 (en) Updating Web Resources
US20040193828A1 (en) Memory recycling in computer systems
FR2701578A1 (en) Process for writing to a non-volatile memory, especially to a memory card
US20080271004A1 (en) Computer-implemented method, system, and program product for optimizing a distributed application
JP2003186708A (en) Access right contradiction detecting device and analytical rule making device
JPH0997218A (en) Method and device for managing flash rom and computer control equipment

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EC EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NO NZ OM PG PH PL PT RO RU SC SD SE SG SK SL TJ TM TN TR TT TZ UA UG US UZ VC VN YU ZA ZM ZW

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): BW GH GM KE LS MW MZ SD SL SZ TZ UG ZM ZW AM AZ BY KG KZ MD RU TJ TM AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IT LU MC NL PT RO SE SI SK TR BF BJ CF CG CI CM GA GN GQ GW ML MR NE SN TD TG

121 Ep: the epo has been informed by wipo that ep was designated in this application
122 Ep: pct app. not ent. europ. phase
NENP Non-entry into the national phase in:

Ref country code: JP

WWW Wipo information: withdrawn in national office

Country of ref document: JP