Sauvegarde de l'état d'exécution
Répondre à la discussion
Affichage des résultats 1 à 18 sur 18

Sauvegarde de l'état d'exécution



  1. #1
    jameswell

    Sauvegarde de l'état d'exécution


    ------

    Bonjour,
    Quelqu'un sait-il s'il est possible, dans les langages de base (c++, ada,...) d'écrire des programmes dont on peut sauvegarder l'état de l'exécution afin de pouvoir interrompre cette dernière et la reprendre plus tard au même endroit, sans perdre de données ?
    Merci d'avance

    -----

  2. #2
    whoami

    Re : Sauvegarde de l'état d'exécution

    Bonjour,

    Je vais répondre strictement à la question : oui, c'est possible.

  3. #3
    azad

    Re : Sauvegarde de l'état d'exécution

    Bonsoir
    Oui, c'est tout à fait possible, surtout si l'interruption se produit quand l'utilisateur le souhaite. Il suffit que la commande d'interruption génère un branchement vers une routine où seraient sauvegardées toutes les variables en cours (globales ou éventuellement certaines locales) au moment de l'interruption. On crée un fichier contenant ces variables et c'est tout, car bien entendu toutes les routines en cours seraient exécutées entièrement. Ce ne serait pas du tout pareil si l'interruption était aléatoire, car alors, en plus des variables, il faudrait aussi sauvegarder l'état du micro-processeur ainsi que le contenu de la pile des retours, pour revenir aux conditions régnants quand l'interruption a eu lieu. Et cela ne peut se faire qu'en assembleur.
    Si ce fameux fichier existe, il est lu au démarrage du programme principal et ce dernier se branche là où il faut. S'il n'existe pas, on démarre normalement.
    Dernière modification par azad ; 22/05/2013 à 00h09.

  4. #4
    jameswell

    Re : Sauvegarde de l'état d'exécution

    Génial, je ne pensais pas que c'était possible et ça m'aide énormément. Comment s'y prend-on pour créer ce fameux fichier et pour qu'il soit consulté lors de l'exécution ? Je code bien mais je suis débutant concernant les bibliothèques, fichiers etc autour du programme.

  5. A voir en vidéo sur Futura
  6. #5
    whoami

    Re : Sauvegarde de l'état d'exécution

    Bonjour,

    Alors, tu prends un cours/tuto, et tu apprends à gérer les fichiers.

  7. #6
    Jack
    Modérateur

    Re : Sauvegarde de l'état d'exécution

    A mon avis, le plus dur va être de générer et traiter l'interruption. C'est du low level.

    A+

  8. #7
    jameswell

    Re : Sauvegarde de l'état d'exécution

    Citation Envoyé par whoami Voir le message
    Bonjour,

    Alors, tu prends un cours/tuto, et tu apprends à gérer les fichiers.
    Rates sont les tutos qui parlent de ça ! Tu en aurais un à me conseiller ?

  9. #8
    azad

    Re : Sauvegarde de l'état d'exécution

    Bonsoir,
    Tout à fait Jack, mais il me semble que jameswell souhaite interrompre son programme quand il le désire, pour pouvoir le relancer plus tard au point où il était. Dans ce cas il ne s'agit pas d' une interruption au sens propre du terme, mais d'une reprise avec les résultats collectés précédemment.
    On n'a donc pas à se préoccuper de l'état de la pile, des registres d'états ou du pointeur programme. C'est du moins ce que je pense, il faudrait en savoir un peu plus sur le logiciel en question et sur la nature des données qu'il traite.
    Ainsi on crée un fichier contenant les données traitées précédemment uniquement si une demande d'interruption est formulée explicitement. Ce fichier est lu au re-démarrage et sert à affecter aux variables des valeurs initiales différentes de celle qu'elles auraient en cas de démarrage normal (c'est à dire sans que l'on ait demandé une interruption)
    Je verrais bien quelque chose dans le genre
    If "file" exist
    …….
    initialisation et affectation des variables
    par les valeurs contenues dans "file"
    ………
    destruction du fichier s'il a traité correctement
    else
    initialisation, sans affectation particulière
    end

    C'est après tout ainsi que l'on procède quand on veut reprendre un jeu au niveau auquel on l'a quitté.
    Dernière modification par azad ; 22/05/2013 à 21h09.

  10. #9
    azad

    Re : Sauvegarde de l'état d'exécution

    hé oui, jameswell, il faudrait nous en dire un peu plus sur la structure (pas sur la finalité) de ton programme.
    Si par exemple tu traites des données venues de l'extérieur via des capteurs et que ces données sont lues de façon cycliques dans une ou plusieurs boucles, il faudra sans doute sauvegarder les valeurs des compteurs de ces différentes boucles (variables locales, en principe) pour que tes boucles se repositionnent au bon endroit. Mais tu peux aussi attendre que toutes tes boucles soient terminées avant d' arrêter le programme. C'est un choix que toi seul peut faire.

  11. #10
    Jack
    Modérateur

    Re : Sauvegarde de l'état d'exécution

    Tu as raison. Il manque une définition précise de ce qu'est l'état attendu du programme.

    A+

  12. #11
    jameswell

    Re : Sauvegarde de l'état d'exécution

    Citation Envoyé par azad Voir le message
    If "file" exist
    …….
    initialisation et affectation des variables
    par les valeurs contenues dans "file"
    ………
    destruction du fichier s'il a traité correctement
    else
    initialisation, sans affectation particulière
    end

    C'est après tout ainsi que l'on procède quand on veut reprendre un jeu au niveau auquel on l'a quitté.
    C'est exactement de ça dont j'ai besoin pour commencer à comprendre de quoi ça parle


    Citation Envoyé par azad Voir le message
    hé oui, jameswell, il faudrait nous en dire un peu plus sur la structure (pas sur la finalité) de ton programme.
    Bon pour vous expliquer un peu plus en détail, je voulais savoir s'il était possible de créer des programmes pour suivre par exemple une compétition de foot où le programme nous demanderait d'entrer les rencontres initiales et où il suffirait ensuite de rentrer les scores pour que les rencontres qui en découlent soient calculées par le programme. Sauf que cela se déroule souvent sur plusieurs semaines ce qui nous obligerait à réécrire tous les scores de tous les tours déjà joués pour faire afficher les rencontres du tour suivant. Et donc, comme il n'est pas question de laisser un ordinateur allumé pendant plusieurs semaines avec le programme en exécution, il faut bien pouvoir le "suspendre". Voyez-vous ?

  13. #12
    Jack
    Modérateur

    Re : Sauvegarde de l'état d'exécution

    Citation Envoyé par jameswell Voir le message
    Bon pour vous expliquer un peu plus en détail, je voulais savoir s'il était possible de créer des programmes pour suivre par exemple une compétition de foot où le programme nous demanderait d'entrer les rencontres initiales et où il suffirait ensuite de rentrer les scores pour que les rencontres qui en découlent soient calculées par le programme. Sauf que cela se déroule souvent sur plusieurs semaines ce qui nous obligerait à réécrire tous les scores de tous les tours déjà joués pour faire afficher les rencontres du tour suivant. Et donc, comme il n'est pas question de laisser un ordinateur allumé pendant plusieurs semaines avec le programme en exécution, il faut bien pouvoir le "suspendre". Voyez-vous ?
    C'est donc beaucoup plus simple que je ne pensais. En fait il ne faut pas sauver l'état du programme, mais certaine données.

    Pratiquement tous les langages permettent la gestion de fichiers, notamment le C++ que tu as cité.

    A+

  14. #13
    jameswell

    Re : Sauvegarde de l'état d'exécution

    Ah tant mieux ! Par contre je n'ai aucune idée de comment faire, faut-il télécharger quelque chose ?

  15. #14
    Jack
    Modérateur

    Re : Sauvegarde de l'état d'exécution

    Non, ces fonctions font partie de la bibliothèque standard. Il ne te reste plus qu'à faire le programme.

    A+

  16. #15
    Paraboloide_Hyperbolique

    Re : Sauvegarde de l'état d'exécution

    Bonsoir,

    Pour compléter la réponse de Jack, en C++ les bibliothèques en question sont décrites en détail ici:

    http://www.cplusplus.com/search.do?q=ifstream
    http://www.cplusplus.com/reference/f...m/?kw=ofstream

  17. #16
    Jack
    Modérateur

    Re : Sauvegarde de l'état d'exécution

    Bonne pioche, c'est un de mes sites de référence.

    A+

  18. #17
    Paraboloide_Hyperbolique

    Re : Sauvegarde de l'état d'exécution

    C'est aussi l'un de mes sites de référence quand j'ai besoin d'obtenir rapidement les spécifications concernant une classe ou l'autre.
    C'est pourquoi j'en ais donné le lien.

  19. #18
    ProgVal

    Re : Sauvegarde de l'état d'exécution

    Bonjour,

    J'ajoute que sous les systèmes d'exploitation POSIX (c'est à dire à peu près tous, sauf Windows), il est possible de mettre n'importe quel processus en pause et de le reprendre, respectivement en utilisant les signaux SIGSTOP et SIGCONT.
    Il ne faut cependant pas arrêter l'ordinateur entre les deux puisque les informations restent en RAM (ou dans le SWAP).

    Valentin

Discussions similaires

  1. prob d'exécution
    Par mina90 dans le forum Programmation et langages, Algorithmique
    Réponses: 4
    Dernier message: 16/11/2012, 00h41
  2. Diplôme d'état, diplome reconnu par l'état, titre homologué par l'état ?
    Par invite75931d9f dans le forum Orientation après le BAC
    Réponses: 1
    Dernier message: 02/03/2011, 16h47
  3. sauvegarde de l'etat de serveur
    Par invitead16928d dans le forum Internet - Réseau - Sécurité générale
    Réponses: 6
    Dernier message: 14/01/2010, 11h36
  4. peut-on passer de l'etat solide à l'etat gazeuze?
    Par invite56897546 dans le forum Physique
    Réponses: 4
    Dernier message: 30/06/2009, 00h08
  5. Réponses: 8
    Dernier message: 09/01/2007, 08h31