Brevet FR3084497A1 — publié le 20200131

Arrière-plan de l'invention L'invention se rapporte au domaine général de 'Informatique et concerne plus particulièrement la mise à jour « sur place » (ou « in-place » en anglais) d'un fichier de données tel un logiciel par un dispositif. L'avènement de l'Internet des Objets a créé de nouveaux défis en terme de maintenance et de mise à jour de grandes constellations d'objets connectés à Internet, auxquels l'accès physique peut qui plus est, s'avérer compliqué et limité. Pour des raisons de coût et d'autonomie notamment, les composants logiciels et matériels équipant ces objets se prêtent mal aux opérations de maintenance utilisées pour des ordinateurs classiques et présentent un certain nombre de contraintes dont il est nécessaire de tenir compte. Ainsi, par exemple, les sources d'énergie de ces objets n'étant pas facilement remplaçables, il est critique lors d'une intervention sur ces objets de minimiser les opérations coûteuses en énergie, telles que par exemple le transfert de données. En outre, en raison de la dimension des parcs d'objets concernés, lorsqu'une mise à jour d'un logiciel équipant ces objets est envisagée au moyen d'un patch ou autre, le format du patch utilisé peut avoir un effet important sur la vitesse de mise à jour (par exemple, du fait d'un nombre de connexions instantanées requises au serveur de mise à jour). La technologie de stockage la plus couramment utilisée sur ce type d'objets est une mémoire persistante ou non volatile telle qu'une mémoire flash de type NAND, qui ne requiert pas d'alimentation électrique pour conserver ses données. Ce type de mémoire n'offre pas la possibilité de pouvoir modifier les données qu'elle contient au niveau de l'octet ni même du mot, mais oblige à manipuler des blocs individuels de données de taille plus importante, aussi désignée par « pages » ou « secteurs » de données, telle que par exemple de 4096 octets. En outre, toute écriture sur une page d'une mémoire NAND requiert d'effacer préalablement le contenu de cette page. On comprend bien dès lors, au vu de ces nombreuses contraintes, que la mise à jour des logiciels équipant de tels objets connectés est une opération critique qui nécessite d'être optimisée. Une approche efficace connue pour procéder à une telle mise à jour consiste à transmettre à l'objet connecté concerné uniquement les différences entre l'ancienne version du logiciel (c'est-à-dire du fichier de données implémentant le logiciel) et la nouvelle version du logiciel. Ces différences sont répertoriées dans un fichier de données connu sous le nom de « fichier delta » qui se présente sous la forme d'une suite d'instructions reflétant les changements entre l'ancienne et la nouvelle version du logiciel. Il n'est pas rare cependant que les objets connectés ne disposent pas de suffisamment d'espace mémoire pour combiner l'ancienne version du logiciel avec le fichier delta dans une nouvelle version stockée séparément de l'ancienne version. Il est donc souvent nécessaire, pour ces objets connectés, de réaliser une mise à jour dite « sur place » ou « in-place » en anglais, qui 2 consiste à construire la nouvelle version du logiciel dans le même espace mémoire que l'ancienne version. Lorsqu'une mise à jour sur place d'un fichier de données ou d'un logiciel est envisagée, des conflits peuvent apparaître du fait que certaines données se trouvant à un endroit donné dans 5 l'ancienne version du fichier de données ont été effacées et remplacées par de nouvelles données lors de la mise à jour avant d'avoir été lues et écrites à un autre endroit dans la nouvelle version du fichier. Un premier exemple d'un tel conflit est présenté dans la table ci-dessous. Adresse mémoire 0x1000 0x2000 0x3000 0x4000 0x5000 0x6000 0x7000 0x8000 Ancienne version A B C D E F G H Nouvelle version A B F D E C G H 10 Chaque lettre dans le tableau (A, B, C,...) désigne un ensemble de données se trouvant à l'adresse mémoire considérée (I.e. sur la page se trouvant à l'adresse 0x1000, sur la page se trouvant à l'adresse 0x2000, etc.). Dans l'exemple illustré, la nouvelle version du logiciel requiert - une copie de l'ensemble de données C, présent dans l'ancienne version du logiciel sur la page 15 se trouvant à l'adresse mémoire 0x3000, sur la page se trouvant à l'adresse mémoire 0x6000 et occupée dans l'ancienne version par l'ensemble de données F ; et une copie de l'ensemble de données F sur la page se trouvant à l'adresse mémoire 0x3000 et occupée dans l'ancienne version par l'ensemble de données C. Il existe donc un conflit entre la copie de l'ensemble de données C de la page se 20 trouvant à l'adresse 0x3000 vers la page se trouvant à l'adresse 0x6000 et la copie de l'ensemble de données F de la page se trouvant à l'adresse 0x6000 vers la page se trouvant à l'adresse 0x3000, car une fois que l'ensemble de données F sera copié à l'adresse 0x3000 (c'est-à-dire à la place de l'ensemble de données C), il deviendra impossible de copier l'ensemble de données C initialement présent à l'adresse 0x3000 à l'adresse 0x6000, cet ensemble de données ayant été 25 précédemment effacé pour permettre la copie de l'ensemble F à l'adresse 0x3000. Certains conflits peuvent être résolus de façon triviale. C'est le cas notamment du deuxième exemple de conflit exposé dans la table ci-dessous. 30 3 Adresse mémoire 0x1000 0x2000 0x3000 0x4000 0x5000 0x6000 0x7000 0x8000 Ancienne version A B C D E F G H Nouvelle version A B C F E C G H Pour gérer ce conflit, il suffit en effet d'exécuter en premier la copie de l'ensemble de données F sur la page se trouvant à l'adresse 0x4000 puis de copier l'ensemble de données C sur la page se trouvant à l'adresse 0x6000 occupée dans l'ancienne version du fichier de données par 5 l'ensemble de données F. Pour gérer le premier exemple de conflit, un simple ordonnancement approprié des opérations d'écriture et de lecture n'est pas suffisant. Il s'avère nécessaire d'intégrer dans le fichier delta l'ensemble de données C ou l'ensemble de données F malgré la présence de ces deux ensembles de données dans l'ancienne version du fichier de données à mettre à jour. Ainsi, les 10 fichiers delta incluent généralement deux types d'instructions pour distinguer les opérations de mise à jour consistant à ajouter de nouvelles données à l'ancienne version (instructions « ADD ») des opérations de mise à jour consistant à copier des données existant dans l'ancienne version (instructions « COPY »). Une telle solution est décrite par exemple dans le document US 6 018 747. Une autre solution pour gérer le premier exemple de conflit est de charger dans une 15 mémoire tampon de l'objet connecté (mémoire dynamique) le contenu de l'une des pages de données affectées, par exemple celle se trouvant à l'emplacement 0x3000, avant de l'effacer et de copier à sa place l'ensemble de données F. Une fois copié à l'adresse mémoire 0x3000, l'ensemble de données F peut être à son tour effacé, et l'ensemble de données C chargé dans la mémoire tampon peut être recopié à l'adresse mémoire 0x6000. Il convient de noter que la mémoire 20 dynamique est plus coûteuse que la mémoire persistante et que les objets connectés en disposent de ce fait généralement assez peu (typiquement de quoi stocker quelques pages de données). Par conséquent, si une telle solution peut être envisagée pour gérer des conflits affectant deux pages de données, elle semble difficilement envisageable pour des conflits cycliques plus complexes. Un exemple d'un conflit cyclique plus comp exe est illustré dans la table ci-dessous. Adresse mémoire 0x1000 0x2000 0x3000 0x4000 0x5000 0x6000 0x7000 0x8000 Ancienne version A B C D E F G H Nouvelle version H A B C D E F G 4 Pour gérer ce conflit cyclique, une mémoire tampon de dimension équivalente à une page de données n'est pas suffisante. Il faut recourir à une mémoire tampon ayant au moins le double de cette taille ce qui peut s'avérer impossible ou inapproprié dans le contexte des objets connectés. 5 Le document WO 2007/023497 présente une solution s'appuyant sur la copie dans une mémoire de protection de l'objet opérant la mise à jour, d'ensembles de données susceptibles d'être à l'origine de conflits afin de ne pas perdre d'informations lorsque ces ensembles de données sont manipulés lors de la mise à jour. Toutefois, suivant la configuration des conflits à gérer, cette solution peut requérir une mémoire de protection de taille importante qui, de plus, n'est pas 10 déterministe, autrement dit qui peut varier d'une configuration de conflits à l'autre. Ceci peut s'avérer compliqué à gérer au niveau d'un objet connecté. Objet et résumé de l'invention L'invention permet de pallier notamment aux inconvénients de l'état de la technique en 15 proposant un procédé de génération d'un ensemble d'instructions destinées à un dispositif pour mettre à jour sur place une version initiale d'un fichier de données en une version finale, ce fichier étant stocké sous la forme d'une pluralité de pages d'une taille prédéterminée dans une mémoire persistante du dispositif, ce procédé de génération comprenant : une étape d'initialisation, à partir de la version initiale du fichier, d'une version courante d'un 20 graphe ayant une pluralité de noeuds et d'arcs orientés, dans lequel chaque noeud représente une page distincte de la mémoire persistante occupée par le fichier, et chaque arc orienté allant d'un noeud de départ vers un noeud de destination du graphe est associé à un ensemble de données contenu dans la page représentée par le noeud de départ devant être transféré vers la page représentée par le noeud de destination pour obtenir la version finale du fichier ; 25 tant que la version courante du graphe comprend au moins un cycle, une itération de traitement d'un dit cycle comprenant : o lorsque ledit cycle contient plus de deux noeuds : - une étape de sélection d'un arc du cycle allant d'un premier noeud représentant une première page vers un deuxième noeud représentant une deuxième page tel 30 que la dimension d'un premier ensemble des données associé à cet arc soit supérieure à la dimension d'un deuxième ensemble de données associé à un arc du cycle partant du deuxième noeud et allant vers un troisième noeud du cycle ; - une étape de détermination d'une séquence ordonnée de commandes permettant de stocker le deuxième ensemble de données dans une mémoire tampon du 35 dispositif, d'obtenir dans la deuxième page les données correspondant à la deuxième page de la version finale du fichier, et de transférer vers la première page le deuxième ensemble de données depuis la mémoire tampon en exploitant un espace mémoire correspondant au premier ensemble de données ; et 5 o lorsque ledit cycle contient deux noeuds représentant une première et une deuxième page, une étape de détermination d'une séquence ordonnée de commandes permettant d'échanger des données contenues dans les première et deuxième pages pour obtenir dans les première et deuxième pages, les données correspondant aux 5 première et deuxième pages de la version finale du fichier ; o une étape de mise à jour de la version courante du graphe en fonction des première et deuxième pages modifiées conformément à la séquence ordonnée de commandes déterminée ; et une étape de génération dudit ensemble d'instructions à partir des séquences de commandes 10 ordonnées obtenues lors de chaque itération de traitement. Corrélativement, l'invention vise aussi un dispositif de génération d'un ensemble d'instructions destinées à un autre dispositif pour mettre à jour sur place une version initiale d'un fichier de données en une version finale, ce fichier étant stocké sous la forme d'une pluralité de pages d'une taille prédéterminée dans une mémoire persistante dudit autre dispositif, le dispositif 15 de génération comprenant : un module d'initialisation, configuré pour initialiser à partir de la version Initiale du fichier, une version courante d'un graphe comprenant une pluralité de noeuds et d'arcs orientés, dans lequel chaque noeud représente une page distincte de la mémoire persistante occupée par le fichier, et chaque arc orienté allant d'un noeud de départ vers un noeud de destination du 20 graphe est associé à un ensemble de données contenu dans la page représentée par le noeud de départ devant être transféré vers la page représentée par le noeud de destination pour obtenir la version finale du fichier ; - un module de traitement itératif, activé tant qu'une version courante du graphe comprend au moins un cycle, ledit module comprenant un module de sélection, un module de détermination 25 et un module de mise à jour activés lors d'une pluralité d'itérations de traitement d'un dit cycle, et : o lorsque ledit cycle contient plus de deux noeuds : - le module de sélection est configuré pour sélectionner un arc du cycle allant d'un premier noeud représentant une première page vers un deuxième noeud 30 représentant une deuxième page tel que la dimension d'un premier ensemble des données associé à cet arc soit supérieure à la dimension d'un deuxième ensemble de données associé à un arc du cycle partant du deuxième noeud et allant vers un troisième noeud du cycle ; le module de détermination est configuré pour déterminer une séquence 35 ordonnée de commandes permettant de stocker le deuxième ensemble de données dans une mémoire tampon du dispositif, d'obtenir dans la deuxième page les données correspondant à la deuxième page de la version finale du fichier, et de transférer vers la première page le deuxième ensemble de données 6 depuis la mémoire tampon en exploitant l'espace mémoire correspondant au premier ensemble de données ; o lorsque ledit cycle contient deux noeuds représentant une première et une deuxième page, le module de détermination est configuré pour déterminer une séquence 5 ordonnée de commandes permettant d'échanger des données contenues dans les première et deuxième pages pour obtenir dans les première et deuxième pages, les données correspondant aux première et deuxième pages de la version finale du fichier ; o le module de mise à jour est configuré pour mettre à jour la version courante du 10 graphe en fonction des première et deuxième pages modifiées conformément à la séquence ordonnée de commandes déterminée par le module de détermination ; et un module de génération, configuré pour générer ledit ensemble d'instructions à partir des séquences de commandes ordonnées obtenues lors de chaque itération de traitement. Selon un autre aspect, l'invention vise aussi un procédé de mise à jour sur place par 15 un dispositif d'une version initiale d'un fichier de données en une version finale, ce fichier étant stocké dans une mémoire persistante du dispositif sous la forme d'une pluralité de pages d'une taille prédéterminée, ledit procédé de mise à jour comprenant : une étape d'obtention d'un ensemble d'instructions générées en utilisant un procédé de génération selon l'invention et d'un fichier delta comprenant une pluralité d'instructions 20 conduisant à la version finale du fichier de données ; une étape de génération dans la mémoire persistante en remplacement de la version initiale du fichier, d'une pré-image de la version finale du fichier de données en appliquant l'ensemble d'instructions à la version initiale du fichier de données ; et une étape d'application d'instructions du fichier delta à la pré-image générée pour obtenir dans 25 la mémoire persistante en remplacement de la pré-image, la version finale du fichier. Corrélativement, l'invention concerne également un dispositif de mise à jour comprenant une mémoire persistante dans laquelle est stockée une version initiale d'un fichier de données sous la forme d'une pluralité de pages d'une taille prédéterminée, ledit dispositif de mise à jour comprenant : 30 un module d'obtention, apte à obtenir un ensemble d'instructions générées par un dispositif de génération selon l'invention et un fichier delta comprenant une pluralité d'instructions conduisant à la version finale du fichier de données ; - un module de génération configuré pour générer dans la mémoire persistante une pré-image de la version finale du fichier de données en appliquant ledit ensemble d'instructions à la 35 version initiale du fichier de données ; et un module d'application, configuré pour appliquer des instructions du fichier delta à la pré-image générée et obtenir dans la mémoire persistante la version finale du fichier de données. 7 Ainsi, l'invention propose un procédé itératif générant des instructions destinées au dispositif effectuant la mise à jour sur place du fichier de données à partir d'un fichier delta, afin de lui permettre de gérer plus facilement la présence d'un (ou de plusieurs) conflit(s) cyclique(s) « complexe(s) » apparaissant lors de cette mise à jour, et ce, en utilisant une mémoire tampon de 5 dimension déterministe qui ne dépasse pas la taille d'une page de données. Par mémoire tampon, on entend ici une petite zone de mémoire qui peut être notamment dynamique (ex. RAM pour Random Access Memory) par opposition à la mémoire persistante dans laquelle est stockée le fichier de données sur le dispositif ayant besoin de réaliser une mise à jour. En effet, grâce aux instructions générées par le dispositif de génération selon 10 l'invention (qui est distinct préférentiellement du dispositif effectuant la mise à jour), une mise à jour sur place du fichier de données est rendue possible et la complexité des opérations réalisées par le dispositif lors de la mise à jour sur place peut être réduite. A cet effet, l'invention s'appuie sur une modélisation sous forme d'un graphe orienté des modifications devant être effectuées sur la version initiale du fichier de données pour réaliser 15 sa mise à jour : chaque noeud du graphe représente une page distincte de la mémoire persistante du dispositif cherchant à effectuer la mise à jour, contenant des données du fichier de données ; chaque arc orienté du graphe allant d'un noeud de départ vers un noeud de destination est associé à un ensemble de données appartenant à la page représentée par le noeud de départ et devant être transféré vers la page représentée par le noeud de destination pour obtenir la version finale du 20 fichier de données. A la première itération, on initialise la version courante du graphe à partir de la version initiale du fichier, c'est-à-dire telle que stockée dans la mémoire persistante avant de procéder à sa mise à jour sur place. Puis, lors de chaque itération, on sélectionne un arc du graphe, autrement dit, un transfert de données à réaliser entre une page de départ et une page de destination de la version 25 courante du fichier de données, qui présente la caractéristique de porter sur une quantité de données supérieure au(x) transfert(s) de données devant être opéré(s) depuis la page de destination pour atteindre la version finale du fichier de données. Par exemple, on peut sélectionner lors de chaque itération, l'arc du cycle qui est associé à l'ensemble des données ayant la plus grande dimension parmi les ensembles de données associés aux arcs du cycle. 30 Cette sélection judicieuse permet de réaliser un échange partiel de données entre la page de départ correspondant au noeud de départ de l'arc sélectionné et la page de destination correspondant à son noeud de destination. Plus précisément, cette sélection offre la possibilité de copier le contenu de l'ensemble des données associé à l'arc dans sa page de destination, et de réutiliser alors l'espace mémoire 35 correspondant à cet ensemble de données pour stocker l'ensemble des données à transférer contenu dans la page de destination. Aucune de ces opérations ne requiert de stockage de plus d'une page de données dans la mémoire tampon du dispositif (bien entendu, une mémoire tampon de dimension plus importante peut être utilisée si elle est disponible sur le dispositif réalisant la 8 mise à jour sur place), et aucune donnée nécessaire à l'élaboration de la version finale du fichier ne manque sur la mémoire persistante à la fin de chaque itération. En outre, à l'issue de ces opérations, la page de destination correspondant à l'arc sélectionné est exclue du conflit cyclique (autrement dit toutes les données nécessaires à 5 l'élaboration de la page de destination dans la version finale du fichier sont présentes dans cette page de destination, même si pas nécessairement dans l'ordre attendu) et est prête pour être mise à jour facilement à partir d'un fichier delta. On note que des données nécessaires à la mise à jour de la page de départ peuvent avoir été déplacées dans la page de destination ; toutefois ceci ne constitue pas en soi un problème puisque ces données pourront être recopiées depuis cette page 10 de destination sans conflit lorsque la page de départ sera mise à jour. Autrement dit, grâce aux commandes générées à chaque itération de l'étape de traitement du procédé selon l'invention, le conflit cyclique voit sa dimension diminuer d'une page à chaque itération. Il suffit dès lors de réitérer les opérations précitées jusqu'à ce que le conflit cyclique traité n'affecte plus que deux pages de données (en prenant soin de mettre à jour le 15 graphe pour refléter les ensembles de données qui ont été transférés entre deux pages), situation dans laquelle une solution telle qu'envisagée précédemment consistant à copier le contenu de l'une de ces pages dans la mémoire tampon peut être mise en oeuvre aisément. Les commandes obtenues lors de chaque itération mise en oeuvre durant l'étape de traitement pour gérer le conflit cyclique sont ensuite transformées en un ensemble d'instructions 20 destinées à être appliquées par le dispositif réalisant la mise à jour de son fichier de données suite à l'application de ces instructions, le dispositif obtient une pré-image de la version finale du fichier de données qui dispose dans chacune de ses pages, des données contenues dans la version finale desdites pages, et sur laquelle il peut aisément appliquer un fichier delta pour réaliser une mise à jour sur place de son fichier de données. 25 Dans un mode particulier de réalisation, lorsque le cycle contient plus de deux noeuds, la séquence ordonnée de commandes déterminée comprend : une première commande de stockage, dans la mémoire tampon du dispositif, des données contenues dans la deuxième page ; - une première commande d'écriture sur la deuxième page, en utilisant les données stockées 30 dans la mémoire tampon du dispositif, des données correspondant à la deuxième page de la version finale du fichier de données ; - une deuxième commande de stockage, dans la mémoire tampon du dispositif, des données contenues dans la première page à l'exception du premier ensemble de données en conservant dans la mémoire tampon le deuxième ensemble de données ; et 35 - une deuxième commande d'écriture, sur la première page, des données stockées dans la mémoire tampon. On note que suivant le contexte dans lequel est mise en oeuvre l'invention, d'autres commandes en plus de celles listées ci-dessus peuvent être ajoutées à la séquence ordonnée de 9 commandes obtenues lors de chaque itération. Par exemple, dans un mode particulier de réalisation, si le graphe comprend un cycle contenant plus de deux noeuds, la séquence ordonnée de commandes comprend en outre une commande d'effacement des données contenues dans une page parmi la première et la deuxième page précédant chaque commande d'écriture de données 5 sur cette page. On note par ailleurs que les commandes d'écriture ne se limitent pas à copier des données contenues dans la première ou la deuxième page, mais peuvent intégrer des données provenant d'autres pages de la version courante du fichier de données, qui n'appartiennent pas nécessairement au cycle considéré. 10 Chaque commande obtenue lors d'une itération peut être traduite en une ou plusieurs instructions destinées au dispositif effectuant la mise à jour. On peut également envisager, dans un but d'optimisation, que plusieurs commandes soient regroupées et fassent l'objet d'instructions communes, notamment si elles sont redondantes d'une itération à l'autre, et ce, afin de diminuer le nombre d'opérations à réaliser par le dispositif lors de la mise à jour sur place du fichier de 15 données. Une telle faculté peut être offerte en sélectionnant par exemple de façon astucieuse l'arc considéré lors de chaque itération. Ainsi, dans un mode particulier de réalisation, l'arc sélectionné lors d'une itération va vers le premier noeud de l'arc sélectionné lors de l'itération précédente. 20 De cette sorte, dans l'exemple de séquence ordonnée de commandes fourni précédemment, la première commande de stockage dans la mémoire tampon des données contenues dans la deuxième page à l'itération courante est redondante avec la deuxième commande d'écriture dans la mémoire persistante des données contenues dans la première page à l'itération précédente et peut être supprimée ou ignorée. 25 Dans un mode particulier de réalisation, les différentes étapes du procédé de génération et/ou du dispositif de mise à jour sont déterminées par des instructions de programmes d'ordinateurs. En conséquence, l'invention vise aussi un programme d'ordinateur sur un support d'informations, ce programme étant susceptible d'être mis en oeuvre dans un dispositif de 30 génération, dans un dispositif de mise à jour ou plus généralement dans un ordinateur, ce programme comportant des instructions adaptées à la mise en oeuvre des étapes d'un procédé de génération ou d'un procédé de mise à jour tel que décrit ci-dessus. Ce programme peut utiliser n'importe quel langage de programmation, et être sous la forme de code source, code objet, ou de code intermédiaire entre code source et code objet, tel 35 que dans une forme partiellement compilée, ou dans n'importe quelle autre forme souhaitable. L'invention vise aussi un support d'informations ou d'enregistrement lisible par un ordinateur, et comportant des instructions d'un programme d'ordinateur tel que mentionné ci-dessus. 10 Le support d'informations ou d'enregistrement peut être n'importe quelle entité ou dispositif capable de stocker le programme. Par exemple, le support peut comporter un moyen de stockage, tel qu'une ROM, par exemple un CD ROM ou une ROM de circuit microélectronique, ou encore un moyen d'enregistrement magnétique, par exemple une disquette (floppy disc) ou un 5 disque dur. D'autre part, le support d'informations ou d'enregistrement peut être un support transmissible tel qu'un signal électrique ou optique, qui peut être acheminé via un câble électrique ou optique, par radio ou par d'autres moyens. Le programme selon l'invention peut être en particulier téléchargé sur un réseau de type Internet. 10 Alternativement, le support d'informations ou d'enregistrement peut être un circuit intégré dans lequel le programme est incorporé, le circuit étant adapté pour exécuter ou pour être utilisé dans l'exécution du procédé en question. L'invention vise également un système comprenant : - un dispositif de mise à jour selon l'invention, stockant dans une mémoire persistante un fichier 15 de données dans une version initiale sous la forme d'une pluralité de pages d'une taille prédéterminée ; et - un dispositif de génération selon l'invention, configure pour générer un ensemble d'instructions destinées au dispositif de mise à jour pour mettre à jour sur place la version initiale du fichier de données en une version finale. 20 On peut également envisager, dans d'autres modes de réalisation, que le procédé de génération, le procédé de mise à jour, le dispositif de génération et le dispositif de mise à jour selon l'invention présentent en combinaison tout ou partie des caractéristiques précitées. Brève description des dessins 25 D'autres caractéristiques et avantages de la présente invention ressortiront de la description faite ci-dessous, en référence aux dessins annexés qui en illustrent un exemple de réalisation dépourvu de tout caractère limitatif. Sur les figures : la figure 1 représente, dans son environnement, un système conforme à l'invention comprenant un dispositif de mise à jour et un dispositif de génération conformes à l'invention 30 dans un mode particulier de réalisation ; - la figure 2 représente un exemple d'architecture matérielle du dispositif de génération de la figure 1; la figure 3 représente un exemple d'architecture matérielle du dispositif de mise à jour de la figure 1; 35 - la figure 4 représente, sous forme d'ordinogramme, les principales étapes d'un procédé de génération selon l'invention ; les figures 5 à 7 illustrent des graphes utilisés lors du procédé de génération de la figure 4 ; et 11 - la figure 8 représente, sous forme d'ordinogramme, les principales étapes d'un procédé de mise à jour selon l'invention. Description détaillée de l'invention 5 La figure 1 représente, dans son environnement, un système 1 conforme à l'invention, comprenant un dispositif 2 équipé d'un logiciel ou fichier de données LOG, stocké dans une mémoire persistante 3 du dispositif 2, et pour lequel on envisage une mise à jour. La mémoire persistante 3 est par exemple une mémoire flash NAND connue en soi. Le dispositif 2 est un dispositif de mise à jour conforme à l'invention. Dans l'exemple 10 illustré à la figure 1, le dispositif 2 est un objet connecté à Internet, tel que par exemple un capteur, un détecteur, une montre, etc. Toutefois, aucune limitation n'est attachée à la nature du dispositif 2, il peut s'agir par exemple de tout type d'objet communiquant susceptible d'échanger des données avec un autre dispositif, via une interface de communication telle que par exemple une interface de communication sans fil. 15 Dans l'exemple envisagé ici, on suppose que le dispositif 2 dispose de ressources mémoire limitées, de sorte qu'une mise à jour du fichier de données LOG « sur place » est envisagée. Pour rappel, lors d'une telle mise à jour, la version finale Vfin du fichier de données (c'est-à-dire obtenue après mise à jour) est stockée au même emplacement dans la mémoire persistante 3 que la version initiale Vinit du fichier de données avant mise à jour (autrement dit, la 20 version finale Vfin du fichier de données vient remplacer dans la mémoire persistante la version initiale Vinit du fichier de données). Le dispositif 2 utilise à cet effet un fichier delta, noté FA, complété par des instructions générées conformément à l'invention, comme décrit plus en détail ultérieurement. On suppose ici, que le fichier de données LOG occupe dans la mémoire persistante 3 25 une pluralité de pages de données, d'une même taille prédéterminée, par exemple de taille égale à 4096 octets. Une page de données représente dans le contexte de l'invention la plus petite quantité de données ordonnées et contiguës que l'objet connecté 2 peut effacer de sa mémoire. On suppose par ailleurs que la mise à jour du fichier de données LOG que doit réaliser l'objet connecté 2 présente un conflit cyclique entre plusieurs pages de données du fichier de 30 données LOG, comme décrit précédemment. Ce conflit cyclique peut être identifié en analysant un fichier delta dit initial, FAO, contenant les instructions reflétant les changements devant être opérés entre la version initiale Vinit du fichier de données LOG et sa version finale Vfin. Un tel fichier delta est connu en soi et n'est pas décrit davantage ici. A titre illustratif seulement, on envisage le conflit cyclique représenté dans la table 1 35 reproduite ci-dessous : 12 Adresse mémoire Pl : Ox1000 P2 : Ox2000 P3 : Ox3000 P4 : Ox4000 de la page Ensemble de données contenues dans A B C D la version initiale du fichier LOG Ensembles de données requises dans chaque page de la version finale du D A B C fichier LOG (pré- image de la version finale) Dans l'exemple illustré ci-dessus, les ensembles de données A, B, C et D constituent des ensembles de données de dimension quelconque compris dans quatre pages Pi, P2, P3 et P4 de la version initiale Vinit du fichier de données LOG et amenés à être déplacés vers d'autres pages 5 dans la version finale Vfin. Ces ensembles de données peuvent avoir des tailles différentes ou identiques. Bien entendu, cet exemple n'est donné qu'à titre illustratif et n'est aucunement limitatif de l'invention. L'invention, par le biais des instructions générées, vise comme détaillé ultérieurement 10 à permettre au dispositif 2 d'obtenir une pré-image de la version finale du fichier en vue de faciliter la mise à jour sur place du fichier de données LOG par l'objet connecté 2. Ces instructions sont générées par un dispositif de génération 4 d'instructions, conforme à l'invention, compris dans le système 1. Dans le mode de réalisation décrit ici, le dispositif de génération 4 est par exemple un 15 serveur ou un ordinateur disposant de l'architecture matérielle illustrée à la figure 2. Il comprend notamment un processeur 5, une mémoire non volatile 6, une mémoire vive 7, ainsi que des moyens de communication 8. Ces moyens de communication 8 permettent au dispositif de génération 4 de communiquer notamment avec l'objet connecté 2 pour lui fournir les instructions qu'il a générées pour faciliter la mise à jour sur place du fichier logiciel LOG à partir du fichier delta 20 FA. Ils peuvent comprendre par exemple une interface de communication sans fil, telle qu'une interface Bluetooth ou WiFI ou cellulaire (ex. 3G, 4G, ou 5G). La mémoire non volatile 6 du dispositif de génération 4 constitue un support d'enregistrement conforme à l'invention, lisible par le processeur 5 et sur lequel est enregistré un 13 programme d'ordinateur PROG4 conforme à l'invention, comportant des instructions pour l'exécution d'un procédé de génération selon l'invention. Le programme PROG4 définit divers modules fonctionnels et logiciels ici du dispositif de génération 4, aptes à mettre en oeuvre les étapes du procédé de génération selon l'invention et 5 s'appuyant sur les éléments matériels 5-8 du dispositif de génération 4. Ces modules fonctionnels comprennent notamment, dans le mode de réalisation décrit ici, comme illustré à la figure 1 : - un module 4A de traitement itératif, comportant un module d'initialisation 4A1, configuré pour initialiser à partir de la version initiale du fichier une version dite courante G(iter=1) d'un graphe orienté comprenant une pluralité de noeuds et d'arcs orientés, dans lequel chaque 10 noeud représente une page distincte de la mémoire persistante occupée par le fichier LOG, et chaque arc orienté allant d'un noeud de départ vers un noeud de destination du graphe est associé à un ensemble de données contenu dans la page représentée par le noeud de départ devant être transféré vers la page représentée par le noeud de destination pour obtenir la version finale du fichier. Lors de l'initialisation, les pages représentées par les noeuds 15 correspondent aux pages de la version initiale Vinit du fichier. Le module de traitement 4A est activé tant qu'une version courante G(iter) du graphe G comprend au moins un cycle contenant au moins deux noeuds. Il comprend également un module 4A2 de sélection, un module 4A3 de détermination et un module 4A4 de mise à jour, activés au cours d'une pluralité d'itérations de traitement d'un tel cycle. Ces modules sont tels que : 20 o lorsque le cycle considéré contient plus de deux noeuds le module 4A2 de sélection est configuré pour sélectionner un arc du cycle allant d'un premier noeud représentant une première page vers un deuxième noeud représentant une deuxième page tel que la dimension d'un premier ensemble des données associé à cet arc soit supérieure à la dimension d'un deuxième ensemble 25 de données associé à un arc du cycle partant du deuxième noeud et allant vers un troisième noeud du cycle ; le module 4A3 de détermination est configuré pour déterminer une séquence ordonnée de commandes CMD(iter) permettant de stocker le deuxième ensemble de données dans une mémoire tampon BUF de l'objet connecté 2, d'obtenir dans 30 la deuxième page les données correspondant à la deuxième page de la version finale Vfin du fichier, et de transférer vers la première page le deuxième ensemble de données depuis la mémoire tampon BUF de l'objet connecté 2 en exploitant l'espace mémoire correspondant au premier ensemble de données ; o lorsque ledit cycle contient deux noeuds, le module 4A3 de détermination est configuré 35 pour déterminer une séquence ordonnée de commandes CMD(iter) permettant d'échanger des données contenues dans les première et deuxième pages pour obtenir dans les première et deuxième pages, les données correspondant aux première et deuxième pages de la version finale Vfin du fichier ; 14 o le module 4A4 de mise à jour est configuré pour mettre à jour la version courante G du graphe en fonction des première et deuxième pages modifiées conformément à la séquence ordonnée de commandes CMD(iter) déterminée par le module de détermination pour l'itération courante ; et 5 un module 4B de génération, configuré pour générer un ensemble d'instructions à partir des séquences de commandes ordonnées obtenues lors de chaque itération par le module de traitement 4A. Les fonctions des différents modules du dispositif de génération 4 sont décrites plus en détail ultérieurement. 10 De façon similaire, dans le mode de réalisation décrit ici, l'objet connecté 2 a l'architecture matérielle d'un ordinateur telle qu'illustrée à la figure 3. Il comprend notamment un processeur 9, une mémoire morte 10, une mémoire vive 11 contenant la mémoire tampon BUF mentionnée précédemment, la mémoire persistante (i.e. non volatile) 3 dans laquelle se trouve stocké le fichier de données LOG, ainsi que des moyens de communication 12, lui permettant 15 notamment de communiquer avec le dispositif de génération 4, et de recevoir les instructions que celui-ci a générées pour faciliter la mise à jour sur place du fichier logiciel LOG à partir du fichier delta FA. Ils peuvent comprendre par exemple une interface de communication sans fil, telle qu'une interface Bluetooth ou WiFI ou cellulaire (ex. 3G, 4G, ou 5G). La mémoire morte 10 de l'objet connecté 2 constitue un support d'enregistrement 20 conforme à l'invention, lisible par le processeur 10 et sur lequel est enregistré un programme d'ordinateur PROG2 conforme à l'invention, comportant des instructions pour l'exécution d'un procédé de mise à jour selon l'invention. Le programme PROG2 définit divers modules fonctionnels et logiciels ici de l'objet connecté 2, aptes à mettre en oeuvre les étapes du procédé de mise à jour selon l'invention et 25 s'appuyant sur les éléments matériels 3, 9-12 de l'objet connecté 2. Ces modules fonctionnels comprennent notamment, dans le mode de réalisation décrit ici, comme illustré à la figure 1 : un module 2A d'obtention, apte à obtenir l'ensemble d'instructions INST générées par le dispositif de génération 4 et un fichier delta FA comprenant une pluralité d'instructions conduisant à la version finale Vfin du fichier de données ; 30 un module 2B de génération configuré pour générer une pré-image Vmid de la version finale Vfin du fichier de données LOG en appliquant l'ensemble d'instructions INST reçu du dispositif de génération 4 à la version initiale Vinit du fichier de données ; et - un module 2C d'application, configuré pour appliquer des instructions du fichier delta FA à la pré-image Vmid générée et obtenir la version finale Vfin du fichier de données. Dans le mode 35 de réalisation décrit ici, le fichier delta FA contient des instructions reflétant les différences entre la pré-image Vmid et la version finale Vfin du fichier de données LOG. Les fonctions des différents modules de l'objet connecté 2 sont décrites plus en détail ultérieurement. 15 On note que dans un autre mode de réalisation, le fichier delta FA peut comprendre les instructions INST générées par le dispositif de génération 4. Dans un autre mode de réalisation, le fichier delta FA peut correspondre au fichier delta initial F40 et l'objet connecté 2 peut être configure pour ne tenir compte que des instructions du fichier delta initial FAO pertinentes pour 5 obtenir à partir de la pré-image Vmid la version finale Vfin du fichier LOG. La figure 4 représente, sous forme d'ordinogramme, les principales étapes d'un procédé de génération d'instructions selon l'invention telles qu'elles sont mises en oeuvre, dans un mode particulier de réalisation, par le dispositif de génération 4. Comme mentionné précédemment, ces instructions référencées par INST ont pour 10 dessein de faciliter les opérations mises en oeuvre par l'objet connecté 2 pour la mise à jour sur place du fichier de données LOG, lorsque cette mise à jour comprend un ou plusieurs conflits cycliques entre les pages de données du fichier de données LOG devant être modifiées. Conformément à l'invention, ces instructions INST sont générées par le dispositif de génération 4 au moyen d'un procédé itératif mis en oeuvre via son module de traitement 4A, et 15 s'appuyant sur une modélisation au moyen d'un graphe orienté G de la situation conflictuelle (existence d'un ou plusieurs conflits cycliques) entre les pages du fichier de données LOG. Ce graphe orienté G est mis à jour par le module 4A2 de mise à jour du dispositif de génération 4 à chaque itération iter pour refléter l'évolution de la situation conflictuelle à l'issue de chaque itération. 20 Par souci de simplification ici, on se limite ici à la présence d'un seul cycle dans la mise à jour du fichier LOG (i.e. dans le graphe orienté G). Toutefois, l'invention s'applique comme évoqué précédemment lorsque plusieurs cycles sont présents dans la mise à jour, chaque cycle étant traité Individuellement par le dispositif de génération 4 comme décrit ci-après, jusqu'à ce qu'il n'y ait plus de cycle dans le graphe (étape test E20). 25 Le graphe orienté G est un graphe comportant une pluralité de noeuds et d'arcs orientés reliant ces noeuds. Chaque noeud du graphe G représente une page distincte de la mémoire persistante 3 de l'objet connecté 2 occupée par le fichier de données LOG. Chaque arc du graphe G allant d'un noeud de départ vers un noeud de destination est associé à un ensemble de données appartenant à la page représentée par le noeud de départ et devant être transféré vers la 30 page représentée par le noeud d'arrivée pour obtenir la version finale du fichier de données A la première itération iter=1, les noeuds du graphe G représentent les pages de la version initiale Vinit du fichier de données LOG qui font l'objet de transferts de données entre la version initiale Vinit et la version finale Vfin du fichier de données LOG (i.e. qui sont destinées à recevoir des données d'une autre page du fichier et/ou qui sont destinées à transférer des données 35 vers une autre page du fichier). La figure 5A fournit un exemple de graphe G correspondant au conflit cyclique exposé à la table 1 et sa version courante à la première itération (iter=1) du traitement itératif mis en oeuvre par le module 4A de traitement du dispositif de génération 4. Il comprend quatre noeuds 16 N1, N2, N3 et N4 correspondant respectivement aux quatre pages Pl, P2, P3 et P4 situées aux adresses mémoires 0x1000, 0)(2000, 0x3000 et 0x4000. Dans l'exemple de la figure 5A, le graphe G pour l'itération iter=1 (noté G(iter=1)) comprend également quatre arcs orientés et plus spécifiquement : 5 - un arc Li allant du noeud N1 représentant la page P1 située à l'adresse 0x1000 jusqu'au noeud N2 représentant la page P2 située à l'adresse 0x2000, et associé à l'ensemble de données A qui doit être transféré lors de la mise à jour, de la page P1 vers la page P2 ; - un arc L2 allant du noeud N2 représentant la page P2 située à l'adresse 0x2000 jusqu'au noeud N3 représentant la page P3 située à l'adresse 0x3000, et associé à l'ensemble de données B 10 qui doit être transféré lors de la mise à jour, de la page P2 vers la page P3 ; un arc L3 allant du noeud 1\13 représentant la page P3 située à l'adresse 0x3000 jusqu'au noeud N4 représentant la page P4 située à l'adresse 0x4000, et associé à l'ensemble de données C qui doit être transféré lors de la mise à jour, de la page P3 vers la page P4 ; et un arc L4 allant du noeud N4 représentant la page P4 située à l'adresse 0x4000 jusqu'au noeud 15 N1 représentant la page Pl située à l'adresse 0x1000, et associé à l'ensemble de données D qui doit être transféré lors de la mise à jour, de la page P4 vers la page Pl. Chaque arc du graphe est orienté dans le sens du transfert de données qui doit être opéré entre les pages du fichier de données pour obtenir la version finale Vfin. Comme mentionné ci-dessus, à l'itération iter=1, les pages en question sont les pages de la version initiale Vinit du 20 fichier. Au fil des itérations, ces pages évoluent « virtuellement » en fonction des transferts des ensembles de données déterminés par le dispositif de génération 4 et plus précisément par son module de traitement 4A via son module 4A3 de détermination, de sorte que les arcs du graphe sont susceptibles d'évoluer de même que le contenu des pages représentées par les noeuds. On suppose ici que ce contenu est mentionné dans des métadonnées associées à chaque noeud du 25 graphe. Ainsi, la mise à jour de la version courante du graphe G à chaque itération comprend une mise à jour des métadonnées associées aux noeuds du graphe (ceux qui ont été considérés durant l'itération courante) et une mise à jour de métadonnées associées aux arcs du graphe représentant les ensembles de données devant être transférés entre les noeuds de départ et les noeuds de destination de ces arcs. 30 Conformément à l'invention, tant que le dispositif de génération 4 détecte un cycle dans la version courante G(iter) du graphe G (réponse oui à l'étape test E20), il met en oeuvre une nouvelle itération de traitement de ce graphe (étape E30). Sinon, le procédé de génération est arrêté (étape E110). Dans l'exemple illustré à la figure 5A, la version courante G(iter) du graphe comprend, 35 à l'itération iter=1 un cycle contenant quatre noeuds (N1, N2, N3 et N4). Sur détection de ce cycle qui comprend plus de deux noeuds (réponse oui aux étapes tests E20 et E40), le module de traitement 4A du dispositif de génération 4 active ses modules 4A2-4A4. 17 Plus précisément, il sélectionne, via son module 4A2 de sélection, un arc dans le cycle détecté allant d'un premier noeud vers un deuxième noeud tel que la dimension de l'ensemble des données (premier ensemble de données au sens de l'invention) associé à cet arc soit supérieure à la dimension d'un ensemble de données (deuxième ensemble de données au sens de l'invention), 5 associé à un arc du cycle partant du deuxième noeud et allant vers un troisième noeud du cycle (étape E50). Pour vérifier ce critère, dans le mode de réalisation décrit ici, le module 4A2 de sélection sélectionne, lors de l'étape E50, l'arc du cycle qui est associé à la quantité maximale de données à transférer. On suppose à titre illustratif ici que c'est l'ensemble A de données qui 10 contient le plus de données à transférer parmi les ensembles de données A, B, C et D. Autrement dit, le module 4A2 de sélection sélectionne le lien Ll allant du noeud N1 (premier noeud au sens de l'invention) représentant la page Pl (première page au sens de l'invention) au noeud N2 (deuxième noeud au sens de l'invention) représentant la page P2 (deuxième page au sens de l'invention) et associé à l'ensemble A de données (premier ensemble de données au sens de l'invention) à 15 transférer, celui-ci comprenant plus de données à transférer que l'ensemble B de données (deuxième ensemble de données au sens de l'invention) associé à l'arc orienté L2 entre le noeud N2 et le noeud N3 (troisième noeud au sens de l'invention). En variante, le module 4A2 de sélection peut sélectionner un autre arc du cycle dès lors que celui-ci vérifie le critère énoncé ci-dessus. 20 Suite à cette sélection, dans le mode de réalisation décrit ici, le module 4A3 de détermination dérive une séquence ordonnée de commandes CMD qui vont permettre de diminuer la taille du cycle d'un noeud (étape E60). Cette séquence ordonnée de commandes résultant de la mise en oeuvre du procédé est en particulier générée à l'aide de l'optimisation algorithmique suivante. 25 En référence à la figure 5B, considérons les trois noeuds N1, N2 et N3 représentant respectivement les pages Pl, P2 et P3 du fichier LOG, ainsi que les ensembles de données A et B à transférer respectivement de la page Pl représentée par le noeud N1 vers la page P2 représentée par le noeud N2, et de la page P2 vers la page P3 représentée par le noeud N3. Par hypothèse (résultant du choix de l'arc Ln l'ensemble de données A contient plus de données que l'ensemble 30 de données B. Au vu de cette configuration, les inventeurs proposent, pour diminuer d'un noeud la taille du cycle existant entre les noeuds N1, N2, N3 et N4, de procéder dans un premier temps aux opérations suivantes : chargement du contenu de la page P2 dans la mémoire tampon BUF de l'objet connecté 2 35 (dont la dimension est supérieure ou égale à une page) ; effacement du contenu de la page P2 dans la mémoire persistante 3 ; copie dans la page P2 de la mémoire persistante 3 des données destinées à être contenues dans cette page dans la version finale du fichier de données (autrement dit dans la version 18 finale de la page P2). On note que les données contenues dans la version finale de la page P2 (aussi désignées par « données de la page P2 correspondant à la version finale du fichier ») peuvent être déterminées par exemple à partir du fichier delta FAO. Les données copiées dans la page P2 proviennent notamment du contenu de la première page Pl (pour ce qui est de 5 l'ensemble de données A) et des données mémorisées dans la mémoire tampon BUF. Il est par ailleurs possible de copier des données dans la page P2 provenant d'autres pages de la version courante Vcur du fichier de données LOG (ce n'est toutefois pas le cas dans l'exemple de la table 1). Ainsi, à l'issue de cette première série d'opérations, l'ensemble A des données a été 10 transféré vers sa page de destination, à savoir la page P2. Il peut donc être effacé de la page Pl de la mémoire persistante 3 sans risque de perte de données préjudiciable à la mise à jour du fichier de données LOG, et ce, quand bien même une partie des données de l'ensemble A (noté A' ici) devrait être conservée dans la forme finale de la page Pl (c'est-à-dire dans la forme qu'a cette page selon la version finale Vfin du fichier de données), cette partie pouvant être en effet 15 transférée depuis la page P2 qui se trouve maintenant dans sa version finale. Partant de ce constat, et sachant que l'ensemble B de données contient moins de données que l'ensemble A, il est alors possible de stocker dans la mémoire tampon BUF, y compris lorsque celle-ci a une dimension d'une page au maximum, le contenu de la première page Pl à l'exception des données de l'ensemble A tout en conservant dans la mémoire tampon l'ensemble B, 20 ces différentes données occupant en effet une place dans la mémoire tampon BUF inférieure ou égale à une page. Il en découle la deuxième série suivante d'opérations proposées par les inventeurs à savoir : chargement du contenu de la page PI à l'exception de l'ensemble de données A dans la mémoire tampon BUF de l'objet connecté 2 ; 25 effacement du contenu de la page Pl dans la mémoire persistante 3 ; puis copie dans la page Pl de la mémoire persistante 3 des données contenues dans la mémoire tampon BUF qui incluent notamment l'ensemble de données B. A l'issue de cette deuxième série d'opérations, la configuration des trois noeuds Ni, N2 et N3 illustrée à la figure 56 a évolué pour se trouver dans l'état illustré à la figure 5C. La page P2 30 représentée par le noeud N2 est sortie du cycle ; elle contient éventuellement un ensemble de données A' à transférer vers la page Pl, mais n'a plus de dépendance vis-à-vis de la page P3. La page Pl, à l'issue de la deuxième série d'opérations précitées, contient l'ensemble de données B devant être transféré vers la page P3 pour se conformer à la version finale Vfin du fichier de données LOG. 35 Pour refléter ces opérations, le procédé propose de dériver une séquence ordonnée de commandes destinées à être fournies sous la forme d'un jeu d'instructions à l'objet connecté 2 avec un fichier delta, pour faciliter la mise à jour sur place du fichier LOG. Conformément à l'invention, cette séquence ordonnée de commandes est déterminée par le module 4A4 de 19 détermination du dispositif de génération 4 et comprend des commandes permettant de stocker l'ensemble de données B dans la mémoire tampon BUF de l'objet connecté, d'obtenir dans la page P2 les données correspondant à la page P2 de la version finale Vfin du fichier (incluant notamment l'ensemble de données A stocké dans la page Pl), et de transférer vers la page Pl le deuxième 5 ensemble de données B depuis la mémoire tampon en exploitant l'espace mémoire correspondant à l'ensemble de données A qui a été précédemment copié sur la page P2. Par « exploiter l'espace mémoire » on entend que l'ensemble de données de A ayant déjà été copié sur la page P2 il est possible d'effacer ces données de la page Pl et de copier à la place par exemple l'ensemble de données B qui contient moins de données que l'ensemble de données A. En variante, il peut ne pas 10 y avoir d'effacement préalable de l'ensemble de données A suivant le type de mémoire persistante considérée, et l'ensemble de données B peut être copié à la place d'une partie de l'ensemble de données A. Selon une autre variante encore, lorsque l'on transfère vers la page Pl l'ensemble des données B il se peut que ce soit un autre ensemble de données qui soit copié à la place des données A et que l'ensemble de données B soit copié à un autre endroit de la page Pl. Toutes ces 15 variantes conduisent à exploiter l'espace mémoire de la page Pl qui était dédié à l'ensemble des données A, une fois que celui-ci a été copié sur la page P2. Dans le mode de réalisation décrit ici, le module 4A3 de détermination détermine la séquence ordonnée suivante : - une première commande de stockage, dans la mémoire tampon BUF de l'objet connecté 2 des 20 données contenues dans la page P2 (deuxième page au sens de l'invention) représentée par le noeud N2 (deuxième noeud au sens de l'invention). On note que ces données contiennent l'ensemble de données B (deuxième ensemble de données au sens de l'invention) ; une première commande d'effacement du contenu de la page P2 sur la mémoire persistante 3 (peut être optionnelle) ; 25 - une première commande d'écriture, sur la page P2 de la mémoire persistante 3, des données destinées à être contenues dans la page P2 de la version finale Vfin du fichier de données, ces données comprenant notamment l'ensemble de données A (premier ensemble de données au sens de l'invention) provenant de la page Pi (première page au sens de l'invention) et des données stockées dans la mémoire tampon BUF, ainsi que le cas échéant d'autres pages du 30 fichier de données LOG ; une deuxième commande de stockage, dans la mémoire tampon BUF, des données contenues dans la page Pi, à l'exception de l'ensemble de données A, et en conservant dans la mémoire tampon BUF l'ensemble de données B ; une deuxième commande d'effacement du contenu de la page Pl sur la mémoire persistante 3 35 (peut être optionnelle) ; et - une deuxième commande d'écriture, sur la page Pl dans la mémoire persistante 3, des données stockées dans la mémoire tampon BUF. 20 Cet exemple de séquence ordonnée de commandes n'est donné qu'à titre illustratif, et d'autres séquences de commandes conduisant au même résultat peuvent être envisagées. Le module 4A4 de mise à jour du dispositif 4 de génération met alors à jour la version courante G du graphe pour tenir compte des données modifiées sur les pages P1 et P2 5 conformément aux commandes indiquées ci-dessus (étape E70). Cette mise à jour consiste ici à mettre à jour les métadonnées associées aux noeuds du graphe (ceux qui ont été considérés durant les commandes) et les métadonnées associées aux arcs du graphe compte tenu des nouvelles dispositions de données dues aux commandes dans les pages représentées par les noeuds. La version courante ainsi mise à jour est destinée à être utilisée à l'itération suivante 10 comme version courante du graphe G pour cette itération suivante (autrement dit comme version courante G(iter+1) du graphe G à l'itération iter+1). Dans l'exemple illustratif envisagé ici, les commandes déterminées par le module 4A3 de détermination conduisent à quatre pages Pl, P2, P3, P4, où P2 correspond à la deuxième page de la version finale Vfin du fichier LOG. Les pages P3 et P4 n'ont pas été modifiées lors de cette 15 première itération et contiennent les mêmes données que les pages P3 et P4 de la version initiale Vinit du fichier de données LOG. La page Pl contient l'ensemble de données B (qui doit être transféré dans la version finale Vfin vers la page P3) et les données de la page Pl de la version initiale Vinit à l'exception de l'ensemble de données A. La page P2 se trouve dans sa version finale (c'est-à-dire contient l'ensemble des données A) et contient des données A' qui se trouvent 20 éventuellement dans la version finale de la page Pl. La figure 6A représente la version courante G du graphe mise à jour lors de l'étape E70. Comme mentionné ci-dessus, cette version mise à jour est destinée à être utilisée comme version courante du graphe G pour l'itération iter=2. On la note donc G(iter=2). Comme illustré sur cette figure, la version courante mise à jour du graphe G(iter=2) comprend toujours quatre noeuds 25 N1, N2, N3 et N4 correspondant aux quatre pages du fichier de données LOG, mais l'arc orienté L2 existant dans le graphe G(iter=1) a été supprimé. L'arc orienté Ll initialement présent dans la version G(iter=1) du graphe G est maintenant orienté dans le sens N2 vers N1 et est associé à l'ensemble de données A'. Un nouvel arc orienté L5 a été ajouté allant du noeud N1 représentant la première page Pl vers le noeud N3 représentant la page P3. Il est associé à l'ensemble de données 30 B, qui doit maintenant être transféré de la page Pl vers la page P3 pour obtenir la version finale Vfin du fichier de données LOG. Suite à cette mise à jour, si la version courante du graphe mise à jour G(iter=2) contient un cycle, une nouvelle itération est mise en oeuvre par le module de traitement 4A du dispositif de génération 4, et les étapes E20 à E70 sont réitérées le cas échéant à partir de cette 35 version courante G(iter=2) du graphe. La version courante du graphe G(iter=2) comprend un cycle contenant les noeuds N1, N3 et N4, autrement dit, plus de deux noeuds (réponse oui à l'étape E20). Suite à cette détection, le dispositif 4 de génération met alors en oeuvre les étapes E40 à E70 décrites précédemment. 21 On suppose à titre illustratif que l'arc L3 est sélectionné lors de l'étape E50. Les commandes obtenues à l'étape E60 sont alors les suivantes : - une commande de stockage, dans la mémoire tampon BUF de l'objet connecté 2 des données contenues dans la page P4 (deuxième page au sens de l'invention) représentée par le noeud 5 N4 (deuxième noeud au sens de 'Invention). On note que ces données contiennent l'ensemble de données D (deuxième ensemble de données au sens de l'invention) ; une commande d'effacement du contenu de la page P4 (peut être optionnelle) ; une commande d'écriture, sur la page P4, des données destinées à être contenues dans la page P4 de la version finale Vfin du fichier de données, ces données comprenant l'ensemble de 10 données C (premier ensemble de données au sens de l'invention) provenant de la page P3 (première page au sens de l'invention) et des données stockées dans la mémoire tampon BUF, ainsi que le cas échéant d'autres pages du fichier de données LOG dans sa version actuelle ; une commande de stockage, dans la mémoire tampon BUF, des données contenues dans la page P3, à l'exception de l'ensemble de données C, et en conservant dans la mémoire tampon 15 BUF l'ensemble de données D ; et - une commande d'effacement du contenu de la page P3 (peut être optionnelle) ; et - une commande d'écriture, sur la page P3, des données stockées dans la mémoire tampon BUF. Ces commandes reflètent les différentes opérations qui permettent de passer de la configuration illustrée à la figure 6B vers la configuration illustrée à la figure 6C. A l'issue de ces 20 opérations, le noeud N4 est sorti du cycle. Le module 4A5 de mise à jour du dispositif 4 de génération met alors à jour la version courante du graphe G pour tenir compte des données modifiées conformément aux commandes indiquées ci-dessus sur les pages P3 et P4 lors de l'étape E60 de l'itération iter=2. Dans l'exemple illustratif envisagé ici, les commandes déterminées par le module 4A3 de détermination conduisent 25 à l'issue de cette itération iter=2 à quatre pages Pl, P2, P3, P4, telles que : P2 correspond à la deuxième page de la version finale Vfin du fichier LOG ; - P4 correspond à la quatrième page de la version finale Vfin du fichier LOG et contient éventuellement un ensemble de données C' destiné à être transféré vers la page P3 pour obtenir la version finale de cette page ; 30 - P3 contient l'ensemble de données D et les données de la page P3 de l'itération précédente iter=1 à l'exception de l'ensemble de données C ; Pl est restée inchangée par rapport à l'itération précédente iter=1 et contient l'ensemble des données B destiné à être transféré vers P3 dans la version finale du fichier. La figure 7 représente la version courante du graphe G mise à jour lors de l'étape 35 E70. Cette version mise à jour est destinée à être utilisée comme version courante du graphe G pour l'itération iter=3 et est notée G(iter=3)). Comme illustré sur cette figure, la version G(iter=3) du graphe G comprend quatre noeuds N1, N2, N3 et N4 correspondant aux quatre pages du fichier de données LOG, mais l'arc orienté L4 entre les noeuds N1 et N4 a été supprimé. 22 L'arc orienté L3 est maintenant orienté dans le sens N4 vers N3 et est associé à l'ensemble de données C'. Un nouvel arc orienté L6 a été ajouté allant du noeud N3 représentant la page P3 vers le noeud N1 représentant la page Pl. Il est associé à l'ensemble de données D, qui doit maintenant être transféré de la page P3 vers la page P1 pour obtenir la version finale Vfln du 5 fichier de données LOG. Suite à cette mise à jour, si la version courante du graphe mise à jour contient un cycle, une nouvelle itération est mise en oeuvre par le module de traitement 4A du dispositif de génération 4 (étape E30) à partir de la version courante G(Iter=3) du graphe. La version courante G(iter=3) du graphe G comprend ici un cycle contenant les noeuds 10 N2 et N3, autrement dit, exactement deux noeuds (réponse non à l'étape E40 et étape E80). Un tel cycle peut être géré aisément au moyen de la mémoire tampon BUF comme décrit précédemment en copiant le contenu pertinent de l'une des deux pages impliquées dans le cycle, le temps de copier le contenu pertinent de l'autre page dans sa page de destination. Pour refléter ces opérations, le deuxième module de détermination 4A6 du dispositif de génération 4 détermine 15 donc une séquence ordonnée de commandes permettant d'échanger des données contenues dans les deux pages Pl et P3 correspondant aux noeuds N1 et N3 de la version courante G(iter=3) du graphe en utilisant la mémoire tampon BUF (étape E90). Ces commandes sont par exemple les suivantes : - une commande de stockage, dans la mémoire tampon BUF de l'objet connecté 2, des données 20 contenues dans la page P3 ; une commande d'effacement du contenu de la page P3 dans la mémoire persistante 3 (peut être optionnelle) ; - une commande d'écriture, sur la page P3, des données destinées à être contenues dans la version finale de cette page P3 (incluant par exemple ici les données C' se trouvant sur la page 25 P4, les données B se trouvant sur la page Pl, les données pertinentes se trouvant stockées dans la mémoire tampon BUF et éventuellement d'autres données provenant d'autres pages du fichier de données dans sa version courante) ; une commande d'écriture, dans la mémoire tampon BUF de l'objet connecté 2, des données de la version finale de la page Pl. On note que la mémoire tampon inclut déjà les données D 30 précédemment contenues dans la page P3 avant sa modification, auxquelles sont ajoutées les données A' se trouvant sur la page P2, les données pertinentes de la page Pl dans sa version courante et éventuellement d'autres données provenant d'autres pages du fichier de données dans sa version courante ; une commande d'effacement du contenu de la page P1 dans la mémoire persistante 3 (peut 35 être optionnelle) ; une commande d'écriture, sur la page Pl, des données stockées dans la mémoire tampon BUF. 23 On note que ceci n'est qu'un exemple de commandes permettant aux pages Pl et P3 d'échanger les données qu'elles contiennent et qui leur sont mutuellement destinées D'autres commandes peuvent être envisagées en variante, ou dans un autre ordre. A l'issue de l'étape E90, le dispositif de génération 4, via son module 4A4 de mise à 5 jour, met à jour la version courante du graphe G (étape E100), de façon identique à ce qui a été décrit précédemment pour l'étape E70. Dans l'exemple illustratif envisagé ici dans lequel le graphe G contenait initialement un unique cycle, cette version courante ne contient plus de cycle (réponse non à l'étape test E20). Le dispositif 4B de génération génère alors un jeu d'instructions INST à partir des 10 séquences de commandes ordonnées obtenues lors des différentes itérations réalisées par le module de traitement 4A (étape E110). Autrement dit, lors de cette étape, il traduit (code) les différentes séquences de commandes ordonnées en un ensemble ordonné d'instructions compréhensibles par l'objet connecté 2 et destinées à être appliquées par celui-ci pour gérer le conflit cyclique. Ces instructions peuvent comprendre notamment : 15 des instructions de copie de données d'une page de la mémoire persistante vers la mémoire tampon ; - des instructions de copie de données de la mémoire tampon vers une page de la mémoire persistante ; - des instructions de copie de données de la mémoire tampon vers la mémoire tampon ; 20 - des instructions d'effacement de données de la mémoire persistante ; - des instructions de désignation d'une page de la mémoire persistante ; - des instructions de copie chaînée de données de la mémoire persistante vers la mémoire persistante ou vers la mémoire tampon ; des instructions de copie chaînée de données de la mémoire tampon vers la mémoire 25 persistante ou vers la mémoire tampon ; etc Bien entendu, ces types d'instructions ne sont donnés qu'à titre illustratif et peuvent être complétés. Parmi les instructions mentionnées ci-avant, l'instruction de désignation d'une page de la mémoire persistante peut être utilisée avantageusement pour signaler au dispositif que les 30 instructions suivant cette instruction de désignation vont porter sur une même page (celle désignée par l'instruction de désignation) et s'affranchir dans lesdites instructions suivantes de coder la page en question. Il est ainsi possible de gagner quelques bits dans le codage des instructions. De façon similaire, les instructions de copie étant coûteuses à coder (il est nécessaire 35 notamment de coder les adresses de départ et de destination, ainsi que la longueur de la copie), les instructions de copie chaînée permettent de s'affranchir du codage de l'adresse de destination lorsque les données à copier sont à copier à la suite les unes des autres. 24 On note que chaque commande peut être codée par le module 48 de génération en une ou plusieurs instructions en fonction de différents critères (complexité de la commande, langage utilisé par l'objet connecté, optimisation des instructions, etc.). Le module 4B de génération peut également utiliser des instructions combinées ou spécialisées permettant de 5 réduire le nombre d'instructions à transmettre à l'objet connecté 2 dans le jeu d'instructions INST (ex. instructions de copie chaînée évoquées ci-dessus, etc.). Certaines informations contenues dans les instructions peuvent également être codées de façon optimisée, etc., pour réduire l'espace alloué à l'encodage de ces informations. Par ailleurs lors de l'étape E110, le module 4B de génération peut procéder à diverses 10 optimisations et regrouper le cas échéant certaines commandes qui peuvent être redondantes entre deux itérations. Ce cas de figure peut se présenter par exemple lorsqu'au cours de l'étape E40, l'arc sélectionné lors d'une itération iter va vers le noeud de départ de l'arc sélectionné lors de l'itération précédente iter-1 : on obtient en effet une commande de stockage dans la mémoire tampon des données contenues dans la deuxième page au sens de l'invention considérée à 15 l'itération iter qui est redondante avec la commande de stockage dans la mémoire tampon des données contenues dans la première page au sens de l'invention considérée à l'itération précédente iter-1. Ces deux commandes peuvent être regroupées par le module 4B de génération dans les instructions qu'il génère. On note que le cas de figure qui vient d'être décrit peut être considéré par le module 20 4A3 de sélection du dispositif de génération 4 comme un critère de sélection supplémentaire appliqué lors de la sélection de l'arc du cycle à l'étape E50 : le module 4A3 de sélection peut en effet sélectionner lors de l'étape E40 un arc du cycle vérifiant le critère attendu par rapport aux quantités de données transférées et tel que le noeud de destination de cet arc soit le noeud de départ de l'arc sélectionné lors de l'itération précédente (à condition qu'un tel arc existe). 25 Dans un autre mode de réalisation de l'invention, le dispositif de génération 4 complète le jeu d'instructions INST reflétant les différentes commandes obtenues à chaque itération par d'autres instructions dans un but informatif notamment, liées à la maintenance de la mémoire tampon BUF de l'objet connecté 2 et à l'effacement des pages de mémoire, telles que par exemple une instruction ERASE signalant à l'objet connecté 2 que les données présentes sur une 30 page ne sont plus requises et que par conséquent l'objet n'a pas à déterminer si l'adresse en cours d'écriture correspond à de la mémoire déjà effacée ou non. Comme mentionné précédemment, le jeu d'instructions INST généré par le dispositif de génération 4 est destiné à être fourni avec un fichier delta à l'objet connecté 2 pour faciliter la mise à jour sur place du fichier de données LOG. Dans le mode de réalisation décrit ici, le fichier 35 delta FA destiné à être fourni avec les instructions INST à l'objet connecté 2 est généré par le dispositif de génération 4 à partir du fichier delta initial FAO contenant les instructions reflétant les changements devant être opérés entre la version initiale Vinit du fichier de données LOG et sa version finale Vfin. Il contient les instructions reflétant les changements devant être opérés entre la 25 pré-image Vmid du fichier de données LOG et sa version finale Vfin. La génération d'un tel fichier delta est connue en soi et n'est pas décrite davantage ici. Nous allons maintenant décrire en référence à la figure 8 les principales étapes d'un procédé de mise à jour selon l'invention, dans un mode particulier de réalisation dans lequel il est 5 mis en oeuvre par l'objet connecté 2 en utilisant le jeu d'instructions INST. On suppose que l'objet connecté 2 reçoit, via son module d'obtention 2A, le fichier delta FA ainsi que le jeu d'instructions INST généré par le dispositif de génération 4 (étape F10). Par exemple, le dispositif de génération 4 transmet ces deux éléments à l'objet connecté 2 via son interface de communication. 10 L'objet connecté 2 génère une pré-image Vmid du fichier LOG en appliquant, via son module 2B de génération, le jeu d'instructions INST reçu sur la version initiale Vinit du fichier de données LOG stocké dans sa mémoire persistante 3 (étape F20). Il utilise lors de l'application de ce jeu d'instructions sa mémoire tampon BUF. La génération de la pré-image est réalisée « sur place », c'est-à-dire en lieu et place dans la mémoire persistante 3 de la version initiale Vinit. Cette 15 pré-image de la version finale du fichier de données LOG est exempte de cycles complexes à gérer. L'objet connecté 2 applique ensuite, via son module d'obtention 2C, le fichier delta FA à la version intermédiaire Vmid ainsi obtenue pour obtenir ce fichier dans sa version finale Vfin (étape F30) et terminer la mise à jour sur place du fichier LOG (étape REVENDICATIONS1. Procédé de génération d'un ensemble d'instructions destinées à un dispositif pour mettre à jour sur place une version initiale d'un fichier de données en une version finale, ce fichier étant stocké sous la forme d'une pluralité de pages d'une taille prédéterminée dans une mémoire persistante du dispositif, ce procédé de génération comprenant : une étape d'initialisation (E10), à partir de la version initiale du fichier, d'une version courante d'un graphe ayant une pluralité de noeuds et d'arcs orientés, dans lequel chaque noeud représente une page distincte de la mémoire persistante occupée par le fichier, et chaque arc orienté allant d'un noeud de départ vers un noeud de destination du graphe est associé à un ensemble de données contenu dans la page représentée par le noeud de départ devant être transféré vers la page représentée par le noeud de destination pour obtenir la version finale du fichier ; tant que la version courante du graphe comprend au moins un cycle (E20), une itération de traitement d'un dit cycle comprenant : o lorsque ledit cycle contient plus de deux noeuds : - une étape de sélection (60) d'un arc du cycle allant d'un premier noeud représentant une première page vers un deuxième noeud représentant une deuxième page tel que la dimension d'un premier ensemble des données associé à cet arc soit supérieure à la dimension d'un deuxième ensemble de données associé à un arc du cycle partant du deuxième noeud et allant vers un troisième noeud du cycle ; - une étape de détermination (E60) d'une séquence ordonnée de commandes permettant de stocker le deuxième ensemble de données dans une mémoire tampon du dispositif, d'obtenir dans la deuxième page les données correspondant à la deuxième page de la version finale du fichier, et de transférer vers la première page le deuxième ensemble de données depuis la mémoire tampon en exploitant l'espace mémoire correspondant au premier ensemble de données ; et o lorsque ledit cycle contient deux noeuds représentant une première et une deuxième page, une étape de détermination (E90) d'une séquence ordonnée de commandes permettant d'échanger des données contenues dans les première et deuxième pages pour obtenir dans les première et deuxième pages, les données correspondant aux première et deuxième pages de la version finale du fichier ; o une étape de mise à jour (E70,E100) de la version courante du graphe en fonction des première et deuxième pages modifiées conformément à la séquence ordonnée de commandes déterminée ; et 27 - une étape de génération (E110) dudit ensemble d'instructions à partir des séquences de commandes ordonnées obtenues lors de chaque itération de traitement. 2. Procédé de génération selon la revendication 1 dans lequel lors de l'étape de 5 sélection, l'arc sélectionné est l'arc du cycle associé à l'ensemble des données ayant la plus grande dimension. 3. Procédé de génération selon la revendication 1 ou 2 dans lequel lorsque le cycle contient plus de deux noeuds, la séquence ordonnée de commandes déterminée comprend : 10 une première commande de stockage, dans la mémoire tampon du dispositif, des données contenues dans la deuxième page ; - une première commande d'écriture sur la deuxième page, en utilisant les données stockées dans la mémoire tampon du dispositif, des données correspondant à la deuxième page de la version finale du fichier de données ; 15 - une deuxième commande de stockage, dans la mémoire tampon du dispositif, des données contenues dans la première page à l'exception du premier ensemble de données en conservant dans la mémoire tampon le deuxième ensemble de données ; et - une deuxième commande d'écriture, sur la première page, des données stockées dans la mémoire tampon. 20 4. Procédé de génération selon la revendication 3 dans lequel la séquence ordonnée de commandes comprend en outre une commande d'effacement des données contenues dans une page parmi la première et la deuxième page précédant chaque commande d'écriture de données sur cette page. 25 5. Procédé de génération selon l'une quelconque des revendications 1 à 4 dans lequel, l'arc sélectionné lors d'une itération de traitement va vers le premier noeud de l'arc sélectionné lors de l'itération précédente. 30 6. Procédé de génération selon l'une quelconque des revendications 1 à 5 dans lequel les données écrites sur la deuxième page conformément à la première commande d'écriture comprennent en outre des données contenues dans une page représentée par un noeud du graphe distinct du premier noeud et du deuxième noeud. 35 7. Procédé de mise à jour sur place par un dispositif d'une version initiale d'un fichier de données en une version finale, ce fichier étant stocké dans une mémoire persistante du dispositif sous la forme d'une pluralité de pages d'une taille prédéterminée, ledit procédé de mise à jour comprenant : 28 une étape d'obtention (F10) d'un ensemble d'instructions (INST) générées en utilisant un procédé de génération selon l'une quelconque des revendications 1 à 6 et d'un fichier delta comprenant une pluralité d'instructions conduisant à la version finale du fichier de données ; une étape de génération (F20) dans la mémoire persistante en remplacement de la version 5 initiale du fichier, d'une pré-image de la version finale du fichier de données en appliquant l'ensemble d'instructions à la version initiale du fichier de données ; et une étape d'application (F30) d'instructions du fichier delta à la pré-image générée pour obtenir dans la mémoire persistante en remplacement de la pré-image, la version finale du fichier. 10 8. Programme d'ordinateur (PROG4,PROG2) comportant des instructions pour l'exécution des étapes du procédé de génération selon l'une quelconque des revendications 1 à 6 ou un procédé de mise à jour selon la revendication 7 lorsque ledit programme est exécuté par un ordinateur. 15 9. Support d'enregistrement lisible par un ordinateur sur lequel est enregistré un programme d'ordinateur selon la revendication 8. 10. Dispositif de génération (4) d'un ensemble d'instructions destinées à un autre 20 dispositif pour mettre à jour sur place une version initiale d'un fichier de données en une version finale, ce fichier étant stocké sous la forme d'une pluralité de pages d'une taille prédéterminée dans une mémoire persistante dudit autre dispositif, le dispositif de génération comprenant : un module d'initialisation (4A1), configuré pour initialiser à partir de la version initiale du fichier, une version courante d'un graphe comprenant une pluralité de noeuds et d'arcs 25 orientés, dans lequel chaque noeud représente une page distincte de la mémoire persistante occupée par le fichier, et chaque arc orienté allant d'un noeud de départ vers un noeud de destination du graphe est associé à un ensemble de données contenu dans la page représentée par le noeud de départ devant être transféré vers la page représentée par le noeud de destination pour obtenir la version finale du fichier ; 30 - un module de traitement itératif (4A), activé tant qu'une version courante du graphe comprend au moins un cycle, ledit module comprenant un module de sélection, un module de détermination et un module de mise à jour activés lors d'une pluralité d'itérations de traitement d'un dit cycle, et : o lorsque ledit cycle contient plus de deux noeuds 35 le module de sélection est configuré pour sélectionner un arc du cycle allant d'un premier noeud représentant une première page vers un deuxième noeud représentant une deuxième page tel que la dimension d'un premier ensemble des données associé à cet arc soit supérieure à la dimension d'un deuxième ensemble 29 de données associé à un arc du cycle partant du deuxième noeud et allant vers un troisième noeud du cycle ; - le module de détermination est configuré pour déterminer une séquence ordonnée de commandes permettant de stocker le deuxième ensemble de 5 données dans une mémoire tampon du dispositif, d'obtenir dans la deuxième page les données correspondant à la deuxième page de la version finale du fichier, et de transférer vers la première page le deuxième ensemble de données depuis la mémoire tampon en exploitant l'espace mémoire correspondant au premier ensemble de données ; 10 o lorsque ledit cycle contient deux noeuds représentant une première et une deuxième page, le module de détermination est configuré pour déterminer une séquence ordonnée de commandes permettant d'échanger des données contenues dans les première et deuxième pages pour obtenir dans les première et deuxième pages, les données correspondant aux première et deuxième pages de la version finale du 15 fichier ; o le module de mise à jour est configuré pour mettre à jour la version courante du graphe en fonction des première et deuxième pages modifiées conformément à la séquence ordonnée de commandes déterminée par le module de détermination ; et un module de génération, configuré pour générer ledit ensemble d'instructions à partir des 20 séquences de commandes ordonnées obtenues lors de chaque itération de traitement. 11. Dispositif de mise à jour (2) comprenant une mémoire persistante (3) dans laquelle est stockée une version initiale d'un fichier de données sous la forme d'une pluralité de pages d'une taille prédéterminée, ledit dispositif de mise à jour comprenant : 25 - un module d'obtention (2A), apte à obtenir un ensemble d'instructions générées par un dispositif de génération selon la revendication 10 et un fichier delta comprenant une pluralité d'instructions conduisant à la version finale du fichier de données ; un module de génération (2B) configuré pour générer dans la mémoire persistante une pré-image de la version finale du fichier de données en appliquant ledit ensemble d'instructions à 30 la version initiale du fichier de données ; et un module d'application (2C), configuré pour appliquer des instructions du fichier delta à la pré-image générée et obtenir dans la mémoire persistante la version finale du fichier de données.