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

Autres éditeurs Discussion :

Utilisation de la mémoire


Sujet :

Autres éditeurs

  1. #1
    Invité1
    Invité(e)
    Par défaut Utilisation de la mémoire
    J'ai une petite question . . .

    Pourquoi est-ce qu'un code simple comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    # include <stdio.h>
     
    int main()
    {
    	getchar();
    	return 0;
    }
    Utilise 328k de mémoire d'après le gestionnaire des tâches de windows? . . .

    328k c'est pas beaucoup pour un programme qui ne fait rien! . . .?

    Merci beaucoup!

    Alex

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 235
    Points : 36 684
    Points
    36 684
    Par défaut bootstrap.
    un programme qui ne fait "rien" doit quand même inclure le minimum pour
    1. être activable par l'OS (lorsqu'on tape run)
    2. construire un environnement C "standard"
    3. enfin appeler la routine "main"

    Sur linux, la commande pmap permet de lister le contenu de l'espace virtuel d'un process... Malheureusement, je ne connais pas l'équivalent Windows.
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Invité1
    Invité(e)
    Par défaut
    Merci beaucoup!

    Il y a moyen de "voir" ce contenu??

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 235
    Points : 36 684
    Points
    36 684
    Par défaut
    Il y a toujours moyen... modulo outils et droits d'accès.
    Le plus simple est d'utiliser un "debuger" genre "gdb".
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par Alexandreg12 Voir le message
    Pourquoi est-ce qu'un code simple comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    # include <stdio.h>
    int main()
    {
    	getchar();
    	return 0;
    }
    Utilise 328k de mémoire d'après le gestionnaire des tâches de windows? . . .

    328k c'est pas beaucoup pour un programme qui ne fait rien! . . .?
    Bah, ça dépend de plein de choses.

    - La machine
    - Le système
    - Le compilateur et sa config (debug/release)
    - la granularité de la bibliothèque

    (chez moi, 184 k en mode debug : Vista SP1, MinGW)

    bref, il ne faut pas trop s'étonner que ça prenne de la place sur un PC moderne. On peut espérer de meilleurs performances avec un logiciel conçu pour être embarqué.
    Pas de Wi-Fi à la maison : CPL

  6. #6
    Membre confirmé Avatar de dapounet
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2007
    Messages
    469
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2007
    Messages : 469
    Points : 567
    Points
    567
    Par défaut
    Citation Envoyé par Alexandreg12 Voir le message
    J'ai une petite question . . .

    Pourquoi est-ce qu'un code simple comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    # include <stdio.h>
     
    int main()
    {
    	getchar();
    	return 0;
    }
    Utilise 328k de mémoire d'après le gestionnaire des tâches de windows? . . .

    328k c'est pas beaucoup pour un programme qui ne fait rien! . . .?

    Merci beaucoup!

    Alex
    Il faut voir ce que le gestionnaire reporte exactement, il y a sûrement de la mémoire que l'OS utilise en interne ou qui est partagée avec d'autres processus.
    :wq

  7. #7
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 360
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 360
    Points : 23 600
    Points
    23 600
    Par défaut
    Citation Envoyé par Alexandreg12 Voir le message
    Pourquoi est-ce qu'un code simple comme ça [...] Utilise 328k de mémoire d'après le gestionnaire des tâches de windows?
    C'est une excellente question, que peu de gens se posent encore aujourd'hui.

    C'est dû a beaucoup de choses, mais la première peut être le fait que ton programme est compilé en mode debug. Dans ce cas, ton exécutable contient presque la totalité du code source plus quelques autres infos pour que le debugger puisse te dire exactement où te trouves. Une fois le programme au point, toutes ces informations sont abandonnées.

    Cependant, ça ne suffit pas. Comme on l'a dit, le nombre d'interdépendances augmente à chaque génération de l'OS et élargit toujours plus la taille de l'overhead d'un programme. Dans certains cas, cela peut-être délibéré : si on a de la place, on peut s'en servir pour faire directement des optimisations. Par exemple, insérer deux kilo-octets de zéros au milieu d'un fichier pour que la prochaine page soit correctement alignée :-) Ça a l'air d'être une hérésie, comme çà, mais si ça ne dépasse pas la taille du cluster alloué sur ton disque par ton fichier, tu n'y perds rien.

    N'empêche que c'est toujours très drôle de scanner un fichier .exe et de comparer le pourcentage de zéros dans son contenu par rapport aux 255 autres valeurs qu'un octet peut prendre :-)

    Avec la mémoire virtuelle, est apparu un nouveau phénomène : un fichier qui prend de la place sur le disque n'en prend pas forcément en mémoire résidente puisque les parties réellement utiles ne seront mappées en mémoire que lorsqu'on essaiera effectivement d'y accéder (mêmes mécanismes que le swap, appliqués aux fichiers normaux). À ce stade, la répartition des données peut avoir de l'importance, tandis que la place occupée ne le sera réellement que sur le disque, dont la capacité croît avec les évolutions technologiques beaucoup plus rapidement que la mémoire vive.

    Pour autant, il y a quelques années (un peu plus d'une dizaine, tout de même), je m'étais demandé quelle était la taille du plus petit exécutable possible sous DOS/Windows. J'avais fini par faire un .COM de 2 octets contenant CD 20 (Int 20h : fonction de sortie historique sous DOS). Je m'étais quand même fait battre : quelqu'un m'avait fait remarquer que le standard imposait à un programme COM d'avoir une pile débutant par 00 00. Un RET (sur 16 bits, donc) nous ramenerait alors en début de segment, c'est à dire en plein sur le PSP ! ... lequel débutait toujours, par convention, par les codes CD 20 ! C'était bien fichu, mine de rien.

Discussions similaires

  1. Utilisation de la mémoire vive par un programme
    Par Pixcoder dans le forum C++
    Réponses: 13
    Dernier message: 25/09/2006, 13h36
  2. Réponses: 21
    Dernier message: 21/07/2006, 17h55
  3. Utilisation de la mémoire dynamique
    Par Stany dans le forum Windows
    Réponses: 17
    Dernier message: 27/04/2006, 12h39
  4. Utilisation de la mémoire
    Par jagboys dans le forum MFC
    Réponses: 1
    Dernier message: 12/11/2005, 17h30
  5. Utilisation de la mémoire vive....
    Par Neilos dans le forum Windows
    Réponses: 9
    Dernier message: 24/11/2003, 12h09

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