FR 3035239 A1 20161021 FR 1553465 A 20150417 1 DOMAINE GENERAL La présente invention concerne un procédé de gestion d'une mémoire de carte électronique. ETAT DE L'ART On connaît de l'état de la technique une carte électronique comprenant un processeur adapté pour exécuter un système d'exploitation et plusieurs programmes applicatifs - communément appelés applications - qui coopèrent avec le système d'exploitation. La carte électronique comprend une mémoire à laquelle le processeur a accès. Pour chaque application, sont mémorisés dans la mémoire le programme lui-même, qu'il soit sous forme de code compilé ou de code interprété, et d'autre part des données écrites et/ou lues dans la mémoire par le programme au cours de son exécution par le processeur. Ces données sont, par exemple, des données d'utilisateur, c'est-à-dire des données associées à un utilisateur particulier du programme. Le nombre de programmes simultanément installables dans la carte électronique dépend donc de la taille de stockage de la mémoire de la 20 carte électronique, qui doit être limitée pour des raisons de coût. Chaque programme, ou application, est fourni par un éditeur et assure un service déterminé. Dans des cartes électroniques selon un premier type, chaque programme peut être installé sur commande d'un utilisateur de la carte. 25 Toutefois, des cartes électroniques selon un deuxième type ne sont pas conçues pour qu'un utilisateur puisse commander lui-même l'installation de telles applications. Les applications sont alors préinstallées dans la mémoire de la carte, lors d'une étape de configuration en usine, avant toute utilisation de la carte. 30 Lors de cette étape de configuration en usine, il est possible que plusieurs applications fournies par des éditeurs concurrents, assurant un 3035239 2 même service, soient préinstallées dans la mémoire de la carte. Cette pré-installation est requise pour une carte selon le deuxième type. Elle est également possible pour une carte selon le premier type, afin d'éviter à l'utilisateur d'avoir à installer lui-même ces applications ou l'inciter à 5 utiliser ces applications préinstallées. Par exemple, plusieurs applications de type bancaire offrant des services de transaction bancaire concurrents peuvent être préinstallées dans la mémoire. Or, dans la mesure où ces applications concurrentes assurent un 10 même service, il probable que l'utilisateur n'utilisera que l'une d'entre elles ; une partie de l'espace mémoire de la carte électronique est alors consommée inutilement, et ne peut pas être utilisée pour stocker des données liées à l'application qui est réellement utilisée par l'utilisateur. 15 PRESENTATION DE L'INVENTION Un but de l'invention est d'augmenter l'espace mémoire disponible dans une carte électronique présentant un espace mémoire total prédéfini. Afin d'atteindre ce but, l'invention propose le procédé selon la 20 revendication 1. La première écriture de données dans le premier espace mémoire signifie implicitement que le premier programme est d'intérêt pour l'utilisateur de la carte électronique. Dès lors, il est considéré par la présente invention que le deuxième programme fournissant un même 25 service que le premier programme est probablement sans intérêt pour ce même utilisateur. Le procédé libère automatiquement une partie de la mémoire consommée inutilement par le code du deuxième programme. Cette partie de la mémoire libérée devient alors disponible pour d'autres usages. 3035239 3 Ce procédé peut également être complété par les caractéristiques suivantes, prises seules ou en une quelconque de leurs combinaisons techniquement possibles. Le premier espace mémoire peut être accessible sélectivement par 5 le premier programme. Le procédé peut comprendre une détermination d'une information indiquant si le premier programme et le deuxième programme mettent en oeuvre ou non un service identique, la libération étant sélectivement mise en oeuvre si l'information indique que les deux programmes mettent tous 10 deux en oeuvre un service identique. Le service identique peut être un service de transaction bancaire. Le procédé peut comprendre une détection de tout programme tiers mémorisé dans la mémoire et configuré pour commander une exécution du deuxième programme, la libération du deuxième espace 15 étant sélectivement mise en oeuvre si aucun programme tiers n'est détecté. Le procédé peut comprendre en outre l'allocation, dans la zone de la mémoire rendue disponible par la libération du deuxième espace mémoire, d'un troisième espace mémoire accessible par le premier 20 programme. L'invention proposé également un produit programme d'ordinateur comprenant des instructions de code de programme pour l'exécution des étapes du procédé qui précède, lorsque ce programme est exécuté par un processeur. 25 L'invention propose également une carte électronique comprenant : - au moins un processeur adapté pour exécuter un premier programme et un deuxième programme, les deux programmes mettant en oeuvre un service identique, 30 - une mémoire comprenant : 3035239 4 o un premier espace mémoire accessible par le premier programme, o un deuxième espace mémoire mémorisant le code du deuxième programme, 5 dans laquelle le processeur est configuré pour : - détecter une première écriture de données dans le premier espace mémoire provoquée par le premier programme dans le premier espace mémoire, et - commander la libération du deuxième espace mémoire en réponse 10 à la détection. La mémoire peut être de type flash ou EEPROM. Il est également proposé une utilisation d'une carte électronique conforme à ce qui précède comme carte personnelle d'authentification. 15 DESCRIPTION DES FIGURES D'autres caractéristiques, buts et avantages de l'invention ressortiront de la description qui suit, qui est purement illustrative et non limitative, et qui doit être lue en regard des dessins annexés sur lesquels : La figure 1 représente schématiquement une carte électronique selon un mode de réalisation de l'invention. La figure 2 est un organigramme d'étapes d'un procédé de gestion de la mémoire de la carte représentée schématiquement en figure 1, selon un mode de réalisation de l'invention. Les figures 3 à 5 représentent schématiquement le contenu de la 25 mémoire de la carte électronique à des stades différents de mise en oeuvre du procédé selon la figure 2. Sur l'ensemble des figures, les éléments similaires portent des références identiques. 30 DESCRIPTION DETAILLEE DE L'INVENTION 3035239 5 En référence à la figure 1, une carte électronique 1 comprend une mémoire 2, au moins un processeur 4, et une interface de communication 6. La mémoire 2 comprend une ou plusieurs unités mémoire adaptées 5 pour mémoriser des données de programme. La mémoire 2 est par exemple une unité mémoire unique de type « flash ». Le processeur 4 est adapté pour exécuter des instructions de code de programmes, et notamment accéder en lecture et en écriture ou en lecture uniquement au contenu de la mémoire 2. 10 La carte électronique 1 est munie d'un système d'exploitation dont les instructions de code sont mémorisées dans la mémoire 2 et sont exécutables par le processeur 4. Ce système d'exploitation est un programme central qui contrôle l'installation et l'exécution d'autres programmes appelés par la suite programmes applicatifs ou applications. 15 En particulier, le système d'exploitation est configuré pour définir des espaces mémoires isolés les uns par rapport aux autres dans la mémoire 2 (par exemple des partitions). Dans la suite, on définit un « espace mémoire » un ensemble de bits consécutifs ou non de la mémoire 2 caractérisé par au moins une paire 20 d'adresses mémoire de début et de fin. On considère que chaque bit de la mémoire peut prendre deux états alternativement: un état « libre », c'est-à-dire qu'il n'est utilisé pour représenter des donnée écrites dans la mémoire, et un état alloué. L'interface de communication 6 est connectée au processeur 4. Le 25 processeur 4 est également adapté pour traiter des données reçues par l'interface 6. Dans un mode de réalisation, la carte électronique 1 est une carte personnelle d'authentification, par exemple une carte bancaire d'un utilisateur. La carte électronique 1 peut alors se présenter sous la forme 30 d'une carte du type UICC (« Universal Integrated Circuit Card » en anglais), ou carte SIM (« Subscriber Identity Module », en anglais). 303 52 3 9 6 L'interface de communication 6 d'une telle carte est adaptée pour coopérer avec une interface de communication d'un terminal, par exemple une borne de transaction bancaire ou un terminal mobile d'utilisateur. 5 Il va maintenant être décrit un procédé de gestion de la mémoire 2 de la carte électronique 1 en référence à l'organigramme d'étapes illustré en figure 2. Dans un état initial de la carte électronique 1, la mémoire 2 ne contient que les instructions de code du système d'exploitation dans un 10 espace dédié référencé OS. La mémoire 2 est vierge de toute application. Les étapes suivantes sont mises en oeuvre par le système d'exploitation alors qu'il est exécuté par le processeur 4 de la carte électronique 1. Dans une étape 100, le système d'exploitation alloue dans la 15 mémoire 2 un espace mémoire Cl, destiné à contenir une application Pl. Dans une étape 102, le système d'exploitation commande l'installation d'une application P1 dans l'espace mémoire Cl ainsi alloué. L'application P1 est reçue par le processeur 4 via l'interface de communication 6. A l'issue de l'étape 102, des instructions de code du 20 programme P1 sont contenues dans l'espace mémoire C1, sous forme de code interprété ou bien de code compilé directement exécutable par le processeur 4. On comprend que l'application P1 présente une taille en bits inférieure ou égale à la taille en bits de l'espace mémoire Cl 25 préalablement alloué. Dans une étape 104, le système d'exploitation alloue dans la mémoire 2 un espace mémoire de données D1, destiné à contenir des données propres à l'application P1. Ces données seront écrites et lues par l'application P1 au cours de son exécution ultérieure par le processeur 4, 30 via le système d'exploitation. Il s'agit par exemple de données spécifiques 3035239 7 à un utilisateur de l'application P1, et/ou de données de configuration de l'application P1 partagées par plusieurs utilisateurs de l'application Pl. L'espace mémoire D1 est accessible sélectivement par l'application Pl. 5 L'étape 104 d'allocation de l'espace mémoire de données D1 peut être mise en oeuvre avant ou après l'installation 100 de l'application P1 dans l'espace mémoire C1. Dans une étape 106, le système d'exploitation alloue dans la mémoire 2 un espace mémoire C2, destiné à contenir une application P2. 10 Dans une étape 108, l'application P2 est installée dans l'espace mémoire C2 ainsi alloué. L'application P2 est par exemple reçue par le processeur 4 via l'interface de communication 6. A l'issue de l'étape 108, des instructions de code du programme P2 sont contenues dans l'espace mémoire C2, sous forme de code interprété ou bien de code compilé 15 directement exécutable par le processeur 4. Dans une étape 110, le système d'exploitation alloue dans la mémoire 2 un espace mémoire de données D2, destiné à contenir des données propres à l'application P2. Ces données seront écrites et lues par l'application P2 au cours de son exécution ultérieure par le processeur 4, 20 via le système d'exploitation. Il s'agit par exemple de données spécifiques à un utilisateur de l'application P2, et/ou de données de configuration de l'application P2 partagées par plusieurs utilisateurs de l'application P2. L'espace mémoire D2 est accessible sélectivement par l'application P2. L'étape 110 d'allocation de l'espace mémoire de données D2 peut être mise en oeuvre avant ou après l'installation 106 de l'application P2 dans l'espace mémoire C2. Les étapes 100, 102, 104, 106, 108, 110 sont typiquement mises en oeuvre au cours d'une phase de configuration de la carte électronique en 30 usine, avant sa mise dans le commerce et toute utilisation par un utilisateur. 303 52 3 9 8 Chaque étape d'allocation 100, 104, 106, 110 peut comprendre un positionnement des bits de l'espace mémoire correspondant C1, D1, C2, D2 à une valeur de référence, de façon à indiquer le caractère non encore utilisé de ces bits. Par exemple, chaque octet de l'espace mémoire 5 considéré est positionné à zéro. Sont mémorisées dans la mémoire des informations logiques représentatives d'une relation entre plusieurs applications. On prendra dans la suite l'exemple de l'existence dans la mémoire d'une information entre les applications P1 et P2. 10 Ces informations logiques peuvent être écrites dans l'espace OS lors de la phase de configuration en usine de la carte électronique 1 ou bien préprogrammé. Les informations logiques peuvent être de différents types. Un premier type d'information logique est indicatif de l'existence 15 d'une fonction commune, ou un service identique rendu par les applications que cette information logique met en lien. Par exemple, les deux applications P1 et P2 sont intrinsèquement configurées pour rendre à un utilisateur de la carte électronique 1 un service identique lorsqu'ils sont exécutés par le processeur 4. Dans la 20 suite, on prendra l'exemple de deux applications bancaires fournies par deux fournisseurs concurrents; le service identique mis en oeuvre par les deux applications est dans ce cas un service de transaction bancaire. Un deuxième type d'information logique est un lien de dépendance entre plusieurs programmes. Ce deuxième type d'information peut par 25 exemple comprendre un programme de référence, et au moins un autre programme tiers, ou programme dépendant, qui serait à la fois présent dans la mémoire 2 et configuré pour commander une exécution du programme de référence. Le programme de référence est en d'autres termes requis pour l'exécution de chaque programme tiers. On considère également que le système d'exploitation a connaissance du caractère vierge ou non de chaque espace mémoire 3035239 9 alloué, en particulier des espaces mémoire de données D1 et D2. Cette connaissance peut être matérialisée par un bit dans la mémoire OS, positionnable à 1 pour indiquer le caractère vierge d'un espace mémoire donné, et positionnable à 0 pour indiquer que cet espace mémoire n'est 5 plus vierge, c'est-à-dire qu'il contient des données utiles. Le contenu de la mémoire 2 est schématiquement représenté en figure 3 après la mise en oeuvre des étapes 100, 102, 104, 106, 108 et 110. A ce stade, les espaces mémoires de données D1 et D2 sont considérés vierges par le système d'exploitation. 10 On considère dans la suite qu'un utilisateur entre en possession de la carte électronique 1 qui a été personnalisée et est vendue pour utiliser exclusivement l'application bancaire P1, ce qui rend l'application bancaire P2 inutilisée. L'utilisateur n'a donc pas besoin d'utiliser l'application P2. 15 Dans une étape 112, le système d'exploitation détecte une première écriture dans l'espace mémoire de données D1. Cette première écriture intervient typiquement lors d'une première exécution du programme P1 par le processeur 4, sur commande de l'utilisateur de la carte électronique 1. Cette première utilisation déclenche en effet la 20 sauvegarde de données dans l'espace mémoire D1 pour la première fois (données personnelles de l'utilisateur et/ou données de configuration globales ayant un effet au cours d'exécutions ultérieures de l'application P1). L'étape de détection 112 comprend l'identification du programme 25 associé en propre à l'espace D1 (il s'agit ici du programme P1 ). Dans le présent mode de réalisation, seul le programme P1 a accès à l'espace D1, il est donc aisé de déduire que les données écrites dans D1 ont été écrites sur instruction du programme P1. L'étape d'identification 112 comprend en outre la recherche d'au 30 moins une information logique mémorisée dans la mémoire 2 qui mettrait 3035239 10 en lien le programme P1 identifié avec un autre programme selon le premier type précité. La détection est considérée positive si au moins une information du premier type indiquant que le programme P1 et un autre programme 5 rendent un service identique est trouvé dans la mémoire 2. Sinon, la détection est considérée négative. Dans l'exemple visé par les figures 3 à 5, une telle information logique, indiquant que le programme P1 et le programme P2 rendent un service identique, est trouvé en mémoire ; la détection est alors 10 considérée comme positive. En réponse à une détection 112 positive, dans une étape 114, le système d'exploitation libère automatiquement l'espace mémoire C2 contenant les instructions de code de l'application P2, laquelle est concurrente de l'application Pl. 15 L'espace mémoire D2 peut également être libéré dans l'étape 114. La libération de l'espace D2 peut être mise en oeuvre sélectivement en cas de succès de la libération de l'espace C2. Cette libération 114 comprend par exemple le marquage, dans une table de mappage contrôlée par le système d'exploitation, que la zone de 20 la mémoire 2 qui était occupée par l'espace mémoire C2 et celle occupée par l'espace mémoire D2 sont à présent disponibles pour une future allocation par le système d'exploitation (par exemple pour installer une tierce application). Après la libération 114, le contenu de la mémoire 2 est tel que représenté en figure 4. 25 Après la libération 114, un nouvel espace mémoire peut être alloué dans toute ou partie de la ou les zones de la mémoire 2 libérées. Le nouvel espace mémoire peut être rendu accessible par le premier programme (P1). Ce nouvel espace mémoire peut être contigu à l'espace mémoire D1 30 préalablement utilisable par le programme P1, comme représenté sur la figure 3 ; dans ce cas, il peut être prévu un traitement de fusion logique 303 52 39 11 de l'espace mémoire D1 et du nouvel espace mémoire, fusion qui correspond à une extension de l'espace D1 à la zone libérée au cours de l'étape 112, comme représenté sur la figure 5, et/ou à la zone libérée au cours de l'étape 114. 5 Dans le mode de réalisation décrit précédemment, la détection 112 utilise seulement le premier type d'information logique (indiquant des services communs entre programmes). En variante, le premier type d'information logique (indiquant des services communs entre programmes) et le deuxième type d'information 10 logique (informations de dépendance entre programmes) sont combinés. Dans cette variante, une libération d'espace mémoire peut n'être mise en oeuvre que si les deux conditions suivantes sont remplies : - une information du premier type indiquant que le programme P1 et un autre programme rendent un service identique est trouvé dans la 15 mémoire 2, et - aucune information du second type ne mentionne cet autre programme (ici P2) comme un programme de référence susceptible d'être invoqué par un programme tiers. Dans ce cas, la libération 114 du programme P2 est mise en oeuvre. 20 En revanche, si l'une et/ou l'autre des deux conditions n'est pas remplie, la détection est négative, et la libération du programme P2 n'est pas mise en oeuvre. Par ailleurs, il peut également être prévu d'utiliser le second type d'informations logiques pour effacer automatiquement tous les 25 programmes qui sont rendus inopérants suite à la libération de l'espace C2 (et donc la suppression tacite du programme P2). Ceci peut être mis en oeuvre par une recherche d'informations logique du deuxième type qui mentionne le programme P2 comme programme de référence. Pour chaque information logique du second type 30 trouvée, on libère la zone mémoire contenant le code du programme tiers identifié par cette information logique. 303 52 3 9 12 Lorsque la carte électronique 1 est embarquée dans et/ou coopère avec un terminal comprenant des moyens de saisie, l'étape de libération 112 d'un programme mémorisé dans la mémoire 2 peut également être déclenchée en réponse à l'acquisition, par les moyens de saisie, de 5 données représentatives d'une commande de suppression du programme correspondant. Dans le mode de réalisation illustré sur les figures 3 à 5, les zones de données D1 et D2 sont représentées comme étant distinctes. En variante, une zone de données D accessible non pas 10 spécifiquement par un programme, mais par (au moins) les deux programmes P1 et P2, est allouée, cette allocation correspondant aux étapes 104 et 110 (on a alors D = D1 U D2). Dans cette variante, l'étape de détection 112 peut comprendre une identification du programme qui commande, ou a commandé l'écriture (P1 15 dans le cas qui précède), avant de procéder à une recherche d'informations logiques mentionnant ce programme identifié. La présente invention ne se limite pas à un procédé appliqué à des applications bancaires ; des applications d'autres types peuvent faire l'objet du procédé décrit ci-dessus, pourvu qu'elles rendent un service 20 identique. REVENDICATIONS1. Procédé de gestion d'une mémoire (2) de carte électronique (1), la carte électronique (1) étant apte à exécuter un premier programme (P1) 5 et un deuxième programme (P2), le procédé comprenant des étapes de : - allocation (100) dans la mémoire (2) d'un premier espace mémoire (D1) accessible par le premier programme (P1), - allocation (106) dans la mémoire (2) d'un deuxième espace mémoire (C2) mémorisant le code du deuxième programme (P2), 10 le procédé étant caractérisé par des étapes de : - détection (112) d'une première écriture de données sur instruction du premier programme dans le premier espace mémoire (D1), - libération (114) du deuxième espace mémoire (C2) en réponse à 15 la détection (112). 2. Procédé selon la revendication précédente, dans lequel le premier espace mémoire est accessible sélectivement par le premier programme. 20 3. Procédé selon l'une des revendications précédentes, comprenant la détermination d'une information indiquant si le premier programme (P1) et le deuxième programme (P2) mettent en oeuvre ou non un service identique, la libération (114) étant sélectivement mise en oeuvre si l'information indique que les deux programmes mettent tous deux en 25 oeuvre un service identique. 4. Procédé selon l'une des revendications précédentes, dans lequel le service identique est un service de transaction bancaire. 30 5. Procédé selon l'une des revendications précédentes, comprenant en outre une détection de tout programme tiers mémorisé dans la mémoire 3035239 14 et configuré pour commander une exécution du deuxième programme, la libération du deuxième espace étant sélectivement mise en oeuvre si aucun programme tiers n'est détecté. 6. Procédé selon l'une des revendications précédentes, comprenant en outre l'allocation, dans la zone de la mémoire rendue disponible par la libération (114) du deuxième espace mémoire (D2), d'un troisième espace mémoire accessible par le premier programme (P1). 7. Produit programme d'ordinateur comprenant des instructions de code de programme pour l'exécution des étapes du procédé selon l'une des revendications précédentes, lorsque ce programme est exécuté par un processeur (4). 8. Carte électronique (1) comprenant : - au moins un processeur (4) adapté pour exécuter un premier programme (P1) et un deuxième programme (P2), les deux programmes mettant en oeuvre un service identique, - une mémoire (2) comprenant : o un premier espace mémoire (D1) accessible par le premier programme (P1), o un deuxième espace mémoire (C2) mémorisant le code du deuxième programme (P2), la carte électronique (1) étant caractérisée par le fait que le processeur 25 (4) est configuré pour : - détecter (112) une première écriture de données dans le premier espace mémoire (D1) provoquée par le premier programme dans le premier espace mémoire (D1), et - commander la libération (114) du deuxième espace mémoire (2) en 30 réponse à la détection (112). 3035239 15 9. Carte électronique (1) selon la revendication précédente, dans lequel la mémoire (2) est de type flash ou EEPROM. 10. Utilisation d'une carte électronique (1) selon l'une des revendications 5 8 ou 9 comme carte personnelle d'authentification.