Brevet FR2786286A1 — publié le 20000526

La présente invention se rapporte à un dispositif et un procédé de détection de débordement de pile dans une mémoire et une machine à affranchir les mettant en oeuvre. Elle s'applique en particulier aux machines à affranchir dotées d'un programme s'exécutant dans un environnement multi-tâches. L'exécution correcte de chaque tâche d'un programme doit tre garantie. On entend par exécution correcte, le fait qu'une tâche s'exécute dans sa pile. La pile d'une tâche correspond à un espace mémoire qui lui est réservé. En d'autres termes, Invention vise à contrôler que la mémoire utilisée par une tâche se limite à 1'espace mémoire qui lui est alloué. Dans les programmes multi-tâches utilisant des mémoires électroniques actuellement connus, aucune certification de non-débordement de pile d'une tâche n'est prévue. Dans le cas des machines à affranchir, les tâches peuvent gérer des sommes d'argent ou des données dont la valeur doit rester intègre. II est donc indispensable de garantir qu'aucune pile ne déborde au delà de l'espace mémoire qui lui a été alloué. A cet effet, la présente invention vise à vérifier pendant chaque changement de contexte au sein du programme que la pile de la nouvelle tâche est intègre. Ce contrôle d'intégrité de la pile est fait en contrôlant les premiers octets de la pile par rapport à une valeur prédéfinie. Si ces octets de la pile possèdent une valeur inattendue, la pile est considérée comme violée et l'exécution d'au moins une tâche du programme est arrtée. Ainsi, selon l'invention, on dédie un certain nombre d'octets au début de chaque pile à la détection du débordement. Toutes les piles se succédant dans un espace mémoire, le noyau multitâches vérifie la valeur des octets dédiés à la détection du débordement pour chaque tâche qui va s'exécuter. Ainsi, si une pile déborde, elle modifie la valeur des octets dédiés à la détection du débordement de la pile suivante. Dès que le noyau multitâches détecte cette modification, l'exécution d'au moins une des tâches concernées par la pile ayant débordé ou par la pile vers laquelle a eu lieu le débordement, est arrtée. A cet effet, à chaque changement de contexte, une routine de programme est mise en oeuvre pour vérifier la valeur des octets dédiés à la détection de débordement correspondant à la pile attachée à la prochaine tâche qui va s'exécuter. Selon un premier aspect, la présente invention vise un procédé de détection de débordement d'au moins une pile, espace mémoire réservé à une partie d'un programme, caractérisé en ce qu'il : -pour chaque pile surveillée, une opération d'attribution de valeurs prédéterminées à une partie de mémoire qui, dans l'ordre d'écriture de ladite pile, succède à ladite pile, et -à chaque mise en oeuvre d'une partie de programme associée à ladite pile, une opération de lecture de valeurs présentes dans ladite partie de mémoire et une opération de vérification de valeurs lues. Ainsi, si la pile à laquelle a été attribuée une partie de mémoire déborde, c'est nécessairement dans l'ordre des écritures qui y sont faites et donc, à partir d'un certain nombre d'écritures en débordement, les valeurs prédéterminées conservées dans la partie de mémoire sont modifiées par écriture (ou"écrasement"). On observe que l'invention couvre aussi bien le cas où c'est au début de l'exécution d'une tâche ou en fin de cycle d'exécution d'une tâche que la vérification de l'intégrité des octets dédiés à la détection du débordement est effectuée. Selon des caractéristiques particulières, ledit programme est multitâche, chaque tâche étant associée à une pile et à chaque changement de contexte, les opérations de lecture et de vérification sont effectuées : -sur la partie de mémoire associée à la pile de la tâche qui va tre mise en oeuvre, ou -sur la partie de mémoire associée à la pile qui suit, dans l'ordre d'écriture des piles, la pile de la tâche dont la mise en oeuvre vient d'tre interrompue. Grâce à chacune de ces dispositions, le procédé de l'invention s'applique particulièrement efficacement aux programmes multitâches. Selon des caractéristiques particulières, au cours de l'opération d'attribution, la partie de mémoire associée à une pile lui est mitoyenne. Grâce à ces dispositions, le moindre débordement de pile est détecté. Selon des caractéristiques particulières, au cours de l'opération d'attribution, la partie de mémoire associée à une pile est mitoyenne de la pile suivante, dans l'ordre d'écriture de la pile à laquelle est associée ladite partie de mémoire. Grâce à ces dispositions, seul un débordement de pile qui pourrait perturber la pile suivante est détecté, ce qui laisse une plus grande souplesse à la gestion de la pile surveillée. Selon des caractéristiques particulières, les opérations de lecture et de vérification sont effectuées par une routine dudit programme. Grâce à ces dispositions, la mise en oeuvre de l'invention est particulièrement aisée. Selon des caractéristiques particulières, lesdites valeurs prédéterminées sont égales entre elles. Grâce à ces dispositions, l'opération de vérification est particulièrement simple puisqu'elle consiste à comparer chaque valeur lue avec la valeur prédéterminée. Selon des caractéristiques particulières, lesdites valeurs prédéterminées sont différentes de toutes les valeurs prises par les codes informatiques dudit programme ou de toutes les valeurs utilisées dans les piles. Grâce à ces dispositions, il est impossible que le débordement de la pile ne résulte en une écriture d'une valeur prédéterminée dans la partie de mémoire lue. Selon des caractéristiques particulières, lorsque au cours de l'opération de vérification, il est déterminé qu'au moins une valeur lue a été modifiée, au cours d'une opération de modification de programme, la mise en oeuvre de chaque partie de programme relative à la pile associée à la partie de mémoire qui a été lue est suspendue. Selon d'autres caractéristiques particulières, lorsque, au cours de l'opération de vérification, il est déterminé qu'au moins une valeur lue a été modifiée, au cours d'une opération de modification de programme, la mise en oeuvre de chaque partie de programme relative à la pile qui succède, dans l'ordre d'écriture des piles, à la pile associée à la partie de mémoire lue, est suspendue. Grâce à chacune de ces dispositions, les conséquences du débordement de pile sont limitées. Selon un deuxième aspect, la présente invention vise un dispositif de détection de débordement d'au moins une pile, espace mémoire réservé à une partie d'un programme d'ordinateur, caractérisé en ce qu'il comporte un moyen de traitement adapté, -pour chaque pile surveillée, à attribuer des valeurs prédéterminées à une partie de mémoire qui, dans l'ordre d'écriture de ladite pile, succède à ladite pile, et -à chaque mise en oeuvre d'une partie de programme associée à ladite pile, à lire des valeurs présentes dans ladite partie de mémoire et à vérifier des valeurs lues. L'invention vise, aussi, une machine à affranchir, caractérisée en ce qu'elle comporte un dispositif tel que succinctement exposé ci-dessus. L'invention vise aussi : -un moyen de stockage d'informations lisible par un ordinateur ou un microprocesseur conservant des instructions d'un programme informatique caractérisé en ce qu'il permet la mise en oeuvre du procédé de l'invention telle que succinctement exposée ci-dessus, et -un moyen de stockage d'informations amovible, partiellement ou totalement, et lisible par un ordinateur ou un microprocesseur conservant des instructions d'un programme informatique caractérisé en ce qu'il permet la mise en oeuvre du procédé de l'invention telle que succinctement exposée ci-dessus. Ce dispositif, cette machine à affranchir et ces moyens de stockage présentant les mmes avantages que le procédé succinctement exposé cidessus, ceux-ci ne sont pas rappelés ici. D'autres avantages, buts et caractéristiques ressortiront de la description qui va suivre, faite en regard des dessins annexés dans lesquels : -la figure 1 représente, une machine à affranchir mettant en oeuvre le dispositif et le procédé de détection de débordement de pile objets de la présente invention, -la figure 2 représente, schématiquement, un circuit électronique incorporé dans la machine à affranchir illustrée en figure 1, -les figures 3A et 3B représentent des organisations de mémoire conforme à la présente invention, respectivement avant et après la détection d'un débordement de pile, et -la figure 4 représente un diagramme de fonctionnement du circuit électronique illustré en figure 2. La machine à affranchir 1 illustrée sur les dessins comporte un dispositif pour imprimer, sur un objet plat tel que la lettre 2, d'une part, une marque d'affranchissement et, éventuellement, une adresse de destination de t'enveloppe. Pour imprimer la marque d'affranchissement sur l'emplacement normalisé prévu à cet effet, il faut faire passer la lettre 2 dans un couloir 5 que comporte la machine 1, ce couloir étant délimité par des éléments solidaires du bâti, respectivement un support de glissement 6 qui forme le plafond du couloir 5, une table 7 qui en forme le plancher et une rampe qui en forme une limite latérale, le couloir étant ouvert à l'opposé de cette rampe. Pour faire passer la lettre 2 dans le couloir 5, on pose la lettre sur la partie de la table 7 qui est en saillie du côté prévu pour l'introduction (côté que l'on voit à gauche en figure 1) puis on fait rentrer la lettre dans le couloir 5, comme montré en figure 1, jusqu'à ce qu'elle soit entraînée par les moyens prévus à cet effet dans la machine 1, l'impression de la marque d'affranchissement s'effectuant automatiquement pendant que la lettre 2 est entraînée dans le couloir 5, la lettre affranchie étant expulsée de la machine à l'autre extrémité du couloir 5 (extrémité que l'on voit à droite en figure 1). Pour entraîner la lettre 2, la machine 1 comporte deux galets 9 et 10 passant chacun au travers d'une ouverture de la table 7, et deux contre-galets 12 et 13, respectivement pour le galet 9 et pour le galet 10, passant au travers d'une ouverture du support 6. Les galets 9 et 10 sont montés à rotation par rapport au bâti de la machine 1, par l'intermédiaire de moyens de suspension 14 montrés schématiquement sur la figure 1. Les contre galets 12 et 13 sont montés à rotation sur le bati de la machine 1, sans tre suspendus par rapport à celui-ci. Un moteur électrique non représenté sert à entraîner en rotation synchrone les contre galets 12 et 13, par exemple par l'intermédiaire d'une courroie (non représentée) qui tourne autour de trois pignons portés respectivement par le moteur, par le contre galet 12 et par le contre galet 13. Etant donné que les moyens de suspension 14 sollicitent les galets 9 et 10 vers le support 6, et donc vers les contre galets 12 et 13, les galets 9 et 10 sont entraînés par friction sur les contre galets 12 et 13, directement ou par l'intermédiaire d'un objet, tel que la lettre 2, en cours de passage dans la machine 1. La lettre 2, lorsqu'elle est introduite dans le couloir 5 comme montré sur la figure 1, finit par rencontrer le galet 9 puis le contre galet 12 qui l'entraîne dans le sens indiqué sur la figure 1 par la flèche horizontale orientée de gauche à droite. Simultanément, le galet 9 s'abaisse tandis que la lettre 2 s'introduit entre les galets 9 et 12 de sorte que la lettre 2 progresse dans la machine 1 avec sa face à imprimer 4 qui est plaquée et qui glisse contre la surface 17 du support de glissement 6. Pour imprimer la marque d'affranchissement à l'emplacement normalisé qui lui correspond et/ou l'adresse de destination à l'emplacement normalisé qui lui correspond, la machine 1 comporte des moyens d'impression 19 montrés très schématiquement sur la figure 1. D'une façon générale, tes moyens d'impression 19 déposent la marque d'affranchissement pendant que la lettre 2 ou l'objet à affranchir circule dans la machine 1 avec sa face à imprimer qui est plaquée contre la surface 17 du support de glissement 6, les moyens 19 étant situés entre les contre-galets 12 et 13. Dans l'exemple illustré, les moyens d'impression 19 sont montés directement sur le bâti de la machine, et sont donc fixes par rapport au support de glissement 6. Afin que les moyens d'impression 19 soient commandés en synchronisme avec l'avancement de l'objet dans la machine, il est prévu un détecteur de présence de l'objet (non représenté) qui déclenche un processus d'impression se déroulant automatiquement. Plus précisément, il existe un premier détecteur de présence qui commande la mise en route du moteur (non représenté) lorsqu'un objet commence à tre introduit dans la machine 1, et un deuxième détecteur de présence (non représenté) qui déclenche le processus d'impression lorsque l'objet est parvenu à un emplacement prédéterminé. En figure 2, est représenté un circuit électronique de commande du dispositif tel que présenté en figure 1. Ce circuit est illustré sous forme de schéma synoptique et représenté sous référence générale 100. II comporte, reliés entre eux par un bus d'adresses et de données : -une unité centrale de traitement ; -une mémoire vive RAM 104 ; -une mémoire morte flash PROM 105 ; -un port d'entrée sortie 103 servant à : elle poids de l'objet postal à affranchir, et 'fa détection de l'objet postal par chacun des détecteurs (non représentés aux figures) et à transmettre : 'des signaux de commande de moteurs, et et, indépendamment du bus : -des moteurs pas-à-pas 109 ; -des détecteurs de présence ; -un écran de visualisation 108 relié au port d'entrée/sortie ; -une balance 112 reliée au port d'entrée/sortie 103 et fournissant des octets représentatifs du poids d'un objet postal ; et -un clavier 101 relié au port d'entrée/sortie 103 et fournissant des octets représentatifs des touches de clavier successivement utilisées. Chacun des éléments illustrés en figure 2 est bien connu de I'homme du métier des circuits à microprocesseur et, plus généralement, des systèmes de traitement de l'information. Ces éléments ne sont donc pas décrits ici. La mémoire vive 104 conserve des données, des variables et des résultats intermédiaires de traitement, dans des registres de mémoire portant, dans la suite de la description, les mmes noms que les données dont ils conservent les valeurs. La mémoire vive 104 comporte notamment des registres conservant des informations représentatives du poids de l'objet postal à affranchir, le format de l'objet postal en cours de traitement, le nombre d'objets postaux dans le lot en cours de traitement, des valeurs de compteurs ascendant et descendant qui correspondent à des montants d'affranchissement déjà déposés et restant à déposer avant le rechargement de la machine. Ces derniers registres fonctionnent selon des techniques connues dans le domaine des machines à affranchir (au cours de chaque affranchissement, lorsque le montant du compteur descendant est supérieur au montant de la marque d'affranchissement à déposer, il est décrémenté du montant de cette marque et le compteur ascendant est incrémenté du mme montant). La mémoire morte 105 est adaptée à conserver le programme de fonctionnement de l'unité centrale de traitement 106, dans un registre "program1", et les données nécessaires au fonctionnement de ce programme. En fait, la mémoire dite"morte"105 est une mémoire réinscriptible qui ne s'efface pas lorsque le dispositif est éteint. Elle n'est réinscriptible que selon des procédures sécurisées et seulement par certaines personnes habilitées, si bien que, pour l'utilisateur quotidien, elle apparaît comme une mémoire morte. L'unité centrale de traitement 106 est adaptée à mettre en oeuvre l'organigramme décrit en regard de la figure 4 et à organiser la mémoire vive 104, conformément à la figure 3A. Le programme ou logiciel de la machine à affranchir est un logiciel multitâche, ce qui implique une allocation, par le processeur, d'un espace mémoire, ou pile, associé à chaque tâche. Cet espace mémoire est contenu dans la mémoire vive 104. Dans le mode de réalisation décrit et représenté, les espaces mémoires alloués à toutes les piles sont alternativement juxtaposés à des parties de mémoire dédiées à la détection, ou surveillance, du débordement des piles. Dans le tableau suivant, on a représenté, dans l'ordre des adresses mémoires décroissantes, I'ensemble des piles mises en oeuvre par le programme, conformément à t'état de la technique antérieure : pile de la tâche n pile de la tâche n-1 pile de la tâche 1 pile de la tâche 0 pile de la tâche d'horloge pile de la tâche de fond On observe que c'est dans le sens vertical descendant que se déplacent les pointeurs de piles, quand on empile, lit ou écrit dans les piles. On comprend aisément que si une pile déborde, c'est-à-dire si une tâche effectue une écriture en dehors de la pile qui lui est attribuée, une autre pile est perturbée (des données y sont modifiées) et l'ensemble du fonctionnement de la machine à affranchir est perturbé. Dans le cas des machines à affranchir des valeurs conservées dans ces piles représentent des valeurs"sensibles", comme des sommes d'argent. II est donc indispensable de garantir l'inviolabilité des piles. Conformément à la présente invention, au démarrage du programme de l'application, tous les octets de chaque pile sont affectés à une valeur prédéfinie. Cette valeur prédéfinie est choisie à A5, en base hexadécimale, en prenant en compte le fait qu'aucun code ne réside à l'adresse A5A5. Ensuite, on fixe I'adresse de début de pile pour chaque tâche de l'application. Dans le mode de réalisation décrit et représenté, les quatre premiers octets de chaque pile sont réservés au contrôle du débordement. Dans le tableau suivant, correspondant à la figure 3A, on a représenté, dans l'ordre des adresses mémoires décroissantes, l'ensemble des piles mises en oeuvre par le programme et des parties de mémoire qui sont destinées à surveiller leur débordement, conformément à l'invention : quatre octets associés à la pile de la tâche n : A5 A5 A5 A5 pile de la tâche n quatre octets associés à la pile de la tâche n-1 : A5 A5 A5 A5 pile de la tâche n-1 quatre octets associés à la pile de la tâche n-2 : A5 A5 A5 A5 quatre octets associés à la pile de la tâche 1 : A5 A5 A5 A5 pile de la tâche 1 quatre octets associés à la pile de la tâche 0 : A5 A5 A5 A5 pile de la tâche 0 quatre octets associés à la pile de la tâche d'horloge : A5 A5 A5 A5 pile de la tâche d'horloge quatre octets associés à la pile de la tâche de fond : A5A5A5A5 pile de la tâche de fond Les piles 300,302,304,306,310 et 312, sont associées à des parties de mémoire 301,303,305,307,309,311 et 313 conservant des valeurs prédéterminées. Un changement de contexte consiste en une action qui interrompt l'exécution d'une tâche pour activer l'exécution d'une autre tâche. Cette opération est menée par le noyau du programme multitâche. Les fonctions du noyau permettent d'exécuter une routine spécifique (routine dite de , non interne au noyau) pendant un changement de contexte. La routine de Hook est une portion de code qui est appelée par le noyau pendant un changement de contexte. A I'appel de la routine de Hook par le noyau, la tâche courante est la nouvelle tâche. En d'autres termes, le contexte en cours est le contexte de la nouvelle tâche (la pile courante est la pile de la nouvelle tâche). Dans le cadre de l'invention, cette routine est dédiée au contrôle de l'intégrité de la pile de la nouvelle tâche (c'est-à-dire la tâche active à l'issue du changement de contexte). La routine vérifie la valeur des octets de contrôle de la pile de la nouvelle tâche. La détection d'un débordement de pile consiste, dans le mode de réalisation décrit et représenté, à vérifier que les quatre octets qui précédent la pile liée à la nouvelle tâche contiennent toujours les valeurs qui y avaient été écrites (A5A5A5A5). Si tous les octets contrôlés n'ont pas la valeur prédéterminée qui y avait été écrite, un débordement de la pile située au dessus de la pile associé à la nouvelle tâche, est détecté. A titre d'exemple, dans le tableau suivant, correspondant à la figure 3B, on a représenté, dans l'ordre des adresses mémoires décroissantes, I'ensemble des piles mises en oeuvre par le programme et des parties de mémoire qui sont destinées à surveiller leur débordement, lorsque la pile n 312 a débordé vers la pile n-1 310, en provoquant l'écriture des codes hexadécimaux 34 et 5F pour les deux premiers des quatre octets de la partie de mémoire 311 qui est associée à la pile n-1 310 : quatre octets associés à la pile de la tâche n : A5 A5 A5 A5 pile de la tâche n quatre octets associés à la pile de la tâche n-1 : 34 5F A5 A5 pile de la tâche n-1 quatre octets associés à la pile de la tâche n-2 : A5 A5 A5 A5 quatre octets associés à la pile de la tâche 1 : A5 A5 A5 A5 pile de la tâche 1 quatre octets associés à la pile de la tâche 0 : A5 A5 A5 A5 pile de la tâche 0 quatre octets associés à la pile de la tâche d'horloge : A5 A5 A5 A5 pile de la tâche d'horloge quatre octets associés à la pile de la tâche de fond : A5 A5 A5 A5 pile de la tâche de fond Au cours d'une opération d'initialisation 401, t'unité centrale 106 effectue l'initialisation des valeurs conservées dans la mémoire vive 104. Au cours d'une opération 402, t'unité centrale 106 effectue l'initialisation de tout 1'espace mémoire destiné aux piles et aux parties de mémoire associées, en y plaçant les valeurs hexadécimales A5. Puis, au cours d'une opération 403, l'exécution du programme multitâches est tancée par l'exécution d'une première tâche et la mise en oeuvre d'un séquenceur de tâches. Ensuite, à chaque début de changement de contexte 404, une routine de Hook 405 est effectuée. Cette routine 405 comporte successivement : -une opération 406 de sauvegarde des registres de l'application en entrée de routine (la tâche précédente, c'est-à-dire celle qui était active avant le début du changement de contexte) ; -une opération 407 de lecture de la position du début de la partie de mémoire qui est associée à la pile de la nouvelle tâche (celle qui sera active à la fin du changement de contexte), -une opération 408 de lecture des octets placés aux quatre premières adresses en partant, en décroissant de I'adresse obtenue au cours de l'opération 407, -un test 409 au cours duquel l'unité centrale 106 détermine si chacun des octets lus possède la valeur A5, en hexadécimal, ou non, -une opération d'arrt d'application 410 et de déclenchement d'alarme qui est effectuée lorsque le résultat du test 409 est négatif et à la suite duquel le programme attend une mise hors tension 413 de la à affranchir, et -une opération 411 de restauration des registres de l'application en sortie de routine. A la fin de la routine 405, au cours de l'opération 412, la nouvelle tâche est exécutée jusqu'au prochain changement de contexte. En variante non représentée, à la fin de l'exécution d'une tâche, on vérifie la valeur des octets de la partie de mémoire associée à la pile suivante, pour vérifier que la pile de la tâche qui vient de s'exécuter n'a pas débordé vers la pile qui lui succède. Selon une autre variante non représentée, la partie de mémoire destinée à la détection du débordement d'une pile est mitoyenne de la pile suivante, dans l'ordre d'écriture de la pile a laquelle est associée ladite partie de mémoire, sans tre mitoyenne de la pile surveillée. Selon une autre variante non représentée, la partie de mémoire destinée à la détection du débordement d'une pile est mitoyenne de la pile surveillée, sans tre mitoyenne de la pile suivante, dans l'ordre d'écriture de la pile à laquelle est associée ladite partie de mémoire. REVENDICATIONS 1. Procédé de détection de débordement d'au moins une pile (300, 302,304,306,310,312), espace mémoire réservé à une partie d'un programme d'ordinateur, caractérisé en ce qu'il comporte : -pour chaque pile surveillée, une opération d'attribution (402) de valeurs prédéterminées à une partie de mémoire (301,303,305,307,309,311, 313) qui, dans l'ordre d'écriture de ladite pile, succede à ladite pile, et -à chaque mise en oeuvre d'une partie de programme associée à ladite pile (404), une opération de lecture (407,408) de valeurs présentes dans ladite partie de mémoire et une opération de vérification de valeurs lues (409). 2. Procédé selon la revendication 1, caractérisé en ce que ledit programme est multitâche, chaque tâche étant associée à une pile et en ce que à chaque changement de contexte (404), les opérations de lecture et de vérification sont effectuées sur la partie de mémoire associée à la pile de la tâche qui va tre mise en oeuvre. 3. Procédé selon la revendication 1, caractérisé en ce que ledit programme est multitâche, chaque tâche étant associée à une pile et en ce que à chaque changement de contexte (404), les opérations de lecture et de vérification sont effectuées sur la partie de mémoire associée à la pile qui suit, dans l'ordre d'écriture des piles, la pile de la tâche dont la mise en oeuvre vient d'tre interrompue. 4. Procédé selon l'une quelconque des revendications 1 à 3, caractérisé en ce que, au cours de l'opération d'attribution (402), la partie de mémoire (305) associée à une pile (304) lui est mitoyenne. 5. Procédé selon l'une quelconque des revendications 1 à 4, caractérisé en ce que, au cours de l'opération d'attribution (402), la partie de mémoire (305) associée à une pile (304) est mitoyenne de la pile suivante (306), dans l'ordre d'écriture de la pile à laquelle est associée ladite partie de mémoire. 6. Procédé selon l'une quelconque des revendications 1 à 5, caractérisé en ce que les opérations de lecture et de vérification (407 à 409) sont effectuées par une routine (405) dudit programme. 7. Procédé selon l'une quelconque des revendications 1 à 6, caractérisées en ce que lesdites valeurs prédéterminées sont égales entre elles. 8. Procédé selon l'une quelconque des revendications 1 à 7, caractérisées en ce que lesdites valeurs prédéterminées sont différentes de toutes les valeurs prises par les codes informatiques dudit programme ou de toutes les valeurs utilisées dans les piles. 9. Procédé selon l'une quelconque des revendications 1 à 8, caractérisé en ce que lorsque, au cours de l'opération de vérification (409), il est déterminé qu'au moins une valeur lue a été modifiée, au cours d'une opération de modification de programme (410), la mise en oeuvre de chaque partie de programme relative à la pile associée à la partie de mémoire qui a été lue est suspendue. 10. Procédé selon l'une quelconque des revendications 1 à 9, caractérisé en ce que lorsque, au cours de l'opération de vérification (409), il est déterminé qu'au moins une valeur lue a été modifiée, au cours d'une opération de modification de programme (410), la mise en oeuvre de chaque partie de programme relative à la pile qui succède, dans l'ordre d'écriture des piles, à la pile associée à la partie de mémoire lue, est suspendue. 11. Dispositif (10) de détection de débordement d'au moins une pife (300,302,304,306,310,312), espace mémoire réservé à une partie d'un programme d'ordinateur, caractérisé en ce qu'il comporte un moyen de traitement (106) adapté, -pour chaque pile surveillée, à attribuer des valeurs prédéterminées à une partie de mémoire (301,303,305,307,309,311,313) qui, dans l'ordre d'écriture de ladite pile, succède à ladite pile, et -à chaque mise en oeuvre d'une partie de programme associée à ladite pile, à lire des valeurs présentes dans ladite partie de mémoire et à vérifier des valeurs lues. 12. Dispositif selon la revendication 11, caractérisé en ce que le moyen de traitement (106) est adapté à mettre en oeuvre un programme multitâche, chaque tâche étant associée à une pile et en ce que à chaque changement de contexte (404), à lire et à vérifier des valeurs de la partie de mémoire associée à la pile de la tâche qui va tre mise en oeuvre. 13. Dispositif selon la revendication 11, caractérisé en ce que le moyen de traitement (106) est adapté, d'une part, à mettre en oeuvre un programme multitâche, chaque tâche étant associée à une pile et, d'autre part, à chaque changement de contexte (404), à lire et à vérifier des valeurs de la partie de mémoire associée à la pile qui suit, dans l'ordre d'écriture des piles, la pile de la tâche dont la mise en oeuvre vient d'tre interrompue. 14. Dispositif selon l'une quelconque des revendications 11 à 13, caractérisé en ce que le moyen de traitement (106) est adapté à attribuer à une pile (304) une partie de mémoire (305) qui lui est mitoyenne. 15. Dispositif selon l'une quelconque des revendications 11 à 14, caractérisé en ce que le moyen de traitement (106) est adapté à attribuer à une pile (304) une partie de mémoire (305) qui est mitoyenne de la pile suivante (306), dans l'ordre d'écriture de la pile à laquelle est associée ladite partie de mémoire. 16. Dispositif selon l'une quelconque des revendications 11 à 15, caractérisé en ce que le moyen de traitement (106) est adapté à lire et à vérifier des valeurs de la partie de mémoire en mettant en oeuvre une routine dudit programme (405). 17. Dispositif selon l'une quelconque des revendications 11 à 16, caractérisées en ce que le moyen de traitement (106) est adapté à ce que lesdites valeurs prédéterminées soient égales entre elles. 18. Dispositif selon l'une quelconque des revendications 11 à 17, caractérisées en ce que le moyen de traitement (106) est adapté à ce que lesdites valeurs prédéterminées soient différentes de toutes les valeurs prises par les codes informatiques dudit programme ou de toutes les valeurs utilisées dans les piles. 19. Dispositif selon l'une quelconque des revendications 11 à 18, caractérisé en ce que le moyen de traitement (106) est adapté, lorsqu'il a déterminé qu'au moins une valeur lue a été modifiée, à modifier l'exécution du programme, la mise en oeuvre de chaque partie de programme relative à la pile associée à la partie de mémoire qui a été lue étant suspendue (410). 20. Dispositif selon l'une quelconque des revendications 11 à 19, caractérisé en ce que le moyen de traitement (106) est adapté, lorsqu'il a déterminé qu'au moins une valeur lue a été modifiée, à modifier l'exécution du programme, la mise en oeuvre de chaque partie de programme relative à la pile qui succède, dans l'ordre d'écriture des piles, à la pile associée à la partie de mémoire lue, étant suspendue (410). 21. Machine à affranchir (1), caractérisée en ce qu'elle comporte un dispositif selon l'une quelconque des revendications 11 à 20.