Brevet FR3084496A1 — publié le 20200131

Arrière-plan de l'invention L'invention se rapporte au domaine général de l'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 termes 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 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 2 connectés, de réaliser une mise à jour dite « sur place » ou « in-place » en anglais, qui 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 doivent être effacées et remplacées par de nouvelles données lors de la mise à jour avant même d'avoir pu être lues et écrites à un autre endroit dans la nouvelle version du fichier. Un premier exemple d'un tel conflit est présenté dans a 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 la table (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 se trouvant à l'adresse mémoire 0x3000, sur la page se trouvant à l'adresse mémoire 0x6000 15 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 trouvant à l'adresse 0x3000 vers la page se trouvant à l'adresse 0x6000 et la copie de F de la page 20 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é sur la page se trouvant à l'adresse 0x3000 (c'est-à-dire potentiellement à la place de l'ensemble de données C), il deviendra impossible de copier l'ensemble de données C initialement présent sur la page se trouvant à l'adresse 0x3000 sur la page se trouvant à l'adresse 0x6000, si cet ensemble de données a été précédemment effacé pour 25 permettre la copie de l'ensemble F sur la page se trouvant à 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. 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 3 Pour gérer ce conflit, il suffit en effet d'exécuter en premier la copie de l'ensemble de données F à l'adresse 0x4000 puis de copier l'ensemble de données C à l'adresse 0x6000 occupée dans l'ancienne version du fichier de données par l'ensemble de données F. Toutefois, pour gérer le premier exemple de conflit, un simple ordonnancement 5 approprié des opérations d'écriture et de lecture n'est pas suffisant. Une solution possible consiste à intégrer dans le fichier delta l'ensemble de données C ou l'ensemble de données F, et ce, malgré la présence de ces deux ensembles de données dans l'ancienne version du fichier de données à mettre à jour. Le fichier delta inclut alors deux types d'instructions pour distinguer les opérations de mise à jour consistant à ajouter de nouvelles données à l'ancienne version (instructions 10 « 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 mémoire tampon de l'objet connecté (mémoire dynamique) le contenu de l'une des pages de 15 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 dynamique est plus coûteuse que la mémoire persistante et que les objets connectés en disposent 20 de ce fait généralement assez peu (typiquement de quoi stocker au maximum 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 ou pour des réseaux de conflits. On parle de réseau de conflits lorsque, pour mettre le fichier à jour, de multiples copies doivent être réalisées vers de multiples pages créant 25 des situations de conflit telles que présentées ci-avant, mais sans nécessairement suivre un motif particulier. Ainsi, la notion de réseau de conflits intègre les conflits cycliques, mais également des conflits plus complexes comme par exemple des conflits susceptibles de se présenter dans une situation où une multitude de copies bidirectionnelles entre de multiples pages doit être mise en oeuvre pour mettre à jour un fichier. 30 Un exemple d'un conflit cyclique plus camp exe est illustré dans la table ci-dessous. Adresse mémoire 0x1000 0)(2000 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 en utilisant la solution alternative présentée ci-avant, 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 de certains objets connectés. 5 Il en est de même en cas d'existence d'un réseau de conflits : de manière générale, celui-ci ne peut être réduit à une série de conflits chaînés, et la quantité de données à stocker dans la mémoire tampon peut s'avérer prohibitive pour un objet connecté. 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 10 d'être à l'origine de conflits afin de ne pas perdre d'information 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 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é. 15 Objet et résumé de l'invention L'invention propose une solution alternative aux solutions de l'état de la technique permettant de gérer des réseaux de conflits et ne présentant pas les inconvénients précités de l'état de la technique. 20 Plus précisément, l'invention vise 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, le procédé de génération comprenant : 25 - une étape d'initialisation d'une version courante d'un graphe comprenant une pluralité de noeuds et d'arcs orientés et 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 30 noeud de destination pour obtenir la version finale du fichier ; tant que la version courante du graphe comprend au moins un arc orienté, une itération de traitement comprenant : o une étape de sélection dans la version courante du graphe d'un premier arc orienté allant d'un premier noeud représentant une première page vers un deuxième noeud 35 représentant une deuxième page ; o une étape de détermination d'une séquence ordonnée de commandes qui permet, au moyen d'une mémoire tampon : 5 - de transférer l'ensemble de données associé au premier arc orienté vers la deuxième page, et si un deuxième arc orienté allant du deuxième noeud vers le premier noeud existe, de transférer vers la première page, au moins une partie de l'ensemble de données associé à ce deuxième arc orienté ne coïncidant pas avec 5 des données présentes dans la deuxième page de la version finale du fichier de données, et - s'il existe au moins un troisième arc orienté allant du premier ou du deuxième noeud vers un troisième noeud distinct du premier et du deuxième noeud, de répartir ledit au moins un ensemble de données associé audit au moins un 10 troisième arc entre la première page et/ou la deuxième page ; o une étape de mise à jour de la version courante du graphe de sorte à refléter les transferts et la répartition des ensembles de données considérés lors de l'étape de détermination ; une étape de génération dudit ensemble d'instructions à partir des séquences ordonnées de 15 commandes déterminées lors des itérations de traitement. Corrélativement, l'invention concerne également 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, 20 le dispositif de génération comprenant : un module d'initialisation, configuré pour initialiser une version courante d'un graphe comprenant une pluralité de noeuds et d'arcs orientés et 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 25 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 que la version courante du graphe comprend au moins un arc orienté, ledit module comprenant un module de sélection, un module de détermination et un module de mise à jour activés lors de chaque itération de traitement tels 30 que : o le module de sélection est configuré pour sélectionner dans la version courante du graphe un premier arc orienté allant d'un premier noeud représentant une première page vers un deuxième noeud représentant une deuxième page ; o le module de détermination est configuré pour déterminer une séquence ordonnée de 35 commandes qui permet, au moyen d'une mémoire tampon : - de transférer l'ensemble de données associé au premier arc orienté vers la deuxième page, et si un deuxième arc orienté allant du deuxième noeud vers le premier noeud existe, de transférer vers la première page, au moins une partie de 6 l'ensemble de données associé à ce deuxième arc orienté ne coïncidant pas avec des données présentes dans la deuxième page de la version finale du fichier de données, et - s'il existe au moins un troisième arc orienté allant du premier ou du deuxième 5 noeud vers un troisième noeud distinct du premier et du deuxième noeud, de répartir ledit au moins un ensemble de données associé audit au moins un troisième arc entre la première page et/ou la deuxième page ; o le module de mise à jour est configuré pour mettre à jour la version courante du graphe de sorte à refléter les transferts et la répartition des ensembles de données 10 considérés par le module de détermination ; - un module de génération, configuré pour générer ledit ensemble d'instructions à partir des séquences ordonnées de commandes déterminées lors des itérations de traitement. Selon un autre aspect, l'invention vise aussi un 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 15 stocké sous la forme d'une pluralité de pages d'une taille prédéterminée dans une mémoire persistante du dispositif, le 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 conduisant à la version finale du fichier de données ; 20 - une étape de génération d'une pré-image de la version finale du fichier de données en appliquant ledit 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. Corrélativement, l'invention concerne 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 25 forme d'une pluralité de pages d'une taille prédéterminée, ledit dispositif de mise à jour comprenant : - 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 ; 30 - un module de génération configuré pour générer une pré-image de la version finale du fichier de données en appliquant ledit ensemble d'instructions à la 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 la version finale du fichier de données. 35 Le dispositif de génération et le dispositif de mise à jour sont préférentiellement des dispositifs distincts. A titre illustratif, le dispositif de génération peut être un serveur tandis que le dispositif de mise à jour peut être n'importe un objet connecté disposant de ressources plus 7 limitées (notamment concernant ses ressources mémoire). Toutefois aucune limitation n'est attachée à la nature des dispositifs auxquels s'applique l'invention. Ainsi, l'invention propose un procédé itératif permettant de générer des instructions destinées au dispositif ou à l'objet effectuant la mise à jour sur place du fichier de données, afin de S lui permettre de gérer plus facilement la présence d'un réseau de conflits apparaissant lors de cette mise à jour, et ce, en utilisant une mémoire tampon de 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 10 ayant besoin de réaliser une mise à jour. On note que l'invention s'applique quelle que soit la nature du réseau de conflits : il peut s'agir d'un conflit cyclique comme d'un ensemble de conflits résultant de multiples copies (bidirectionnelles ou non) vers de multiples pages qui ne présentent pas de motif ou de structure particu I ier(ère). 15 Grâce aux instructions générées par le dispositif de génération selon l'invention (qui est distinct préférentiellement du dispositif effectuant la mise à jour), la complexité des opérations réalisées par le dispositif lors de la mise à jour sur place peut être grandement réduite. L'exécution des instructions générées par le dispositif de génération permet en effet au dispositif de mise à jour d'obtenir une pré-image de la version finale du fichier de données dans laquelle tous les 20 ensembles de données destinées à être transférés d'une page à une autre entre la version initiale du fichier et sa version finale se trouvent dans la page dans laquelle ils doivent se trouver dans la version finale du fichier. En d'autres mots, la pré-image est exempte de conflits, ceux-ci ayant été résolus en amont par le dispositif de génération au cours des itérations de traitement du procédé de génération. On note que des réorganisations des données au sein de chaque page de la pré- 25 image peuvent être nécessaires (c'est l'objet notamment du fichier delta), mais celles-ci étant effectuées au sein d'une seule page, elles peuvent être aisément gérées par le dispositif de mise à jour au moyen par exemple en chargeant la page en question dans la mémoire tampon. Conformément à l'invention, le dispositif de génération a avantageusement dérivé de cette résolution un ensemble d'instructions destinées à être appliquées directement par le dispositif 30 de mise à jour à partir de la version initiale du fichier pour obtenir la pré-image : le dispositif de mise à jour n'a de cette sorte aucun conflit à gérer pour mettre à jour sur place le fichier de données et n'a qu'à exécuter les instructions qui lui sont transmises. Le passage de la pré-image à la version finale du fichier peut alors être réalisé au moyen d'un simple fichier delta. On note que les instructions générées par le dispositif de génération peuvent être 35 transmises dans un fichier d'instructions distinct du fichier delta ou être insérées dans celui-ci. Pour la génération des instructions, l'invention s'appuie sur une modélisation sous forme d'un graphe orienté des modifications devant être effectuées pour obtenir la version finale du fichier de données : chaque noeud du graphe représente une page distincte de la mémoire 8 persistante du dispositif de mise à jour 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. A la première 5 itération, on initialise la version courante du graphe à partir du contenu des pages de la version initiale du fichier. Puis, une pluralité d'itérations dites de traitement sont mises à en oeuvre pour traiter les différents arcs orientés du graphe : des itérations sont mises en oeuvre tant qu'il existe un arc orienté dans la version mise à jour du graphe. Lors de chaque itération de traitement, un arc 10 orienté de la version courante du graphe est sélectionné, et des transferts de données judicieusement choisis sont envisagés entre les pages correspondant au noeud de départ et de destination de l'arc sélectionné visant à supprimer cet arc du graphe. Autrement dit, à l'issue d'une itération, la version courante du graphe mise à jour ne contient plus l'arc sélectionné : toutes les données présentes dans la page correspondant au noeud de départ et destinées au noeud de 15 destination ont ainsi été transférées vers ce dernier (et inversement) tout en évitant habilement la perte de données. En outre, toutes les données destinées à d'autres pages ont été préservées dans les deux pages pour un transfert ultérieur. Pour mettre en oeuvre les transferts et la répartition des ensembles de données envisagés par le dispositif de génération, une mémoire tampon ayant une taille égale à la taille 20 prédéterminée d'une page est avantageusement suffisante sur le dispositif de mise à jour. Elle permet au premier noeud et au deuxième noeud d'échanger leurs données tout en se rapprochant de la configuration des première et deuxième page de la version finale du fichier. Ainsi à titre d'exemple, dans un mode particulier de réalisation, lors de l'étape de détermination, la séquence ordonnée de commandes peut comprendre 25 une première commande de stockage, dans la mémoire tampon du dispositif, du contenu de la deuxième page représenté par le deuxième noeud ; une première commande d'écriture sur la deuxième page, depuis la mémoire tampon et la première page, des données contenues dans la deuxième page représentée par le deuxième noeud et présentes dans la deuxième page de la version finale du fichier, de l'ensemble de 30 données associé au premier arc orienté et des ensembles de données associés audit au moins un troisième arc répartis sur la deuxième page; une deuxième commande de stockage, dans la mémoire tampon, des ensembles de données contenus dans la première page représentée par le premier noeud à l'exception des ensembles de données écrits via la première commande d'écriture sur la deuxième page et en conservant 35 dans la mémoire tampon les ensembles de données stockés via la première commande de stockage devant être transférés vers la première page ; et une deuxième commande d'écriture, sur la première page, depuis la mémoire tampon, des données contenues dans la première page représentée par le premier noeud et présentes dans 9 la première page de la version finale du fichier, d'au moins une partie de l'ensemble de données associé au deuxième arc orienté ne coïncidant pas avec des données présentes dans la deuxième page de la version finale du fichier de données et des ensembles de données associés audit au moins un troisième arc répartis sur la première page. 5 La deuxième commande de stockage peut exploiter si besoin (i.e. écrire dans) l'espace de la mémoire tampon contenant les données déjà écrites, via la première commande d'écriture, sur la deuxième page. Toutes les données nécessaires à la deuxième commande d'écriture ont la place d'être stockées dans la mémoire tampon puisque par définition de ces données, elles ont été attribuées à la première page et peuvent donc être contenues dans une page et a fortiori dans la 10 mémoire tampon d'une page. Bien entendu cet exemple de séquence ordonnée de commandes n'est donné qu'à titre illustratif et d'autres séquences de commandes peuvent être envisagées pour aboutir au même résultat. Par exemple, la séquence de commandes peut inclure avant chaque écriture sur une page l'effacement de cette page. 15 A l'issue d'une itération de traitement, comme mentionné précédemment, toutes les données devant être transférées de la première page vers la deuxième page de données l'ont été de sorte qu'il n'existe plus dans le graphe d'arc orienté allant du premier noeud vers le deuxième noeud (voire dans certains cas de figure d'arc orienté allant du deuxième noeud vers le premier noeud lorsque l'ensemble de données associé à cet arc peut être transféré vers le premier noeud). 20 Ceci est reflété par la mise à jour de la version courante du graphe (qui peut consister typiquement en une mise à jour de métadonnées associées aux noeuds du graphe et aux arcs du graphe décrivant les ensembles de données impliquées par et entre les pages du fichier), qui est ensuite utilisée à l'itération suivante. Le réseau de conflits est ainsi géré au fil de chaque itération jusqu'à sa résolution complète. 25 Les commandes obtenues lors de chaque itération mise en oeuvre durant l'étape de traitement pour gérer le réseau de conflits sont ensuite transformées en un ensemble d'instructions destinées à être fournies et appliquées par le dispositif réalisant la mise à jour sur place de la version initiale du fichier de données : suite à l'application de ces instructions, le dispositif obtient une pré-image du fichier de données exempte de conflits sur laquelle il peut aisément appliquer un 30 fichier delta relativement simplifié qui comprend tout au plus que des déplacements de données au sein d'une même page. 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 35 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 données. Une telle faculté peut être offerte en sélectionnant par exemple de façon astucieuse les arcs considérés lors de chaque itération. 10 D'autres façons d'optimiser les instructions générées peuvent être envisagées, notamment au niveau du codage de ces instructions. A titre illustratif, dans un mode particulier de réalisation, l'ensemble d'instructions peut comprendre au moins une instruction parmi : 5 une instruction de copie de données d'une page de la mémoire persistante vers la mémoire tampon ; une instruction de copie de données de la mémoire tampon vers une page de la mémoire persistante ; une instruction de copie de données de la mémoire tampon vers la mémoire tampon ; 10 une instruction d'effacement de données de la mémoire persistante ; une instruction de désignation d'une page de la mémoire persistante ; une instruction de copie chaînée de données de la mémoire persistante vers la mémoire persistante ou la mémoire tampon ; une instruction de copie chaînée de données de la mémoire tampon vers la mémoire 15 persistante ou la mémoire tampon. L'instruction de désignation d'une page de la mémoire persistante peut être utilisée par exemple pour signaler au dispositif que les 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 20 quelques bits dans le codage des instructions. De façon similaire, les instructions de copie étant coûteuses à coder (il est nécessaire 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. 25 Bien entendu ces exemples d'instructions ne sont donnés qu'à titre illustratif et d'autres instructions peuvent être envisagées pour optimiser encore davantage le codage des instructions transmises au dispositif. Dans un autre mode de réalisation, lors d'une itération de traitement, le premier arc orienté est sélectionné de façon aléatoire. 30 Aucune limitation n'est attachée à la façon dont ce premier arc est sélectionné : une simple sélection aléatoire peut être envisagée ou en variante, des heuristiques permettant d'optimiser le traitement effectué lors de chaque itération de traitement et le nombre d'itérations de traitement nécessaire pour résoudre le réseau de conflits peuvent être élaborées et utilisées. Ainsi, par exemple, si une taille de l'ensemble de données associé au premier arc 35 orienté sélectionné est supérieure à une somme des tailles des ensembles de données associés aux arcs orientés partant du deuxième noeud, ladite itération de traitement comprend, en remplacement des étapes de détermination et de mise à jour : 11 - une étape de détermination d'une séquence ordonnée de commandes qui permet, au moyen de ladite mémoire tampon : o de transférer vers la deuxième page, de chaque ensemble de données associé à un arc orienté de la version courante du graphe arrivant sur le deuxième noeud ; et 5 o de transférer vers la première page, de chaque ensemble de données associé à un arc orienté de la version courante du graphe partant du deuxième noeud ; une étape de mise à jour de la version courante du graphe de sorte à refléter les transferts considérés lors de l'étape de détermination. Autrement dit, si l'arc sélectionné présente certaines propriétés (ou plus précisément 10 l'ensemble de données associé à cet arc), l'invention propose d'optimiser le traitement opéré lors de l'itération de traitement conduisant à l'élimination d'un noeud du réseau de conflits modélisé par le graphe (en l'espèce le deuxième noeud). Dans un mode particulier de réalisation, la séquence ordonnée de commandes reflétant un tel traitement comprend : 15 une première commande de stockage, dans la mémoire tampon du dispositif, du contenu de la deuxième page représentée par le deuxième noeud ; - une première commande d'écriture sur la deuxième page, depuis la mémoire tampon et les pages représentées par les noeuds de départ des arcs orientés arrivant sur le deuxième noeud, des ensembles de données associés à ces arcs et des données contenues dans la deuxième 20 page représentée par le deuxième noeud et présentes dans la deuxième page de la version finale du fichier ; une deuxième commande de stockage, dans la mémoire tampon, des ensembles de données contenus dans la première page représentée par le premier noeud à l'exception de l'ensemble de données associé au premier arc orienté ; 25 - une deuxième commande d'écriture sur la première page, depuis la mémoire tampon, des données contenues dans la première page représentée par le premier noeud et présentes dans la première page de la version finale du fichier, de l'ensemble de données associé au deuxième arc orienté et des ensembles de données associés aux arcs orientés partant du deuxième noeud. 30 Ainsi, des heuristiques de sélection de l'arc lors de chaque itération de traitement peuvent être élaborées pour favoriser les traitements optimisés décrits ci-dessus lorsque cela est possible. On note toutefois que lorsque le réseau de conflits est quelconque et ne présente pas de motif particulier, il n'est pas toujours possible de sélectionner des arcs présentant les propriétés énoncées ci-dessus. 35 On peut également envisager une heuristique de sélection des arcs qui favorise la sélection d'un arc entre deux noeuds du graphe liés par un lien « bidirectionnel », qui permet de gérer au cours d'une même itération de traitement le transfert de données compris dans la 12 première page vers la deuxième page et le transfert de données compris dans la deuxième page vers la première page. Dans un mode particulier de réalisation, le procédé de génération comprend, lors de l'étape de détermination, pour répartir ledit au moins un ensemble de données associé audit au 5 moins un troisième arc : - une étape d'attribution dans l'ordre décroissant de leur taille, chaque ensemble dudit au moins un ensemble de données à l'une des pages parmi la première et la deuxième page tant que celle-ci contient suffisamment de place pour contenir lesdits ensembles de données qui lui sont attribués dans leur intégralité ; 10 une étape d'attribution des ensembles de données restant à l'autre page parmi la première et la deuxième page tant que celle-ci contient suffisamment de place pour contenir lesdits ensembles de données restant dans leur intégralité ; et s'il reste un ensemble de données non attribué, une étape de répartition du contenu de cet ensemble de données entre la première page et la deuxième page. 15 Cette façon de répartir les ensembles de données devant être transférés depuis la première page et la deuxième page vers d'autres pages du fichier de données permet de favoriser le stockage des ensembles de données « entiers » dans la première page et la deuxième page. En procédant de la sorte, au plus un ensemble de données risque d'être fractionné entre la première page et la deuxième page. 20 En outre, si l'une des pages correspondant au premier noeud ou au deuxième noeud contient suffisamment d'espace disponible pour stocker toutes les ensembles de données destinés à des noeuds tiers, elle se voit attribuer tous ces ensembles de données ce qui permet de sortir le noeud associé à l'autre page du réseau de conflits lors de l'itération et donc de simplifier les traitements ultérieurs à réaliser. 25 Dans un mode particulier de réalisation, le procédé de génération comprend lors de l'étape de détermination, pour répartir ledit au moins un ensemble de données associé audit au moins un troisième arc, s'il existe dans le graphe deux arcs orienté allant respectivement du premier et du deuxième noeud vers un même troisième noeud, une étape d'agrégation au sein d'un même ensemble de données des ensembles de données associés auxdits arcs, avant de répartir 30 ledit ensemble de données agrégés entre la première page et/ou la deuxième page. Cette étape d'agrégation permet d'optimiser encore davantage le traitement du réseau de conflits et de simplifier les échanges de données à envisager lors des itérations de traitement suivantes. Dans un mode particulier de réalisation, les différentes étapes du procédé de 35 génération et/ou du procédé 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 respectivement dans un 13 dispositif de génération 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 tel que décrit ci-dessus. L'invention concerne également un programme d'ordinateur sur un support d'informations, ce programme étant susceptible d'être mis en oeuvre respectivement dans un dispositif de mise à 5 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 mise à jour tel que décrit ci-dessus. Chacun de ces programmes 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 que dans une forme partiellement compilée, ou dans n'importe quelle autre forme 10 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. Le support d'informations ou d'enregistrement peut être n'importe quelle entité ou 15 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 un 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 20 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. 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. 25 L'invention vise également un système comprenant : un dispositif de mise à jour selon l'invention, stockant dans une mémoire persistante un fichier 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, configuré pour générer un ensemble d'instructions 30 destinées au dispositif de mise à jour pour mettre à jour sur place la version initiale du fichier de données en une version finale. On peut également envisager, dans d'autres modes de réalisation, que le procédé de génération, le dispositif de génération, le procédé de mise à jour, le dispositif de mise à jour et le système selon l'invention présentent en combinaison tout ou partie des caractéristiques précitées. 35 14 Br' ve description des dessins 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 : 5 - la figure 1 représente, dans son environnement, un système comprenant un dispositif de mise à jour et un dispositif de génération conformes à l'invention 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 ; 10 - la figure 3 représente un exemple d'architecture matérielle du dispositif de mise à jour de la figure 1 ; - la figure 4 représente, sous forme d'ordinogramme, les principales étapes d'un procédé de génération selon l'invention ; - la figure 5 illustre sur un exemple la version courante du graphe utilisée lors de la première 15 itération du procédé de génération de la figure 4 ; - la figure 6 illustre la démarche adoptée par le dispositif de génération pour déterminer un ensemble de commandes à partir de la version courante du graphe illustrée à la figure 5 ; - les figures 7A, 7B illustrent différentes mises à jour possibles de la version courante du graphe illustré à la figure 5 ; et 20 - 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 La figure 1 représente, dans son environnement, un système 1 comprenant un 25 dispositif 2 équipé d'un logiciel ou fichier de données LOG, stocké dans une mémoire persistante ou non volatile 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 illustré à la figure 1, le dispositif 2 est un objet connecté à Internet, tel que par exemple un 30 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. Dans l'exemple envisagé ici, on suppose que le dispositif 2 dispose de ressources 35 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. Le dispositif 2 15 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 une pluralité de pages de données d'une même taille prédéterminée, par exemple de taille égale à 5 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 réseau de conflits entre plusieurs pages de données du fichier de données LOG, comme décrit précédemment. Ce réseau de conflits peut être identifié en analysant 10 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 réseau de conflit représenté dans la table 1 reproduite ci-dessous : Adresse mémoire P1 : Ox1000 P2 : Ox2000 P3 : Ox3000 P4 : Ox4000 de la page Ensembles de données contenues dans A-B-C-D E-F-G-H I-J-K-L M-N-O-P la version initiale du fichier LOG Ensembles de données requises dans chaque page de la version finale du A-E-I-M B-F-J-N C-G-K-O D-H-L-P fichier LOG (pré- image de la version finale) 15 Dans l'exemple illustré ci-dessus, les ensembles de données A-P constituent des ensembles de données de dimension quelconque compris dans quatre pages Pl, P2, P3 et P4 de la version initiale Vinit du fichier de données LOG et susceptibles d'être déplacés vers d'autres pages dans la version finale Vfin du fichier LOG après mise à jour. De manière générale, ces ensembles 20 de données peuvent avoir des tailles différentes ou identiques ; par ailleurs les ensembles de données contenus dans une même page peuvent être disjoints ou avoir des données en commun. Par souci de simplification, on suppose dans l'exemple envisagé que les ensembles de données 16 associés à une même page désignent des ensembles de données disjoints deux à deux (par exemple, les ensembles de données A, B, C, et D sont disjoints deux à deux). Ainsi, selon l'exemple donné dans la table 1, la page Pl de la version initiale Vinit du fichier LOG contient quatre ensembles de données A-B-C-D. Dans la version finale du fichier LOG, 5 l'ensemble A reste sur la page P1 (mais pas nécessairement au même emplacement que dans la version initiale), B est déplacé vers la page P2, C est déplacé vers la page P3 et D est déplacé vers la page P4. De façon similaire, les ensembles E, I, M contenus dans la version initiale Vinit dans les pages P2, P3 et P4 respectivement, viennent compléter l'ensemble A sur la page P1 dans la version finale du fichier LOG. La table 1 ne présume pas d'un ordre particulier des ensembles de données 10 dans la version finale du fichier LOG. Elle ne fait que résumer les échanges de données qui sont nécessaires entre les pages du fichier LOG pour former la version finale du fichier LOG. La troisième ligne de la table 1 offre ainsi une « pré-image » de la version finale du fichier LOG : il s'agit d'une version du fichier LOG dans laquelle les ensembles de données qui doivent être déplacés lors de la mise à jour vers d'autres pages que les pages dans lesquels ils sont 15 contenus dans la version initiale Vinit, se trouvent dans leur page de destination, mais pas nécessairement dans le bon ordre. Autrement dit, les données nécessaires à la constitution de la version finale du fichier LOG se trouvent dans cette pré-image dans les bonnes pages mais peuvent nécessiter d'être réorganisées, via le fichier delta, pour se conformer à la version finale attendue. 20 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 à permettre au dispositif 2 d'obtenir cette pré-image 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 25 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 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 30 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. 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 35 d'enregistrement conforme à l'invention, lisible par le processeur 5 et sur lequel est enregistré un 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. 17 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 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 : 5 - un module 4A de traitement itératif, comportant un module d'initialisation 4M, configuré pour initialiser une version courante G d'un graphe orienté comprenant une pluralité de noeuds et d'arcs orientés et dans lequel chaque 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 10 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 correspondent aux pages de la version initiale Vinit du fichier. Le module de traitement 4A comprend également une pluralité de modules 4A2 à 4A4, activés au cours d'une pluralité d'itérations de traitement du procédé de génération selon l'invention et 15 comprenant : o un premier module 4A2 de sélection, configuré pour sélectionner dans la version courante G du graphe, un premier arc orienté allant d'un premier noeud représentant une première page vers un deuxième noeud représentant une deuxième page ; o un module 4A3 de détermination, configuré pour déterminer une séquence ordonnée 20 de commandes qui permet, au moyen d'une mémoire tampon BUF de l'objet 2 : - de transférer l'ensemble de données associé au premier arc orienté vers la deuxième page, et si un deuxième arc orienté allant du deuxième noeud vers le premier noeud existe, de transférer vers la première page au moins une partie de l'ensemble de données associé à ce deuxième arc orienté ne coïncidant pas avec 25 des données présentes dans la deuxième page de la version finale du fichier de données, et - s'il existe au moins un troisième arc orienté allant du premier ou du deuxième noeud vers un troisième noeud distinct du premier et du deuxième noeud, de répartir ledit au moins un ensemble de données associé audit au moins un 30 troisième arc entre la première page et/ou la deuxième page ; o un module 4A4 de mise à jour configuré pour mettre à jour la version courante G du graphe de sorte à refléter les transferts et la répartition des ensembles de données considérés par le module de détermination ; et un module 4B de génération, configuré pour générer un ensemble d'instructions à partir des 35 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. 18 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 5 stocké le fichier de données LOG, ainsi que des moyens de communication 12, lui permettant 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. 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). 10 Dans le mode de réalisation décrit ici, la mémoire tampon BUF est une mémoire de travail de taille déterministe égale à la taille d'une page (autrement dit ici 4096 octets). La mémoire morte 10 de l'objet connecté 2 constitue un support d'enregistrement conforme à l'invention, lisible par le processeur 9 et sur lequel est enregistré un programme d'ordinateur PROG2 conforme à l'invention, comportant des instructions pour l'exécution d'un 15 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 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 : 20 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 ; 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 25 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 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. 30 Les fonctions des différents modules de l'objet connecté 2 sont décrites plus en détail ultérieurement. 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 FAO et l'objet connecté 2 peut être 35 configuré pour ne tenir compte que des instructions du fichier delta initial FAO pertinentes pour obtenir à partir de la pré-image Vmid la version finale Vfin du fichier LOG. 19 La figure 4 représente, sous forme d'ordinogramme, les principales étapes d'un procédé de génération d'instructions INST 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 INST ont pour dessein de faciliter 5 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 réseau de conflits 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 10 s'appuyant sur une modélisation au moyen d'un graphe orienté G de la situation conflictuelle (existence d'un réseau de conflits) entre les pages du fichier de données LOG. Ce graphe orienté G est initialisé par le module 4A1 d'initialisation (étape E10) et 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 du réseau de conflits à l'issue de chaque itération. 15 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 20 page représentée par le noeud d'arrivée pour obtenir la version finale du fichier de données. Lors de l'initialisation du graphe (étape E10), 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 à 25 transférer des données vers une autre page du fichier). La version du graphe G ainsi initialisée est utilisée comme version courante du graphe G à l'itération iter=1. La figure 5 fournit un exemple de graphe G à l'itération iter-=1 correspondant au réseau de conflits exposé à la table 1. Il comprend quatre noeuds N1, N2, N3 et N4 correspondant respectivement aux quatre pages Pl, P2, P3 et P4 situées aux adresses mémoires 0x1000, 0x2000, 30 0x3000 et 0x4000. Dans l'exemple de la figure 5, le graphe G pour l'itération iter=1 (noté G(iter=1)) comprend également plusieurs arcs orientés et plus spécifiquement : - trois arcs orientés partant du noeud N1 représentant la page Pl, à savoir : o un arc LI allant vers le noeud N2 représentant la page P2 et associé à l'ensemble de données B qui doit être transféré lors de la mise à jour, de la page Pl vers la page 35 P2 ; o un arc L2 allant vers le noeud N3 représentant la page P3 et associé à l'ensemble de données C qui doit être transféré lors de la mise à jour, de la page Pl vers la page P3 ; 20 o un arc L3 allant vers le noeud N4 représentant la page P4 et associé à l'ensemble de données D qui doit être transféré lors de la mise à jour, de la page P1 vers la page P4 ; - trois arcs orientés partant du noeud N2 représentant la page P2, à savoir : 5 o un arc L4 allant vers le noeud Ni et associé à l'ensemble de données E qui doit être transféré lors de la mise à jour de la page P2 vers la page P1 ; o un arc L5 allant vers le noeud N3 et associé à l'ensemble de données G qui doit être transféré lors de la mise à jour, de la page P2 vers la page P3 ; o un arc L6 allant vers le noeud N4 et associé à l'ensemble de données H qui doit être 10 transféré lors de la mise à jour, de la page P2 vers la page P4 ; trois arcs orientés partant du noeud N3 représentant la page P3, à savoir : o un arc L7 allant vers le noeud Ni et associé à l'ensemble de données I qui doit être transféré lors de la mise à jour, de la page P3 vers la page P1 ; o un arc L8 allant vers le noeud N2 et associé à l'ensemble de données J qui doit être 15 transféré lors de la mise à jour, de la page P3 vers la page P2 ; o un arc L9 allant vers le noeud N4 et associé à l'ensemble de données K qui doit être transféré lors de la mise à jour, de la page P3 vers la page P4 ; trois arcs orientés partant du noeud N4 représentant la page P4, à savoir : o un arc L10 allant vers le noeud N1 et associé à l'ensemble de données M qui doit être 20 transféré lors de la mise à jour, de la page P4 vers la page P1 ; o un arc L11 allant vers le noeud N2 et associé à l'ensemble de données N qui doit être transféré lors de la mise à jour, de la page P4 vers la page P2 ; o un arc L12 allant vers le noeud N3 et associé à l'ensemble de données 0 qui doit être transféré lors de la mise à jour, de la page P4 vers la page P3. 25 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. A l'itération iter=1, les pages en question sont les pages de la version initiale Vinit du fichier. Au fil des itérations, ces pages évoluent « virtuellement » en fonction des transferts et des répartitions des ensembles de données qui ont été opérées par le dispositif de génération 4 et plus précisément par son module 30 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 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 35 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. 21 Conformément à l'invention, tant que le dispositif de génération 4 détecte un arc orienté dans la version courante du graphe G (réponse oui à l'étape test E20), il met en oeuvre une nouvelle itération de traitement de ce graphe (indexée par iter) (étape E30). Sinon, le procédé de génération est arrêté (étape E40). 5 Durant chaque itération, le dispositif de génération 4 sélectionne, via son module 4A2 de sélection, un arc orienté de la version courante du graphe allant d'un premier noeud vers un deuxième noeud (premier arc orienté au sens de l'invention) (étape E30). A titre illustratif, on suppose ici que le module 4A2 sélectionne l'arc orienté Ll allant du noeud Ni (premier noeud au sens de l'invention) représentant la page P1 (première page au sens de l'invention) vers le noeud 10 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 de données B. Dans le mode de réalisation décrit ici, le module 4A2 de sélection sélectionne l'arc à traiter de façon aléatoire. En variante, d'autres heuristiques peuvent être envisagées et des critères de sélection peuvent être fixés pour sélectionner l'arc à traiter durant l'itération courante. Par 15 exemple, le module 4A2 de sélection peut s'efforcer de sélectionner lorsqu'un tel arc existe, un arc tel que la taille de l'ensemble de données associé à cet arc soit supérieure à la somme des tailles des ensembles de données associés aux arcs orientés partant du noeud de destination de cet arc. Bien entendu d'autres critères peuvent être envisagés. Il convient de noter qu'il n'est pas toujours possible d'identifier dans le graphe un arc vérifiant un tel critère. En cas d'échec, le module 4A2 20 peut être configuré pour prendre en compte un autre critère ou pour sélectionner de façon aléatoire un arc. Dans le mode de réalisation décrit ici, suite à la sélection de l'arc orienté, le module 4A3 de détermination du dispositif de génération 4 vérifie si l'arc orienté sélectionné répond à un critère CRIT1 prédéterminé (étape test E50). Dans l'exemple illustré ici, le critère CRIT1 dispose 25 que la taille de l'ensemble de données associé à l'arc orienté sélectionné est supérieure à la somme des tailles des ensembles de données associés aux arcs orientés partant du noeud de destination de cet arc. On note que ce critère peut coïncider avec l'un des critères pris en compte pour la sélection. La vérification ou la non vérification du critère CRIT1 conditionne ici la façon dont le 30 module 4A3 de détermination dérive pour l'itération courante, les commandes qui vont permettre de gérer le réseau de conflits présent dans le graphe. Plus précisément, dans le mode de réalisation décrit ici, si le critère CRIT1 n'est pas vérifié par l'arc sélectionné (réponse non à l'étape test E50), le module 4A3 de détermination dérive une séquence ordonnée de commandes CMD(iter) pour l'itération courante de la façon 35 suivante. On suppose que c'est le cas ici de l'arc orienté sélectionné Ll partant du noeud N1 et allant vers le noeud N2. Le module 4A3 de détermination détermine en premier lieu une nouvelle disposition « virtuelle » des pages P1 et P2 représentées respectivement par les noeuds N1 et N2 visant à 22 supprimer l'arc orienté Ll du graphe (étape E60). Il convient de noter que l'on parle ici de disposition virtuelle des pages P1 et P2 dans le sens où il s'agit d'un artifice qui permet au module 4A3 de déterminer la séquence de commandes CMD et non pas de pages réellement générées par le module 4A3 de détermination. La détermination de cette nouvelle disposition « virtuelle » des 5 pages Pl et P2 est illustrée pas à pas à la figure 6 pour mieux comprendre la démarche mise en oeuvre par le module 4A3 de détermination. Plus particulièrement pour déterminer cette nouvelle disposition virtuelle des pages Pl et P2, le module 4A3 de détermination répertorie tout d'abord ici dans une liste SUP-P tous les ensembles de données contenus dans les pages Pl et P2 (étape G10 sur la figure 6). Dans 10 l'exemple envisagé à la table 1 cette liste SUP-P comprend les ensembles A-B-C-D-E-F-G-H. Pour mémoire, par souci de simplification, on suppose dans l'exemple envisagé ici que les ensembles A- B-C-D sont disjoints deux à deux, de même que les ensembles E-F-G-H. Puis il attribue (étape G20) à une nouvelle version « virtuelle » VIRT-Pl de la page P1 (ayant la même taille que la page 15 P1), l'ensemble de données déjà compris le cas échéant dans P1 et conservé(s) dans la page P1 dans la version finale Vfin du fichier. Dans l'exemple envisagé à la table 1, l'ensemble A est attribué à la version virtuelle VIRT-Pl ; et à une nouvelle version « virtuelle » VIRT-P2 de la page P2 (ayant la même taille que la page P2) : 20 o l'ensemble de données associé à l'arc orienté Li allant du noeud N1 vers le noeud N2, autrement dit, devant être transféré de la page Pl vers la page P2 du fichier LOG conformément à la version finale Vfin. Dans l'exemple envisagé à la table 1, l'ensemble B est également attribué à la version virtuelle VIRT-P2 ; et o l'ensemble de données déjà compris le cas échéant dans P2 et conservé dans la page 25 P2 dans la version finale Vfin du fichier. Dans l'exemple envisagé à la table 1, l'ensemble F est attribué à la version virtuelle VIRT-P2. On note que les ensembles B et F peuvent être attribués à la page VIRT-P2 dans l'ordre dans lequel ils se trouvent dans la pré-image ou dans un ordre différent. Si en outre, un arc orienté existe dans la version courante du graphe G allant du noeud 30 N2 vers le noeud N1 (deuxième arc orienté au sens de l'invention), le module 4A3 de détermination attribue à la version virtuelle VIRT-Pl de la page Pl, l'ensemble de données associé à cet arc. Dans l'exemple envisagé à la table 1, un tel arc existe (il s'agit de l'arc L4) et est associé à l'ensemble de données E de sorte que l'ensemble E est attribué à la version virtuelle VIRT-Pl. Puis dans le mode de réalisation décrit ici, le module 4A3 de détermination examine s'il 35 existe au moins un autre arc orienté allant du noeud Ni ou du noeud N2 vers un autre noeud du graphe distinct des noeuds N1 et N2 (troisième(s) arc(s) orienté(s) au sens de l'invention) (étape G30). Dans l'exemple envisagé à la table 1, plusieurs arcs vérifiant cette définition existent, à savoir : 23 - l'arc 12 partant du noeud N1, allant vers le noeud N3 et associé à l'ensemble de données C ; l'arc l3 partant du noeud N1, allant vers le noeud N4 et associé à l'ensemble de données D ; - l'arc L5 partant du noeud N2, allant vers le noeud N3 et associé à l'ensemble de données G ; et l'arc L6 partant du noeud N2, allant vers le noeud N4 et associé à l'ensemble de données H. 5 Le module 4A3 de détermination répartit alors les ensembles de données C, D, G, H ainsi identifiés entre les versions virtuelles VIRT-Pl et VIRT-P2 (étape G40). On note que si aucun arc orienté allant du noeud N1 ou du noeud N2 vers un autre noeud n'existe dans le graphe, les configurations des versions virtuelles VIRT-Pl et VIRT-P2 sont celles obtenues à l'issue de l'étape G20 10 A cet effet, le module 4A3 de détermination détermine dans un premier temps si parmi les arcs orientés identifiés lors de l'étape G30, certains vont vers le même noeud. C'est le cas ici des arcs 1.2 et L5 qui partent respectivement des noeuds N1 et N2 et vont vers le même noeud N3, et des arcs L3 et L6 qui partent respectivement des noeuds N1 et N2 et vont vers le même noeud N4. 15 Dans le mode de réalisation décrit ici, si de tels arcs existent dans la version courante du graphe, le module 4A3 de détermination agrège (i.e. réunit ou concatène) les ensembles de données correspondant à ces arcs allant vers le même noeud (étape G40). Autrement dit, dans l'exemple envisagé ici, il agrège les ensembles de données C et G en un (« super ») ensemble de données C+G, et les ensembles de données D et H en un (« super ») ensemble de données D + H. 20 Puis il classe les ensembles de données obtenus par ordre décroissant de leur taille (si aucun « super » ensemble de données n'a été généré à partir des ensembles C, D, G, H, il classe les ensembles de données C, D, G, H). On suppose par exemple ici que la taille de C+G est plus supérieure à la taille de D+H. Le module 4A3 de détermination attribue ensuite les ensembles de données C+G et 25 Di-H ainsi classés par taille décroissante à la version virtuelle VIRT-Pl de la page P1 tant que celle- ci contient suffisamment de place pour contenir les ensembles de données qui lui sont attribués dans leur intégralité. Autrement dit, le module 4A3 de détermination examine si la version virtuelle VIRT-Pl peut contenir l'ensemble C+G dans son intégralité. Si tel est le cas, il attribue l'ensemble de données C+G à la version virtuelle VIRT-P1 et détermine l'espace mémoire restant sur la 30 version virtuelle VIRT-Pi suite à cette attribution. Puis il examine si, compte tenu de l'espace mémoire restant déterminé, la version virtuelle VIRT-Pl est en mesure de contenir l'ensemble D+H dans son intégralité, etc. Si tel est le cas, il attribue l'ensemble D+H dans son intégralité à la version virtuelle VIRT-P1 et détermine l'espace mémoire restant sur la version virtuelle VIRT-P1 après cette attribution, etc., jusqu'à ce 35 que l'espace mémoire restant sur la version virtuelle VIRT-Pl ne permette plus de contenir l'ensemble de données examiné. On suppose ici par exemple que la version virtuelle VIRT-P1 peut contenir l'ensemble de données C+G mais ne peut pas contenir l'ensemble de données D+H dans son intégralité. 24 Le module 4A3 de détermination examine alors si la version virtuelle VIRT-P2 peut contenir l'ensemble de données restant à attribuer D+H. Si tel est le cas, il attribue l'ensemble D+H dans son intégralité à la version virtuelle VIRT-P2. Puis il examine si d'autres ensembles de données restent à attribuer et procède de la même façon avec ces ensembles de données. 5 Si le module 4A3 de détermination détermine qu'un ensemble de données ne peut être attribué en intégralité à la version virtuelle VIRT-P2, alors il fragmente cet ensemble de données pour le répartir sur les versions virtuelles VIRT-Pl et VIRT-P2 compte tenu de l'espace mémoire disponible sur les versions virtuelles VIRT-Pl et VIRT-P2. Il convient de noter que les ensembles de données à répartir provenant des pages P1 et P2, il existe nécessairement l'espace mémoire 10 nécessaire pour accueillir tous ces ensembles de données. En procédant de la sorte, et en classant par ordre de taille décroissante (ou croissante) les ensembles de données à répartir, on s'assure qu'un seul ensemble de données au plus devra être fractionné pour être réparti entre les deux pages. Par ailleurs, en agrégeant les ensembles de données destinés à un même noeud, on 15 optimise les transferts de données à venir en diminuant le nombre d'arcs dans la version mise à jour du graphe. Toutefois cette étape est optionnelle, et le module 4A3 de détermination peut s'affranchir d'agréger les ensembles de données destinés à un même noeud et répartir individuellement les ensembles de données C, D, G et H. On note que dans l'exemple envisagé ici, le module 4A3 de détermination a commencé 20 l'attribution des ensembles de données par la version virtuelle VIRT-Pl de la page Pl. Toutefois, il peut indifféremment commencer par la version virtuelle VIRT-P2 de la page P2. Par ailleurs, ce qui a été décrit ici pour quatre ensembles de données C, D, G et H (ou deux ensembles de données agrégés C+G et D+H) peut être appliqués bien entendu pour un nombre différent d'ensembles de données, le module 4A3 de détermination procédant de la même façon : 25 en attribuant dans l'ordre décroissant de leur taille, chaque ensemble de données à répartir à l'une des pages Pl et P2 (ou plus précisément ici à la version virtuelle de l'une des pages) tant que celle-ci contient suffisamment de place pour contenir les ensembles de données qui lui sont attribués dans leur intégralité ; en attribuant les ensembles de données restant à l'autre page tant que celle-ci contient 30 suffisamment de place pour contenir les ensembles de données restant dans leur intégralité ; et s'il reste un ensemble de données non attribué, en fragmentant le contenu de cet ensemble de données de façon à le répartir entre les deux pages. A l'issue de l'étape G40, le module 4A3 de détermination obtient les versions virtuelles 35 VIRT-Pl et VIRT-P2 suivantes des pages Pl et P2: - VIRT-Pl = A - E - C - G (ou de façon équivalente A - E - C+G, l'agrégation réalisée consistant en une simple concaténation des ensembles de données) ; et - VIRT-P2 = B - F - D - H (ou de façon équivalente B - F - D+H). 25 Il convient de noter que les pages Pl et P2, lorsqu'elles se trouvent dans ces versions virtuelles, ne sont plus liées par un arc : autrement dit, il n'y a plus de données à transférer entre les versions virtuelles VIRT-Pl et VIRT-P2. Cette caractéristique avantageuse est Illustrée plus en détail ultérieurement. 5 A partir de ces versions virtuelles, le module 4A3 de détermination détermine une séquence ordonnée de commandes permettant de passer des pages Pl et P2 à leurs versions virtuelles VIRT-Pi et VIRT-P2 en utilisant la mémoire tampon BUF de l'objet connecté 2 (étape E70 sur la figure 4). Les versions virtuelles VIRT-P1 et VIRT-P2 constituent donc les nouvelles versions attendues des pages Pl et P2 : autrement dit, dans l'exemple illustré, la séquence ordonnée de 10 commandes doit comprendre des commandes permettant, en utilisant la mémoire tampon BUF de l'objet connecté 2 : de transférer l'ensemble de données B associé à l'arc orienté Ll (premier arc orienté au sens de l'invention) vers la page P2, et de transférer vers la page Pl l'ensemble de données E associé à l'arc orienté L4 allant de la page P2 vers la page Pl. ; et 15 - de répartir les ensembles de données C, D, G, H associés aux arcs L2, L3, L5 et L6 entre les pages Pl et P2. Elles doivent également permettre d'avoir respectivement dans la page P1 et dans la page P2 les ensembles de données A et F déjà contenus dans ces pages, et appartenant à la page Pl et à la page P2 dans la version finale Vfin du fichier. Dans le mode de réalisation décrit ici, où la 20 mémoire 3 de l'objet connecté est une mémoire NAND persistante est utilisée, les ensembles de données A et F doivent être réécrits sur les pages P1 et P2 après l'effacement des pages Pl et P2 respectivement. Dans le mode de réalisation décrit ici, pour répondre à ces conditions, le module 4A.3 de détermination génère à l'itération iter=1 la séquence ordonnée CMD(iter) de commandes 25 suivante : - une première commande de stockage, dans la mémoire tampon BUF, du contenu de la page P2 représentée par le noeud N2 ; une première commande d'effacement de la page P2 (optionnelle selon la mémoire persistante considérée) ; 30 une première commande d'écriture sur la page P2 dans la mémoire persistante 3 de l'objet connecté 2 : o depuis la mémoire tampon BUF : des données contenues (ici précédemment contenues avant son effacement) dans la page P2 et présentes dans la page P2 de la version finale Vfin du fichier, autrement dit l'ensemble de données F, 35 o depuis la page P1 : de l'ensemble de données A associé à l'arc orienté Ll ; et o depuis la mémoire tampon BUF et/ou depuis la page Pl : de l'ensemble de données agrégé D+H réparti sur la page P2 lors de l'étape G40 ; 26 On note que cette commande permet d'obtenir une page P2 dans la configuration donnée par sa version virtuelle VIRT-P2 (c'est-à-dire contenant les ensembles de données B-F-D-H-I) ; une deuxième commande de stockage, dans la mémoire tampon BUF, des ensembles de données contenus dans la page Pl représentée par le noeud Ni à l'exception des ensembles 5 de données déjà écrits via la première commande d'écriture sur la page P2 : il s'agit ici d'écrire dans la mémoire tampon BUF, les ensembles de données A et C tout en préservant les ensembles de données E et G qui n'ont pas encore été copiés vers la page Pl. On note que la mémoire tampon BUF qui a une taille d'une page contient la place pour stocker ces quatre ensembles de données puisque le module 4A3 de détermination les a attribués à la page Pl ; 10 une deuxième commande d'effacement de la page P1 (optionnelle selon la mémoire persistante considérée) ; et une deuxième commande d'écriture, sur la page Pl, depuis la mémoire tampon BUF, des ensembles de données contenues dans la page P2 (i.e. ici précédemment contenues avant son effacement) et présentes dans la page P2 de la version finale Vfin du fichier, autrement dit 15 l'ensemble de données A, de l'ensemble de données E associé à l'arc orienté L4 allant du noeud N2 vers le noeud N1, et de l'ensemble de données agrégés C-i-G réparti lors de l'étape G40 sur la page Pi. Il convient de noter que l'ordre de ces commandes a son importance pour éviter de perdre des données lors des transferts opérés. 20 Dans le mode de réalisation décrit ici, on a considéré la notion de versions virtuelles des pages Pl et P2 pour déterminer une nouvelle configuration de ces pages permettant de traiter l'arc orienté sélectionné et de ne plus avoir à transférer de données entre les pages Pl et P2 dans cette nouvelle configuration. D'autres approches peuvent bien entendu être utilisées pour le module 4A3 de détermination pour déterminer une configuration des pages Pl et P2 permettant 25 d'obtenir le même résultat, c'est-à-dire, lorsqu'un premier arc orienté allant d'un premier noeud NI. représentant une première page Pl vers un deuxième noeud N2 représentant une deuxième page P2 est sélectionné, une séquence ordonnée de commandes permettant, sans perdre de données, et en utilisant la mémoire tampon BUF de l'objet connecté 2 : d'avoir dans la première page Pl et dans la deuxième page P2 les ensembles de données déjà 30 contenus dans ces pages et appartenant à la première page P1 et à la deuxième page P2 de la version finale du fichier. On note que si l'ensemble de données associé au premier arc coïncide en tout ou partie avec un ensemble de données contenu dans la première page Pl et appartenant à la première page Pl de la version finale Vfin du fichier, on ne conserve ou ne copie dans la première page Pl que la partie des données de cet ensemble de données qui ne 35 coïncide pas avec l'ensemble de données associé au premier arc (pour des raisons de place disponible dans la première page Pl). Il sera toujours possible à un stade ultérieur de récupérer dans la première page Pl les données manquantes pour la version finale du fichier, celles-ci étant disponibles dans la page P2 de la version finale du fichier. Dans l'exemple 27 illustratif envisagé ici, les ensembles A et B étant disjoints, on a dans la première page Pl l'ensemble A dans son intégralité compris dans la page P1 de la version finale ; de transférer l'ensemble de données associé au premier arc orienté sélectionné vers la deuxième page P2, et si un deuxième arc orienté allant du deuxième noeud N2 vers le premier 5 noeud N1 existe, de transférer vers la première page Pl, au moins une partie de l'ensemble de données associé à ce deuxième arc orienté ne coïncidant pas avec des données présentes dans la deuxième page de la version finale du fichier de données. Il sera toujours possible à un stade ultérieur de récupérer dans la première page Pl les données manquantes pour la version finale du fichier, celles-ci étant disponibles dans la page P2 de la version finale du fichier. S'il 10 n'y a pas coïncidence entre les ensembles de données, tout l'ensemble de données associé au deuxième arc est transféré vers la page Pl. C'est le cas notamment dans l'exemple illustratif envisagé ici où les ensembles E et F sont disjoints : on transfère alors vers la première page Pl l'ensemble E dans son intégralité, et s'il existe au moins un troisième arc orienté allant du premier ou du deuxième noeud vers un 15 troisième noeud distinct du premier et du deuxième noeud, de répartir ledit au moins un ensemble de données associé audit au moins un troisième arc entre la première page Pi et/ou la deuxième page P2, dans la limite de la place disponible sur ces pages. Suite à la détermination des commandes CMD(iter), le module 4A4 de mise à jour du dispositif de génération met à jour la version courante du graphe G(iter) pour tenir compte des 20 transferts et des répartitions de données qui résultent des commandes CMD (étape E80). Autrement dit, il met à jour le graphe G(iter) pour refléter la nouvelle disposition des pages Pl et P2 représentée par les versions virtuelles VIRT-Pl et VIRT-P2. Cette mise à jour, comme mentionné précédemment, consiste ici à mettre à jour les métadonnées associées aux noeuds du graphe G (ceux qui ont été considérés durant l'itération iter, à savoir ici les noeuds N1 et N2) et les 25 métadonnées associées aux arcs du graphe compte tenu des nouvelles dispositions de données dans les pages représentées par les noeuds. La version courante de G(iter) ainsi mise à jour est utilisée comme version courante du graphe à l'itération suivante (i.e. G(Iter+1)). La figure 7A illustre le graphe G mis à jour lors de l'étape E80. Les métadonnées associées au noeud N1 contiennent maintenant les ensembles de 30 données A-E-C-G, tandis que les métadonnées associées au noeud N2 contiennent les ensembles B-F-D-H. Les métadonnées associées aux autres noeuds du graphe (N3 et N4) sont restées inchangées. Les arcs Ll, L4, L3 et L5 n'existent plus, tandis que les arcs L2 et L6 sont maintenant associés aux ensembles de données C+G (ou de façon équivalente C-G) et D+H (ou de façon 35 équivalente D-H) respectivement. On note que si seulement un transfert partiel de l'ensemble de données E a été opérée vers la page Pi (dans le cas où les ensembles E et F ne sont pas disjoints), l'arc L4 est maintenu et associé à la partie manquante de l'ensemble de données E qui n'a pas été encore transférée vers la 28 page Pl. De même, si l'ensemble A n'a pas été maintenu en entier dans la page Pl car il comportait une partie en commun avec l'ensemble de données B, l'arc L4 est conservé et la partie de l'ensemble A non maintenue dans la page Pl (mais présente dans l'ensemble de données B transféré vers la page P2) est associée à cet arc L4. 5 Comme mentionné précédemment, dans le mode de réalisation décrit ici, si l'arc orienté sélectionné lors de l'étape E30 (L1 dans l'exemple envisagé) vérifie le critère CRIT1 (pour mémoire, la taille de l'ensemble de données associé à l'arc orienté sélectionné est supérieure à la somme des tailles des ensembles de données associés aux arcs orientés partant du noeud de destination de cet arc), le module 4A3 de détermination procède différemment des étapes E60, 10 E70 et E80 décrites précédemment pour déterminer une séquence de commandes CMD', en vue notamment d'optimiser la séquence de commandes déterminée et les traitements à effectuer (notamment par les modules de détermination et de mise à jour). Plus précisément, si le critère CRIT1 est vérifié par l'arc sélectionné (réponse oui à l'étape test E50), le module 4A3 de détermination détermine une séquence de commandes CMD' 15 qui permet au moyen de la mémoire tampon d'obtenir une nouvelle configuration des pages Pi et P2 telle que le noeud N2 représentant la page P2 est exclu du réseau de conflit (étape E90). A cet effet, le module 4A3 de détermination exploite le fait que la taille de l'ensemble de données associé à l'arc orienté sélectionné (L1 ici, l'ensemble de données en question étant l'ensemble A) est supérieure à la somme des tailles des ensembles de données associés aux arcs orientés partant 20 du noeud N2 (Le. les arcs L4, L5 et L6 ici associés respectivement aux ensembles de données E, G et H). Plus spécifiquement, compte tenu de cette propriété, le module 4A3 de détermination peut déterminer une séquence de commandes CMD' (potentiellement différente de celle qu'il aurait généré en appliquant les étapes E60 et E70) qui permet, au moyen de la mémoire tampon BUF de 25 l'objet connecté 2 de taille égale à une page : de transférer vers la deuxième page P2, chaque ensemble de données associé à un arc orienté de la version courante du graphe arrivant sur le noeud N2, autrement dit dans l'exemple envisagé des ensembles de données B, J et N associés respectivement aux arcs orientés Ll, L8 et Ln ; et 30 de transférer vers la première page Pl de chaque ensemble de données associé à un arc orienté de la version courante du graphe partant du noeud N2, autrement dit dans l'exemple envisagé des ensembles E, H et G associés respectivement aux arcs L4, L5 et L6 partant du noeud N2, puis que leur taille est inférieure à l'ensemble de données B précédemment transféré depuis la page Pl vers la page P2. 35 Dans le mode de réalisation décrit ici, pour répondre à ces conditions, le module 4A3 de détermination génère à l'itération iter=1, la séquence ordonnée CMD'(iter) de commandes suivante : 29 une première commande de stockage, dans la mémoire tampon BUF, du contenu de la page P2 représentée par le noeud N2, c'est-à-dire dans l'exemple envisagé, des ensembles de données E, F, G, H ; - une première commande d'effacement de la page P2 (optionnelle selon la mémoire persistante 5 considérée) ; - une première commande d'écriture sur la page P2 dans la mémoire persistante 3 de l'objet connecté 2 : o depuis la mémoire tampon BUF : des données contenues (ici précédemment contenues avant son effacement) dans la page P2 et présentes dans la page P2 de la 10 version finale Vfin du fichier, autrement dit l'ensemble de données F, o depuis les pages Pl, P3 et P4: des ensembles de données B, J et N associés respectivement aux arcs orientés Ll, L8 et L11 arrivant sur le noeud N2 ; On note que cette commande permet d'obtenir une page P2 dans la configuration correspondant à la page P2 de la pré-image Vmid, autrement dit de la version finale (c'est-à- 15 dire contenant les ensembles de données B-F-3-N, indépendamment de l'ordre à proprement parler des données de ces ensembles) ; - une deuxième commande de stockage, dans la mémoire tampon BUF, des ensembles de données contenus dans la page P1 représentée par le noeud N1 à l'exception des ensembles de données déjà écrits via la première commande d'écriture sur la page P2 : il s'agit ici d'écrire 20 dans la mémoire tampon BUF, les ensembles de données A, C et D (B ayant déjà été copié sur la page P2) tout en préservant l'ensemble E provenant de la page P2 qui n'a pas encore été copié vers la page Pl. Les ensembles de données A, C et D viennent s'ajouter dans la mémoire tampon aux ensembles de données E,G et H précédemment copiés via la première commande de stockage depuis la page P2. On note que la mémoire tampon BUF qui a une taille d'une 25 page contient la place pour stocker ces six ensembles de données puisque la taille de B est supérieure à la taille de E, G et H réunis ; une deuxième commande d'effacement de la page Pl (optionnelle selon la mémoire persistante considérée) ; et une deuxième commande d'écriture sur la page Pl dans la mémoire persistante 3 de l'objet 30 connecté 2, depuis la mémoire tampon BUF, des ensembles de données A, C, D, E, G et H. Ces commandes conduisent les pages P1 et P2 dans une nouvelle configuration à savoir la page Pl contient les ensembles de données A, C, D, E, G, 1-1 tandis que la page P2 contient les ensembles de données B, F, 3 et N. La page P2 contient ainsi les ensembles de données qu'elle doit contenir dans la version finale Vfin du fichier. Elle est donc en quelque sorte 35 sortie du réseau de conflits à gérer. Suite à la détermination des commandes CMD'(iter), le module 4A4 de mise à jour du dispositif de génération met à jour la version courante du graphe G(iter) pour tenir compte des transferts et des répartitions de données qui résultent des commandes CMD' (étape E100). 30 Autrement dit, il met à jour le graphe G(iter) pour refléter la nouvelle disposition des pages Pl et P2. Cette mise à jour, comme mentionné précédemment pour l'étape E80, consiste ici à mettre à jour les métadonnées associées aux noeuds du graphe G (ceux qui ont été considérés durant l'itération iter, à savoir ici les noeuds NI et N2) et les métadonnées associées aux arcs du graphe 5 compte tenu des nouvelles dispositions de données dans les pages représentées par les noeuds. La version courante de G(iter) ainsi mise à jour est utilisée comme version courante du graphe à l'itération suivante (i.e. G(iter+1)). La figure 7B illustre le graphe G mis à jour lois de l'étape E100. Les métadonnées associées au noeud N1 contiennent maintenant les ensembles de 10 données A-C-D-E-G-H, tandis que les métadonnées associées au noeud N2 contiennent les ensembles B F 3 N. Les métadonnées associées aux autres noeuds du graphe (N3 et N4) sont restées inchangées. Les arcs Ll, L4, L5 et L8 n'existent plus, tandis que les arcs L2 et L3 sont maintenant associés aux ensembles de données C+G (ou de façon équivalente C-G) et D+H (ou de façon 15 équivalente D-H) respectivement. On note que d'autres critères peuvent être examinés pour tenter de simplifier les traitements mis en oeuvre par le dispositif de génération 4 pour déterminer la séquence de commandes et/ou pour simplifier cette séquence de commandes ou le jeu d'instructions généré à partir de cette séquence. 20 Par exemple, le module 4A3 de détermination peut examiner si l'arc sélectionné est tel que le noeud de départ de l'arc et son noeud destination sont liés par un unique arc ou par un arc bidirectionnel (autrement dit par deux arcs allant respectivement du noeud de départ vers le noeud de destination et inversement), et qu'aucun autre arc ne part de ces noeuds (noeuds isolés dans le graphe). Dans ce cas, le module 4A3 de détermination peut déterminer une séquence ordonnée de 25 commandes permettant un simple échange des données entre les deux noeuds. A titre illustratif, si on suppose par exemple que les noeuds Ni et N2 sont liés par un arc orienté Ll' allant de N1 vers N2 associé à un ensemble de données A' et par un arc orienté L2' allant de N2 vers N1 associé à un ensemble de données B', une séquence de commandes CMD"(iter) permettant d'échanger les données entre les pages P1 et P2 représentées respectivement par les noeuds Ni et N2 est : 30 - une première commande de stockage, dans la mémoire tampon BUF de l'objet connecté 2, des données contenues dans la page P2 ; une première commande d'effacement du contenu de la page P2 dans la mémoire persistante 3 (peut être optionnelle) ; une première commande d'écriture, sur la page P2, des données destinées à être contenues 35 dans la version finale de cette page P2 (incluant par exemple ici l'ensemble de données se trouvant sur la page Pl ; une deuxième commande de stockage, dans la mémoire tampon BUF de l'objet connecté 2, des données de la version finale de la page Pl (incluant l'ensemble de données B' 31 précédemment contenues dans la page P2 copiée dans la mémoire tampon BUF via la première commande de stockage) ; - une deuxième commande d'effacement du contenu de la page PI dans la mémoire persistante 3 (peut être optionnelle) ; 5 - une deuxième commande d'écriture, sur la page Pl, des données stockées dans la mémoire tampon BUF. Selon un autre exemple, le module 4A3 de détermination peut examiner si l'arc sélectionné est tel que la page représentée par le noeud de départ de l'arc a suffisamment d'espace mémoire inutilisé dans sa forme finale pour stocker tout ou partie des ensembles de 10 données contenus dans la page représentée par le noeud de destination de l'arc et destinés à être transférés vers d'autres pages dans la version finale Vfin du fichier. Selon cet exemple, le module 4A3 de détermination peut déterminer une séquence ordonnée de commandes exploitant l'espace mémoire inutilisé sur le noeud de départ dans sa forme finale. Bien d'autres critères peuvent être envisagés et testés et conduire au remplacement 15 des étapes E60 à E80 par des étapes plus simples. Toutefois, il convient de noter que pour un réseau de conflits quelconque, il n'est pas toujours possible de sélectionner des arcs vérifiant de tels critères. Les étapes E60 à E80 sont quant à elles toujours applicables, quelles que soient les propriétés de l'arc sélectionné lors de l'étape E30. Par conséquent, on peut envisager dans un mode de réalisation de toujours mettre en oeuvre ces étapes E60 à E80 sans envisager de les 20 optimiser. En variante, on peut envisager, comme dans le mode de réalisation décrit ici, de mettre en oeuvre des étapes alternatives lorsque les arcs sélectionnés lors de l'étape E30 le permettent. Autrement dit, le procédé de génération contient dans ce cas des itérations de traitement mettant en oeuvre les étape E60 à E80 et des itérations de traitement mettant en oeuvre d'autres étapes de détermination et de mise à jour en remplacement des étapes E60 à E80 (comme par exemple les 25 étapes E90 et E100) quand certains critères d'optimisation prédéterminés (tel que le critère CRIT1) sont vérifiés par les arcs sélectionnés lors de ces itérations. A l'issue des étapes de mise à jour E80/E100, l'index de l'itération courante iter est incrémenté (étape En()) et le dispositif de génération 4 examine si la version courante du graphe G correspondant à cet index contient encore un arc orienté à traiter (étape E20). 30 Si tel est le cas (réponse oui à l'étape E20), une nouvelle itération de traitement du graphe est mise en oeuvre et les étapes E30 à E100 sont réitérées sur la version courante du graphe G mise à jour. Les étapes E20 à E100 sont répétées tant que la version courante du graphe G mise à jour contient un arc orienté. Sinon (réponse non à l'étape E20), le dispositif de génération 4, via son module 4B de 35 génération, génère un jeu d'instructions INST à partir des séquences de commandes ordonnées (CMD, CMD' ou CMD") obtenues lors des différentes itérations réalisées par le module de traitement 4A (étape E40). On note que l'ensemble des séquences de commandes ordonnées obtenues permettent de transformer la version initiale du fichier LOG en la pré-image Vmid. 32 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 : S 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 ; 10 - 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 la mémoire tampon ; des instructions de copie chaînée de données de la mémoire tampon vers la mémoire 15 persistante ou 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 20 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 25 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. On note que chaque commande peut être codée par le module 4B de génération en une ou plusieurs instructions en fonction de différents critères (complexité de la commande, 30 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 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 35 alloué à l'encodage de ces informations. Par ailleurs lors de l'étape E40, le module 4B de génération peut procéder à diverses optimisations et regrouper le cas échéant certaines commandes qui peuvent être redondantes entre deux itérations. 33 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 5 exemple une instruction ERASE signalant à l'objet connecté 2 que les données présentes sur une 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 10 mise à jour sur place du fichier de données LOG. Dans le mode de réalisation décrit ici, le fichier 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 15 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 mis en oeuvre par l'objet connecté 2 en utilisant le jeu d'instructions INST. 20 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és 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. L'objet connecté 2 génère une pré-image Vmid du fichier LOG en appliquant, via son 25 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 pré-image de la version finale du fichier de données LOG est exempte de réseau de conflits 30 complexe à gérer. L'objet connecté 2 applique ensuite, via son module 2C d'application, le fichier delta FA à la pré-image 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 (INST) destinées à un dispositif (2) 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, le 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 comprenant une pluralité de noeuds et d'arcs orientés et 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 arc orienté, une itération de traitement comprenant : o une étape de sélection (E30) dans la version courante du graphe d'un premier arc orienté allant d'un premier noeud représentant une première page vers un deuxième noeud représentant une deuxième page ; o une étape de détermination (E70) d'une séquence ordonnée de commandes qui permet, au moyen d'une mémoire tampon : - de transférer l'ensemble de données associé au premier arc orienté vers la deuxième page, et si un deuxième arc orienté allant du deuxième noeud vers le premier noeud existe, de transférer vers la première page, au moins une partie de l'ensemble de données associé à ce deuxième arc orienté ne coïncidant pas avec des données présentes dans la deuxième page de la version finale du fichier de données, et - s'il existe au moins un troisième arc orienté allant du premier ou du deuxième noeud vers un troisième noeud distinct du premier et du deuxième noeud, de répartir ledit au moins un ensemble de données associé audit au moins un troisième arc entre la première page et/ou la deuxième page ; o une étape de mise à jour (E80) de la version courante du graphe de sorte à refléter les transferts et la répartition des ensembles de données considérés lors de l'étape de détermination ; une étape de génération (E40) dudit ensemble d'instructions à partir des séquences ordonnées de commandes déterminées lors des itérations de traitement. 2. Procédé de génération selon la revendication 1 dans lequel la mémoire tampon (BUF) a la taille prédéterminée d'une page. 35 3. Procédé de génération selon la revendication 1 ou 2 dans lequel ladite séquence ordonnée de commandes comprend : une première commande de stockage, dans la mémoire tampon du dispositif, du contenu de la 5 deuxième page représenté par le deuxième noeud ; une première commande d'écriture sur la deuxième page, depuis la mémoire tampon et la première page, des données contenues dans la deuxième page représentée par le deuxième noeud et présentes dans la deuxième page de la version finale du fichier, de l'ensemble de données associé au premier arc orienté et des ensembles de données associés audit au moins 10 un troisième arc répartis sur la deuxième page; une deuxième commande de stockage, dans la mémoire tampon, des ensembles de données contenus dans la première page représentée par le premier noeud à l'exception des ensembles de données écrits via la première commande d'écriture sur la deuxième page et en conservant dans la mémoire tampon les ensembles de données stockés via la première commande de 15 stockage devant être transférés vers la première page ; et - une deuxième commande d'écriture, sur la première page, depuis la mémoire tampon, des données contenues dans la première page représentée par le premier noeud et présentes dans la première page de la version finale du fichier, d'au moins une partie de l'ensemble de données associé au deuxième arc orienté ne coïncidant pas avec des données présentes dans 20 la deuxième page de la version finale du fichier de données et des ensembles de données associés audit au moins un troisième arc répartis sur la première page. 4. Procédé de génération selon l'une quelconque des revendications 1 à 3 comprenant lors de l'étape de détermination, pour répartir ledit au moins un ensemble de données associé 25 audit au moins un troisième arc : une étape d'attribution dans l'ordre décroissant de leur taille, chaque ensemble dudit au moins un ensemble de données à l'une des pages parmi la première et la deuxième page tant que celle-d contient suffisamment de place pour contenir lesdits ensembles de données qui lui sont attribués dans leur intégralité ; 30 - une étape d'attribution des ensembles de données restant à l'autre page parmi la première et la deuxième page tant que celle-ci contient suffisamment de place pour contenir lesdits ensembles de données restant dans leur intégralité ; et s'il reste un ensemble de données non attribué, une étape de répartition du contenu de cet ensemble de données entre la première page et la deuxième page. 35 5. Procédé de génération selon l'une quelconque des revendications 1 à 4 comprenant lors de l'étape de détermination, pour répartir ledit au moins un ensemble de données associé audit au moins un troisième arc, s'il existe dans le graphe deux arcs orienté allant respectivement 36 du premier et du deuxième noeud vers un même troisième noeud, une étape d'agrégation au sein d'un même ensemble de données des ensembles de données associés auxdits arcs, avant de répartir ledit ensemble de données agrégés entre la première page et/ou la deuxième page. 5 6. Procédé de génération selon l'une quelconque des revendications 1 à 5 dans lequel le premier arc orienté est sélectionné de façon aléatoire. 7. Procédé de génération selon l'une quelconque des revendications 1 à 6 dans lequel, si une taille de l'ensemble de données associé au premier arc orienté est supérieure à une somme 10 des tailles des ensembles de données associés aux arcs orientés partant du deuxième noeud, ladite itération de traitement comprend, en remplacement des étapes de détermination et de mise à jour : une étape de détermination (E90) d'une séquence ordonnée de commandes qui permet, au moyen de ladite mémoire tampon : 15 o de transférer vers la deuxième page de chaque ensemble de données associé à un arc orienté de la version courante du graphe arrivant sur le deuxième noeud ; et o de transférer vers la première page de chaque ensemble de données associé à un arc orienté de la version courante du graphe partant du deuxième noeud ; une étape de mise à jour (E100) de la version courante du graphe de sorte à refléter les 20 transferts considérés lors de l'étape de détermination. 8. Procédé de génération selon la revendication 7 dans lequel ladite séquence ordonnée de commandes comprend : une première commande de stockage, dans la mémoire tampon du dispositif, du contenu de la 25 deuxième page représentée par le deuxième noeud ; une première commande d'écriture sur la deuxième page, depuis la mémoire tampon et les pages représentées par les noeuds de départ des arcs orientés arrivant sur le deuxième noeud, des ensembles de données associés à ces arcs et des données contenues dans la deuxième page représentée par le deuxième noeud et présentes dans la deuxième page de la version 30 finale du fichier ; - une deuxième commande de stockage, dans la mémoire tampon, des ensembles de données contenus dans la première page représentée par le premier noeud à l'exception de l'ensemble de données associé au premier arc orienté ; une deuxième commande d'écriture sur la première page, depuis la mémoire tampon, des 35 données contenues dans la première page représentée par le premier noeud et présentes dans la première page de la version finale du fichier, de l'ensemble de données associé au deuxième arc orienté et des ensembles de données associés aux arcs orientés partant du deuxième noeud. 37 9. Procédé de génération selon l'une quelconque des revendications 1 à 8 dans lequel ledit ensemble d'instructions comprend au moins une instruction parmi : - une instruction de copie de données d'une page de la mémoire persistante vers la mémoire 5 tampon ; - une instruction de copie de données de la mémoire tampon vers une page de la mémoire persistante ; une instruction de copie de données de la mémoire tampon vers la mémoire tampon ; une instruction d'effacement de données de la mémoire persistante ; 10 une instruction de désignation d'une page de la mémoire persistante ; - une instruction de copie chaînée de données de la mémoire persistante vers la mémoire persistante ou vers la mémoire tampon ; une instruction de copie chaînée de données de la mémoire tampon vers la mémoire persistante ou vers la mémoire tampon. 15 10. Procédé de mise à jour sur place par un dispositif (2) d'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, ledit procédé de mise à jour comprenant : 20 une étape d'obtention (F10) d'un ensemble d'instructions (INST) genérées en utilisant un procédé de génération selon l'une quelconque des revendications 1 à 8 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 initiale du fichier, d'une pré-image de la version finale du fichier de données en appliquant ledit 25 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. 30 11. Programme d'ordinateur comportant des instructions pour l'exécution des étapes du procédé de génération selon l'une quelconque des revendications 1 à 9 ou d'un procédé de mise à jour selon la revendication 10 lorsque ledit programme est exécuté par un ordinateur. 12. Support d'enregistrement lisible par un ordinateur sur lequel est enregistré un 35 programme d'ordinateur selon la revendication 11. 13. Dispositif de génération (4) 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 38 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 5 orientés et 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 ; 10 un module de traitement itératif (4A), activé tant que la version courante du graphe comprend au moins un arc orienté, ledit module comprenant un module de sélection, un module de détermination et un module de mise à jour activés lors de chaque itération de traitement tels que : o le module de sélection (4A2) est configuré pour sélectionner dans la version courante 15 du graphe un premier arc orienté allant d'un premier noeud représentant une première page vers un deuxième noeud représentant une deuxième page ; o le module de détermination (4A3) est configuré pour déterminer une séquence ordonnée de commandes qui permet, au moyen d'une mémoire tampon : - de transférer l'ensemble de données associé au premier arc orienté vers la 20 deuxième page, et si un deuxième arc orienté allant du deuxième noeud vers le premier noeud existe, de transférer vers la première page, au moins une partie de l'ensemble de données associé à ce deuxième arc orienté ne coïncidant pas avec des données présentes dans la deuxième page de la version finale du fichier de données, et 25 - s'il existe au moins un troisième arc orienté allant du premier ou du deuxième noeud vers un troisième noeud distinct du premier et du deuxième noeud, de répartir ledit au moins un ensemble de données associé audit au moins un troisième arc entre la première page et/ou la deuxième page ; o le module de mise à jour (4A4) est configuré pour mettre à jour la version courante du 30 graphe de sorte à refléter les transferts et la répartition des ensembles de données considérés par le module de détermination ; un module de génération (4B), configuré pour générer ledit ensemble d'instructions à partir des séquences ordonnées de commandes déterminées lors des itérations de traitement. 35 14. 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 : 39 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 13 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, en 5 remplacement de la version initiale du fichier, une pré-image de la version finale du fichier de données en appliquant ledit ensemble d'instructions à 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 en remplacement de la pré-image, 10 la version finale du fichier de données. 15. Système (1) comprenant : un dispositif de mise à jour (2) selon la revendication 14, stockant dans une mémoire persistante un fichier de données dans une version initiale sous la forme d'une pluralité de 15 pages d'une taille prédéterminée ; et un dispositif de génération (4) selon la revendication 13, configuré 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.