IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Administration système Discussion :

gestion de la mémoire


Sujet :

Administration système

  1. #1
    Membre du Club
    Inscrit en
    Juin 2007
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 106
    Points : 47
    Points
    47
    Par défaut gestion de la mémoire
    Bonjour,
    je souhaite récuperer quelques valeurs de mon programme en C qui tourne sous Ubuntu.
    Ce que je veux, c'est m'en resservir plus tard, lors d'une autre application(enfin dès que je coupe le programme et que je le rallume).
    Je voudrais faire une sorte d'enregistrement dans un fichier texte, mais l'ouverture et l'ecriture dans un fichier est trop long pour ce que je veux faire.
    Quelqu'un a une idée pour savoir commet je dois proceder?

  2. #2
    Membre confirmé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Août 2007
    Messages
    509
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Août 2007
    Messages : 509
    Points : 622
    Points
    622
    Par défaut
    Citation Envoyé par Sylar44 Voir le message
    Bonjour,
    je souhaite récuperer quelques valeurs de mon programme en C qui tourne sous Ubuntu.
    Ce que je veux, c'est m'en resservir plus tard, lors d'une autre application(enfin dès que je coupe le programme et que je le rallume).
    Je voudrais faire une sorte d'enregistrement dans un fichier texte, mais l'ouverture et l'ecriture dans un fichier est trop long pour ce que je veux faire.
    Quelqu'un a une idée pour savoir commet je dois proceder?

  3. #3
    Membre du Club
    Inscrit en
    Juin 2007
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 106
    Points : 47
    Points
    47
    Par défaut
    oui ca vous parait bizarre aussi
    autant enregistrer ces valeurs en cas d'erreurs ou en cas de fermeture, c'est ce qu'il y a de mieux dans la limite du possible non?

  4. #4
    Membre éclairé Avatar de valefor
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    711
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 711
    Points : 790
    Points
    790
    Par défaut
    Que sont ces valeurs ?

    Des variables représentant l'état du programme ?
    Un dump mémoire ?
    Autres choses ?

  5. #5
    Membre du Club
    Inscrit en
    Juin 2007
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 106
    Points : 47
    Points
    47
    Par défaut
    oui c'est ca des valeurs qui représente l'état du programme mais aussi de l'automate associé.

  6. #6
    Membre éclairé Avatar de valefor
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    711
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 711
    Points : 790
    Points
    790
    Par défaut
    Tu as donc une structure que tu peux sauver en l'écrivant dans un fichier de conf (binaire, texte, xml, etc...). Ce fichier sera rechargé au démarrage de ton appli.

    C'est le même principe d'une sauvegarde de jeux que tu veux ?

  7. #7
    Membre du Club
    Inscrit en
    Juin 2007
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 106
    Points : 47
    Points
    47
    Par défaut
    oui c'est ca en quelques sortes

    le problème c'est que le temps d'ecriture et de lecture doivent être rapide
    en millisecondes au maximum

    sinon je charge les données qu'en quand il y a une panne sur l'automate et que je change un bout de programme mais en cas de coupure de courant ca fait mal

  8. #8
    Membre éclairé Avatar de valefor
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    711
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 711
    Points : 790
    Points
    790
    Par défaut
    Effectivement, en cas de coupure...

    Une solution serait de régulièrement écrire ton état sur le disque. Tu perds juste ce qui s'est passé dans ton intervalle d'écriture.

    Ou si tes données constituent un état qui ne change pas trop souvent, tu écris à chaque changement d'état.

    A réfléchir.

  9. #9
    Membre du Club
    Inscrit en
    Juin 2007
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 106
    Points : 47
    Points
    47
    Par défaut
    oui mais là si j'écris pendant que l'atomate tourne, je ne peux pas faire tout ce que je veux faire car je dois pouvoir le suivre( si je peux accéder à la dizaine de micro-secondes ca serait bien) et si j'écris dans un fichier pour tout sauver c'est trop long pour moi

  10. #10
    Membre expérimenté
    Avatar de FloMo
    Homme Profil pro
    Freelance iOS
    Inscrit en
    Juillet 2004
    Messages
    726
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Freelance iOS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 726
    Points : 1 511
    Points
    1 511
    Par défaut
    Théoriquement, si tu enregistres tes données via des flux ( fopen, fclose ) , tes accès seront très rapides ( je parcours un fichier indexé de 2200 x 2Mo en moins de 2s ) .
    Il te suffit alors de vider le tampon de temps en temps pour t'assurer que les données sont écrites.
    "Il est plus facile de décomposer un problème en ses éléments, forcément plus simples, que de le traiter en sa totalité." (R. Descartes)

    Freelance iOS

  11. #11
    Membre éclairé Avatar de valefor
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    711
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 711
    Points : 790
    Points
    790
    Par défaut
    Tu ne peux pas faire un thread basse priorité qui a accès au disque pour la sauvegarde ?

  12. #12
    Membre du Club
    Inscrit en
    Juin 2007
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 106
    Points : 47
    Points
    47
    Par défaut
    et on fait ca comment valefor?

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2008
    Messages : 69
    Points : 62
    Points
    62

  14. #14
    Membre du Club
    Inscrit en
    Juin 2007
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 106
    Points : 47
    Points
    47
    Par défaut
    Ben je trouve pas ca terrible, surtout si je dois appeler des programmes tout les n microsecondes(voir tout les n millisecondes)

  15. #15
    Membre confirmé
    Homme Profil pro
    Technophile Web
    Inscrit en
    Mai 2007
    Messages
    930
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Technophile Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 930
    Points : 467
    Points
    467
    Par défaut
    Citation Envoyé par Sylar44 Voir le message
    Ben je trouve pas ca terrible, surtout si je dois appeler des programmes tout les n microsecondes(voir tout les n millisecondes)
    ben tu fait un programme multithread

    venant du java, je ne sais pas trop si tu peux le faire en C (sans le ++)
    à mon avi faire trois thread
    1 => programme
    2 => sauvegarde (tu peux l'ordmire et le réveiller)
    3 => contact avec les autres appli
    http://aldorande.miniville.fr/ind
    Fedora 8, eclipse 3.3 sur x86_64
    --------------
    Colorer votre code php

  16. #16
    Membre du Club
    Inscrit en
    Juin 2007
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 106
    Points : 47
    Points
    47
    Par défaut
    oui mais le problème c'est que mon programme tourne sur un automate
    si je fais un enregistrement en me servant de threads, le programme risque d'être completement déphasé avec ce qui arrive sur l'automate(un enregistrement dans un fichier c'est trop long, plursieurs millisecondes), il doit bien avoir une autre solution, comment les constructeurs de logiciels automatiques font? je pense pas que c'est comme ca, en tout cas.

  17. #17
    Membre éclairé Avatar de valefor
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    711
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 711
    Points : 790
    Points
    790
    Par défaut
    Pour avoir travaillé sur un projet dans lequel on a eu ce genre de problème, je peux te dire que la solution des threads n'est pas délirante.

    Dans notre cas, on écrivait régulièrement dans une EEPROM. Ce n'est pas un fichier, mais, c'est pareil, cela demandait des "accès lents". Un thread avait donc été fait pour désynchroniser les accès à l'EEPROM. Périodiquement (disons T secondes), on écrivait l'état de l'appareil en eeprom. En cas de coupure, on perdait au maximum T secondes.
    Bien sûr, suivant le média sur lequel tu écris, il faut mettre en place un mécanisme de détection de corruption.

  18. #18
    Membre du Club
    Inscrit en
    Juin 2007
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 106
    Points : 47
    Points
    47
    Par défaut
    voilà, c'est ca que je veux utiliser
    une EEPROM ca à vraiment l'air bien

    Il me reste plus qu'à savoir comment l'utiliser

    Merci valefor

  19. #19
    Membre éprouvé
    Avatar de Celelibi
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 087
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 087
    Points : 1 122
    Points
    1 122
    Par défaut
    Je ne comprend pas bien pourquoi c'est si dérangeant de perdre une centaine de millième de seconde pour écrire sur disque. Si tu ne fais ça que toutes les secondes, voire, toutes les 10 secondes, le temps d'écriture sera vraiment insignifiant par rapport au temps de calcul.
    Si tu veux vraiment ne pas devoir bloquer le temps de l'écriture, tu place l'écriture dans un thread. Malheureusement ça nécessite d'utiliser des mutex si tu ne veux pas écrire des choses corrompues sur le disque, et les mutex sont assez lents...

    Sylar44, je ne suis pas sûr que tu gagnerai du temps à écrire sur une EEPROM au lieu du disque dur.
    Les vaches ne peuvent PAS voler, quoi qu'elles aient pu vous raconter.

  20. #20
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2008
    Messages : 145
    Points : 170
    Points
    170
    Par défaut
    shmget() devrait faire l'affaire ;-)

Discussions similaires

  1. Réponses: 17
    Dernier message: 02/02/2006, 12h03
  2. gestion de la mémoire
    Par moldavi dans le forum C++
    Réponses: 17
    Dernier message: 04/02/2005, 23h18
  3. Réponses: 11
    Dernier message: 26/12/2004, 22h50
  4. Gestion de la mémoire entre plusieurs DLL
    Par Laurent Gomila dans le forum C++
    Réponses: 7
    Dernier message: 27/07/2004, 15h28
  5. Gestion des variables - mémoire ?
    Par RIVOLLET dans le forum Langage
    Réponses: 4
    Dernier message: 26/10/2002, 12h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo