FR 2649507 A1 19910111 FR 8909158 A 19890707 PROCEDE D'OBSERVATION DE L'EXECUTION D'UN PROGRAMME CHARGE DANS UN SYSTEME INFORMATIQUE ET DISPOSITIF POUR LA MISE EN OEUVRE DUDIT PROCEDE. D'une façon générale, l'invention concerne le suivi de l'exécution d'un programme chargé dans un système informatique défini, par exemple, par la configuration minimale suivante: une unité centrale, une mémoire centrale, un ou plusieurs périphériques d'entrée et/ou sortie, un système d'exploitation et, au choix de l'utilisateur, un ou plusieurs programmes d'application. Depuis plusieurs années, l'utilisation de l'outil informatique évolue de plus en plus vers un mode convivial entre le système informatique et son utilisateur direct. En particulier, le mode convivial est utilisé pour assister en temps réel des utilisateurs non professionnels. Par exemple, de nombreux logiciels d'application présentent une fonction "AIDE" activée par une touche réservée du clavier. Toutefois, cette assistance est jusqu'à présent restée très limitée et très générale (sous la forme d'un répertoire ou d'un aide mémoire) par manque d'informations précises et instantanées sur l'état d'exécution du programme en service et sur le contexte d'exploitation de ce programme. Cette situation est particulièrement gênante dans le cadre d'applications o la convivialité présente une certaine importance, notamment l'autoformation ou la résolution d'incidents en cours d'exploitation. Afin d'améliorer le suivi de l'exécution d'un programme chargé dans un système informatique, l'invention propose un procédé d'observation de l'exécution de ce programme caractérisé en ce que l'on procède au relevé, en des points prédéterminés du système, d'unités d'information instantanée concernant le programme en cours d'exécution et/ou son contexte d'exploitation informatique, - de façon optionnelle, on traite certaines desdites unités d'information selon des procédures d'analyse préétablies, - on mémorise une sélection d'unités d'information, traitées et/ou non traitées, selon une grille préétablie dans une table d'état TE, - on autorise l'accès à la table d'état TE, notamment en mode lecture, à des programmes SER extérieurs au programme en cours d'exécution observe. Dans un premier mode de mise en oeuvre du procédé selon l'invention: - on associe la table d'état TE à un repère chronologique par rapport au programme en cours d'exécution observé et on maintient le contenu de la table d'état TE pendant un intervalle de temps au moins égal à une durée prédéterminée appelée cycle d'observation courant, - on remet à jour tout ou partie de la table d'état TE de façon automatique par relevés successifs à chaque nouveau cycle d'observation. Avantageusement, on garde en mémoire tout ou partie des -25 tables d'état TE correspondantes des cycles d'observation antérieurs au cycle courant, selon une structure de tables ordonnées chronologiquement TANT (TANT1 à TANTN). Ainsi donc, il est possible de mettre à la disposition d'une pluralité d'autres programmes, par exemple des logiciels de service, un historique de l'exécution en cours du programme observé. De plus, cette opération peut être réalisée de façon non perturbante pour le programme observé. En cas d'incident, les relevés effectués antérieurement à l'évènement perturbateur permettent le diagnostic et une résolution plus facile de l'incident. En effet, dans les systèmes informatiques classiques, l'apparition de l'évènement perturbateur empêche très souvent le relevé ultérieur des informations nécessaires au système pour sa remise en état opérationel. Dans un autre mode de mise en oeuvre de l'invention, on organise, dans ledit programme d'application, une zone de service travaillant en mode lecture et/ou écriture à partir de programmes extérieurs SER au programme d'application observé pour permettre l'entrée et la sortie du programme d'application d'informations ou d'instructions concernant le programme d'application observé et/ou son contexte d'exploitation informatique. Cette caractéristique est très intéressante dans les cas o il est opportun d'envoyer dans le système, notamment dans le programme d'application, des instructions dont les conditions d'exécution seront observées par l'interface pour permettre de porter un diagnostic et ensuite remettre en état opérationnel le système. Dans encore un autre mode de mise en oeuvre du procédé selon l'invention, la table d'état TE est structurée à partir de champs principaux. Avantageusement la table d'état comporte au moins un champ principal choisi parmi les champs suivants: Fonction (F0): défini par la liste des dernières fonctions exécutées par le programme, et des fonctions en cours ou en voie d'exécution avec leur contexte; Système central (SC): défini par l'état de certaines piles, registres et zones de mémoire du système central; Entrée (EN): défini par les dernières données reçues des périphériques d'entrée avec leur contexte (par exemple les tests d'erreurs et/ou de validité); Sortie (SO): défini par les dernières données émises vers les périphériques de sortie avec leur contexte; Chrono (CH): défini par des informations et/ou des analyses mettent en jeu la fonction "temps" (Vitesse d'exécution, de transfert, synchronisme, etc.); Support (SU): défini par des informations concernant le support matériel et logiciel du programme observé, notamment la configuration du système. Cette structure de rangement selon une grille préétablie est particulièrement intéressante au niveau de la facilité d'accès pour les logiciels de service. Malgré la diversité des logiciels d'application susceptibles d'être observés, cette structure autorise également la mise en place de traitements standards par les logiciels de service du système. L'invention concerne également un dispositif pour la mise en oeuvre des diverses variantes du procédé selon l'invention en association avec un système informatique présentant au moins une unité centrale, une mémoire centrale, des périphériques d'entrée et/ou de sortie, un système d'exploitation et au moins un programme d'application, ledit dispositif étant caractérisé en ce qu'il comporte de plus une interface d'observation présentant: - des moyens formant capteurs d'information instantanée, - des moyens de traitement de l'information instantanée, - des moyens de mémorisation de l'information instantanée avant ou après traitement, - des moyens de lecture de ladite information mémorisée, accessibles de l'extérieur du programme d'application en cours d'exécution observé. Avantageusement, certains' moyens formant capteurs sont associés à la mémoire centrale et/ou à des périphériques d'entrée et/ou de sortie, par exemple sous la forme de lecteurs de mémoire centrale et/ou de filtre clavier, de lecteur de mémoire écran, et/ou de lecteurs de saisie, et/ou de lecteur de mémoire tampon d'imprimante et/ou modem. De plus, dans un autre mode de réalisation de l'invention, l'interface d'observation comporte des moyens de lecture et/ou d'écriture dans ledit programme d'application observé accessibles de l'extérieur de celui-ci. L'invention est maintenant décrite en référence aux dessins ci-annexés dans lesquels: - la figure 1 représente un système informatique classique sur lequel le procédé selon l'invention est susceptible d'être mis en oeuvre, - la figure 2 représente un schéma de principe illustrant le procédé d'observation selon l'invention, - et la figure 3 représente un schéma des tables de mémoire utilisées pour la mise en oeuvre du procédé selon l'invention. Le système informatique représenté sur la figure 1 d'architecture classique de type unitaire, comporte une unité centrale U.C. 10 et une mémoire centrale 12, elle- même divisée en mémoire morte (ROM) 14 et mémoire vive (RAM) 16, convenablement reliées par un bus de communication interne 18. Le soussystème central 10, 12 du système informatique communique avec un ensemble de périphériques d'entrée et/ou de sortie UTIL accessibles à l'utilisateur-opérateur du système par une unité d'entrée/sortie I/O 20 connectée au bus 18. A titre d'exemple non limitatif ont été représentés pour constituer l'ensemble UTIL quatre périphériques-types, plus particulièrement un clavier 22 (entrée), un écran 24 (entrée/sortie), une unité de mémoire auxiliaire à disque 26 (entrée/sortie) et une imprimante 28 (sortie). De façon tout aussi classique, la gestion des périphériques d'entrée et de sortie est assurée par un ensemble de programmes appelé système d'exploitation OS convenablement chargé en mémoire vive 16 à l'aide de programmes d'initialisation résidant en mémoire morte 14. Sont également chargés en mémoire vive un ou plusieurs programmes d'application APP susceptibles d'être exécutés en mode unitaire ou en mode simultané selon les caractéristiques du système. En tout état de cause, l'ensemble des interactions INTER entre l'utilisateur, les périphériques UTIL et le programme d'application APP est géré par le système d'exploitation OS. La figure 2 montre le schéma de principe illustrant le procédé d'assistance selon l'invention. A la partie supérieure de la figure 2 on a représenté les trois blocsdiagrammes UTIL 22, OS 24 et APP 26 en tant qu'éléments du système informatique décrit ci-dessus. De plus l'ensemble des interactions entre l'utilisateur, par le biais des périphériques UTIL 22, et du programme d'application APP 26 transite par le canal INTER (représenté par la double flèche 28), partie intégrante du système d'exploitation OS 24. Selon l'invention, une interface d'observation 30 comporte des moyens formant capteurs d'unités d'information instantanée 32. Ces capteurs 32 représentés schématiquement à la figure 2, sont associés à la mémoire centrale et aux périphériques d'entrée et de sortie du système. Ils se présentent notamment sous la forme de programmes et/ou de circuits susceptibles de remplir les fonctions de lecteur de mémoire centrale, de filtre clavier, de lecteur de mémoire écran, de lecteur de souris, de lecteur de mémoire tampon d'imprimante et/ou de modem. A côté des capteurs 32, l'interface d'observation 30 comporte des moyens de traitement 34 de l'information instantanée, des moyens de mémorisation de cette information instantanée avant ou après traitement, constitués d'un circuit contrôleur 36 et d'une mémoire d'observation MO 38 de type mémoire vive, et un module de contrôle 40 comportant des moyens d'accès à la mémoire d'observation 38, notamment des moyens de lecture de cette mémoire, à partir d'autres applications chargées dans le système notamment à partir du système d'exploitation lui- même 24 et de programmes de services SER 42 tels que, par exemple, un programme d'autoformation pour l'utilisateur et un programme de résolution d'incidents. Comme représenté sur la figure 2, le module de contrôle 40 communique de façon bidirectionnelle avec le système d'exploitation 24 et les programmes de services SER 42. En particulier, il comporte également des moyens d'écriture lui permettant d'envoyer directement au programme d'application 26 des informations et/ou des instructions. La mémoire d'observation 38 est illustrée schématiquement à la figure 3. Elle comporte une table d'état TE représentative de l'état instantané de l'application en cours d'exécution dans son contexte informatique et des tables d'états antérieurs TANT (TANT1 à TANTN) dans lesquelles les informations correspondant à certaines rubriques sont rangées chronologiquement pour constituer un historique. Les tables d'état TE et TANT sont structurées en champs principaux (par exemple le champ Fonction ou F0) eux-mêmes divisés en rubriques (a, b,..i, j, k,..). Les rubriques sont repérées d'un zéro pour la table TE (par exemple ao, bo) ou d'un indice -i pour la table TANTi (par exemple a- n, b-n pour la table TANTN). Dans l'exemple ici décrit à titre non limitatif, les champs principaux suivants sont utilisés: 1/ Fonction (FO) : défini par la liste des dernières fonctions exécutées par le programme APP observé, des fonctions en cours ou en voie d'exécution avec leur contexte (par exemple les paramètres des fonctions, les adresses de retour dans le programme, les interruptions associées, etc..); 2/ Système central (SC): défini par l'état de certaines piles, registres, zones de mémoire du système central (unité centrale et mémoire centrale); 3/ Entrée (EN): défini par les dernières données reçues des périphériques d'entrée avec leur contexte (par exemple les tests d'erreur et/ou de validité); 4/ Sortie (SO): défini par les dernières données émises vers les périphériques de sortie avec leur contexte; / Chronomètre (CH): défini par des informations liées à la notion du temps (vitesse d'exécution, de transfert, de synchronisme, etc.); 6/ Support (SU): défini par des informations concernant le contexte d'exploitation informatique du programme APP observé, en particulier le support matériel et logiciel du programme APP, par exemple la configuration du système, les espaces mémoires disponibles et/ou nécessaires pour l'application APP, les valeurs des tensions en certains points du système informatique, le code d'accès utilisateur, etc.. Ainsi donc toutes les rubriques des tables correspondant chacune à une unité d'information bien définie sont rangées selon une grille préétablie dans la mémoire d'observation MO pour former les tables TE et TANT. I1 est à noter que les tables d'états antérieurs TANT ne comportent pas toutes les rubriques prévues dans la table TE mais se limitent en général aux seules rubriques pour lesquelles un historique présente un intérêt. Le contenu de ces rubriques, ou de certaines d'entre elles, pourra être lu de façon standardisé par les divers programmes de service SER sans perte de temps ni risque d'erreur d'adressage. Le chargement de la mémoire d'observation 38 est effectué de la façon suivante: Le circuit de contrôle 36, associé à un séquenceur relève, pour chaque cycle d'observation, le contenu des tampons de sortie des capteurs 32 et des tampons de sortie du circuit de traitement 34, puis procède à l'écriture des données relevées dans la table TE. De plus le circuit de contrôle 36 procède à la mise à jour des rubriques des tables TANT. Cette opération est réalisée selon deux procédures. distinctes utilisées en fonction des caractéristiques de l'information contenue dans la rubrique concernée: a) - 'dans le cas d'informations à caractère séquentiel ou continu (par exemple une valeur mesurée par un capteur) une remise à jour des rubriques concernées est effectuée de façon automatique par décalage à chaque nouveau cycle d'observation. Par exemple l'ordre d'écriture de la nouvelle valeur de la rubrique "so" concernant un compteur-chronomètre, déclenchera automatiquement le transfert préalable de la valeur contenue dans "so" vers la rubrique "s-1" de la table TANT1 et ainsi de suite jusqu'à la table TANTN. b) - dans le cas d'informations à caractère aléatoire, par exemple la fin de l'exécution d'une fonction ou d'une commande prédéterminée, la mise à jour des tables TANT ne sera effectuée qu'après détection d'une différence entre la nouvelle valeur à prendre par le contenu de la rubrique concernée (par exemple une rubrique du champ F0) et la valeur actuelle du contenu de cette rubrique. Au cours de chaque cycle d'observation et à l'issue de la phase de mise à jour, les tables TE et TANT sont accessibles en lecture par le système d'exploitation OS et par les programmes de services SER au travers d'un circuit approprié du module de contrôle 40. Toutes les informations brutes relevées par les capteurs 32 ne sont pas automatiquement entrées dans la mémoire d'observation 38. Certaines sont utilisées comme données de base par les moyens de traitement 34 qui sont susceptibles d'effectuer les fonctions les plus variées au gré du concepteur de l'interface (opérations arithmétiques, statistiques, codage/décodage, interruptions logiques, etc..). L'utilisation appropriée des moyens de traitement 34 permet d'une part de gagner de la place dans la mémoire d'observation, d'autre part de pré-traiter certaines informations brutes pour les présenter sous une forme élaborée plus facilement assimilable par les programmes de service SER. Il est intéressant de remarquer que le relevé des informations en provenance du programme d'application observé peut être effectué d'une part de façon non perturbante (l'interface d'observation étant transparente entre l'utilisateur et son application APP), d'autre part de façon continue sans attendre l'arrivée d'un évènement perturbateur (les informations nécessaires au système ou à l'utilisateur sont ainsi toujours disponibles par avance dans leur intégralité). Dans une variante du procédé selon l'invention ici décrit, on procède au chargement automatique d'une table d'adresses directement accessible de l'extérieur du programme observé et comportant les adresses instantanées de blocs concernant l'exécution du programme observé, notamment du code de la fonction en cours d'exécution et l'adresse du contenu du contexte instantané associé à ladite fonction. Cette organisation du programme d'application facilite et accélère les relevés par les capteurs 32 de l'interface 30. L'application est ainsi capable de s'expliquer elle-même et d'une façon standard sur ce qu'elle traite et dans quel contexte. Pour terminer la présentation de l'invention, nous allons donner ci-après un exemple d'observation d'une application bureautique courante, un programme de traitement de texte, par l'interface d'observation selon l'invention. Dans cet exemple d'utilisation, l'interface est associée à un programme de service constitué par un système-expert d'autoformation de l'utilisateur à cette application. Une erreur de manipulation fréquente chez les utilisateurs non professionnels de traitements de texte est l'activation involontaire ou incontrôlée de la fonction "aller à la fin du document". Il en résulte l'apparition d'un écran vide qui déroute l'utilisateur et conduit ce dernier à faire appel au système-expert d'autoformation. Dès son activation le système-expert procèdera à la lecture des rubriques de la mémoire d'observation MO dont il a besoin pour porter son diagnostic et expliquer à l'utilisateur la disparition du texte à l'écran. En particulier seront lues les rubriques correspondant: - à la dernière fonction exécutée ("aller en fin de document") - à l'état du système central et du support informatique, par exemple au niveau des horloges et des tensions (ce qui montre que le système informatique est opérationnel) - à l'état général d'exécution de l'application (absence d'indication d'erreur d'opération, par exemple: "fichier illisible" ou "insuffisance de capacité mémoire"). Le traitement de ces informations lues dans l'interface d'observation permettront au système-expert de conclure à l'activation inopinée de l'instruction "aller-à la fin du document" et d'expliquer par un message sur écran que l'utilisateur a déplacé son texte vers le bas et qu'il a ainsi atteint la fin du document. Dans le cas o l'utilisateur souhaite revenir à l'état antérieur, le système-expert recherchera dans la mémoire d'observation les dernières données frappées avant la manipulation erronée par exemple "ABCD" et s'en servira pour repositionner le curseur dans sa position antérieure. En cas de multiplicité de solutions (cas d'un texte répété) le systèmeexpert propose les diverses possibilités à l'utilisateur. D'une façon générale, grâce au procédé d'observation de l'exécution d'un programme selon l'invention et à son dispositif de mise en oeuvre, le système-expert d'autoformation est en mesure d'analyser les fonctions les plus utilisées, les fonctions utilisées à la place d'une autre, les données bien ou mal écrites, et éventuellement de donner des instructions à l'application (repositionnement du curseur, commandes d'exécution de fonctions pour démonstration, etc...), le module de contrôle travaillant dans ce dernier cas en mode écriture. L'invention est également utilisable de façon très avantageuse avec un système-expert de type d'aide au. diagnostic et à la résolution d'incidents dans le système, notamment dans le cadre de la maintenance participative. Ici encore, le système-expert de diagnostic procédera au fur et à mesure de ses besoins à la lecture dans la mémoire d'observation d'informations sur l'état global du système et son historique. Pour ce faire, il est souvent opportun de faire travailler le module de contrôle 40 en mode écriture dans le système d'exploitation 24 et/ou dans l'application et d'envoyer des informations et/ou des instructions de commande à exécuter (par exemple, commandes de tests de fonction). L'observation par l'interface 30 des conditions d'exécution de ces commandes permet de porter un diagnostic rapide et précis sur l'incident. Il est également possible d'utiliser le module de contrôle 40 en mode écriture pour envoyer les instructions de remise en l'état opérationnel du système informatique. On notera pour finir que les informations disponibles dans les tables de la mémoire 38 sont localisées à des adresses bien déterminées et sont indifféremment accessibles à plusieurs systèmes- experts ou au système d'exploitation ou à d'autres programmes de service. REVENDICATIONS 1. Procédé d'observation de l'exécution d'un programme chargé dans un système informatique du type comportant la configuration minimale suivante: une unité centrale, une mémoire centrale, un ou plusieurs périphériques d'entrée et/ou de sortie, un système d'exploitation et de façon optionnelle un ou plusieurs programmes d'application, le procédé étant caractérisé en ce que: - on procède au relevé, en des points prédéterminés du système, d'unités d'information instantanée concernant le programme en cours d'exécution et/ou son contexte d'exploitation informatique, - de façon optionnelle on traite certaines desdites unités d'information selon des procédures d'analyse préétablies, - on mémorise une sélection d'unités d'information, traitées et/ou non traitées, selon une grille préétablie dans une table d'état TE, - on autorise l'accès à la table d'état TE, notamment en mode lecture, à des programmes SER extérieurs au programme en cours d'exécution observé. 2. Procédé selon la revendication 1, caractérisé en ce que: - on associe la table d'état TE à un repère chronologique par rapport au programme en cours d'exécution observé et on maintient le contenu de la table d'état TE pendant un intervalle de temps au moins égal à une durée prédéterminée appelé cycle d'observation courant, - on remet à jour tout ou partie de la table d'état TE de façon automatique par relevés successifs à chaque nouveau cycle d'observation. 3. Procédé selon la revendication 2, caractérisé en ce que: - on garde en mémoire tout ou partie des tables d'état TE correspondantes aux cycles d'observation antérieurs au cycle courant, selon une structure de tables d'états antérieurs ordonnées chronologiquement (TANT1 à TANTN). 4. Procédé selon la revendication 3, caractérisé en ce que l'on réalise le chargement automatique des tables (TANT1 à TANTN) par décalage à chaque nouveau cycle d'observation. 5. Procédé selon l'une des revendications précédentes caractérisé en ce que la table d'état TE est structurée à partir des champs principaux. 6. Procédé selon la revendication 5, caractérisé en ce que la table d'état TE comporte au moins un champ principal choisi parmi les champs suivants: - Fonction (FO): défini par la liste des dernières fonctions exécutées par le programme et des fonctions en - cours ou en voie d'exécution et leur contexte; - Système central (SC): défini par l'état de certaines piles, registres et zones de mémoire du système central; - Entrée (EN):défini par les dernières données reçues des périphériques d'entrée avec leur contexte (par exemple les tests d'erreurs et/ou de validité); - Sortie (SO): défini par les dernières données émises vers les périphériques de sortie avec leur contexte; - Chrono (CH): défini par des informations et/ou des analyses mettant en jeu la fonction temps (vitesse d'exécution, de transfert, synchronisme, etc); - Support (SU): défini par des informations concernant le support matériel et logiciel du programme observé, notamment la configuration du système informatique. 7. Procédé selon l'une des revendications précédentes, caractérisé en ce qu'il est mis en oeuvre au niveau du système d'exploitation du système informatique de façon transparente pour le programme observé. 8. Procédé selon l'une des revendications précédentes, caractérisé en ce que l'on procède, à partir du programme d'application observé, au chargement automatique d'une table d'adresses directement accessible de l'extérieur dudit programme et comportant les adresses instantanées de blocs d'information concernant l'exécution du programme observé, notamment l'adresse du code de la fonction en cours d'exécution et l'adresse du contenu du contexte instantané associé à ladite fonction. 9. Procédé selon l'une des revendications précédentes, caractérisé en ce que l'on organise dans ledit programme d'application une zone de service travaillant en mode lecture et/ou écriture à partir de programmes extérieurs SER au programme d'application observé pour permettre l'entrée et la sortie du programme d'application d'informations ou d'instructions concernant le programme d'application observé et/ou son contexte d'exploitation informatique. 10. Dispositif pour mettre en oeuvre le procédé défini selon l'une des revendications précédentes en association avec un système informatique présentant au moins une unité centrale (10), une mémoire centrale (12), des périphériques d'entrée et/ou de sortie (22) , un système d'exploitation (OS) et au moins un programme d'application (APP) en cours d'exécution, ledit dispositif étant caractérisé en ce qu'il comporte de plus une interface d'observation (30) présentant: - des moyens formant capteurs (32) d'information instantanée, - des moyens de traitement (34) de l'information instantanée, - des moyens de mémorisation (38) de l'information instantanée avant ou après traitement, - des moyens de lecture (40) de ladite information mémorisée accessibles de l'extérieur du programme d'application en cours d'exécution observé. 11. Dispositif selon la revendication 10, caractérisé en ce que certains des moyens formant capteurs (32) sont associés à la mémoire centrale et/ou à certains périphériques d'entrée et de sortie du système. 12. Dispositif selon la revendication 11, caractérisé en ce que lesdits moyens formant capteurs (32) se présentent sous la forme de lecteur de mémoire centrale et/ou de filtre clavier et/ou de lecteur de mémoire écran et/ou de lecteur de souris et/ou de lecteur de mémoire tampon d'imprimante et/ou de modem. 13. Dispositif selon l'une des revendications 10 à 12, caractérisé en ce que l'interface d'observation comporte des moyens de lecture et/ou d'écriture (40) dans ledit programme d'application observé accessibles de l'extérieur de celui-ci.