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

Bibliothèque standard C Discussion :

Organisation en mémoire d'un processus


Sujet :

Bibliothèque standard C

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2003
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 67
    Points : 50
    Points
    50
    Par défaut Organisation en mémoire d'un processus
    Bonjour

    J'ai posé la question sur le forum linuxquestions. Je me permets de vous la poster telle quelle.

    I'm writing a software in witch I have to deal with the stack and data segments. I'd like to know if there is a way (and a good one preferably) to have information about the process organization in memory : (stack, data, code)'s segment start adresses. These information could also come from the process itlself.
    By the way, I've found that /proc/procid/maps gives some information about stack.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    bfd25000-bfd3a000 rw-p bffeb000 00:00 0          [stack]
    Are these the start and end adresses of the stack segment ?

    Merci d'avance.

  2. #2
    Membre émérite Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Points : 2 280
    Points
    2 280
    Par défaut
    Citation Envoyé par peaceinpal Voir le message
    Are these the start and end adresses of the stack segment ?
    Oui!

  3. #3
    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
    Question indiscrète : c'est pour faire quoi votre appli ?

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Août 2003
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 67
    Points : 50
    Points
    50
    Par défaut
    Ce n'est pas du tout indiscret.
    C'est pour la migration d'un processus d'une machine à une autre en mode utilisateur. J'ai donc besoin de sauvegarder le contexte d'un process puis de le restaurer (checkpoint) sur la machine hôte.
    J'ai vu qu'il y'avait des implémentations de checkpointing (ckpt, esky, ou condor(migration aussi)) mais soit ils utilisent un coredump (ce que je ne souhaite pas pour mon appli) pour avoir ces informations soit des astuces du genre déclarer une variable globale non itilisée en début de programme (il me semble) et son adresse sera celle du début du data segment. Je voulais savoir s'il y'avait un moyen plus propre de trouver cette information et sans faire de l'assembleur.

  5. #5
    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
    Je ne vois pas trop comment faire ça en mode utilisateur...

    Sinon, il faut aussi penser à sauvegarder les registres non ?

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Août 2003
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 67
    Points : 50
    Points
    50
    Par défaut
    oui, aussi.
    En fait il y'a pas mal de limites quand on est en user mode notemment pour tout ce qui est relation entre père et fils, gestion du temps, sockets, fichiers... c'est généralement destiné aux programmes de calculs qui n'utiliseraient pas ce genre de choses.
    Concernant les registres, un setjmp et un longjmp font l'affaire. Entre les deux, il faut d'abord restituer tout le contexte stack, data et code du proc avant de faire le longjmp.
    C dommage que le noyau ne renseigne pas ce genre d'informations. Au pire des cas, j'utiliserais soit le coredump soit l'astuce de la var. globale....
    Pour plus d'informations sur le sujet, voici une implémentation existente du checkpointing avec en bas de page une liste d'implémentation plus ou moins similaires.
    http://www.geocities.com/asimshankar...ointing/?20087
    Merci quand même.

Discussions similaires

  1. fuite mémoire dans un processus
    Par ryadh.naouar dans le forum POSIX
    Réponses: 4
    Dernier message: 09/05/2007, 12h53
  2. Un logiciel qui suit l'occupation de la mémoire d'un processus donné
    Par Interruption13h dans le forum Windows XP
    Réponses: 5
    Dernier message: 02/04/2007, 04h33
  3. problème de mémoire pour le processus w3wp.exe
    Par nasser.h dans le forum IIS
    Réponses: 4
    Dernier message: 07/02/2007, 15h51
  4. Partage de blocs mémoire entre 2 processus
    Par rolkA dans le forum Windows
    Réponses: 6
    Dernier message: 18/11/2003, 20h08

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