Correction tp8 gestion de la mémoire- systèmes d’exploitatio

Projet DVD-MIAGE 2010 : Correction du TP n°8 sur la gestion de la mémoire

1) Explication des informations affichées par le programme

L'exécution du programme gestion_mémoire affiche un PID ainsi qu'une série d'adresses mémoire. Sous Linux, les utilisateurs peuvent accéder à de nombreuses informations concernant les processus via le répertoire /proc/PID_du_processus.

Parmi ces fichiers, on trouve notamment maps, qui liste les régions mémoire associées au processus. Chaque région contient les éléments suivants :

  • L'espace adressable
  • Les protections (lecture, écriture, exécution)
  • L'offset (décalage)
  • Le numéro du périphérique (majeur:mineur)
  • Un numéro d'inode

On retrouve également le fichier statm, qui fournit des statistiques sur l'utilisation de la mémoire par le processus.

Exemple 1 : Exécution du programme

Voici les résultats affichés lors de l'exécution du programme avec le PID 19278 :

  • PID = 19278
  • adresse de une_globale = 80c0208
  • adresse de une_autre = 80be08c
  • adresse de une_locale = bff60ae0
  • adresse de alloc = b75fa008
  • adresse de main = 80481f0
  • adresse de printf = 80492b0

Voici les régions mémoire associées à ce PID :

  • 08048000-080be000 r-xp 00000000 08:06 703954 /home/queudet-a/Documents/gestion_mémoire
  • 080be000-080bf000 rw-p 00076000 08:06 703954 /home/queudet-a/Documents/gestion_mémoire
  • 080bf000-080e3000 rw-p 080bf000 00:00 0
  • [heap] b75f9000-b7ffb000 rw-p b75f9000 00:00 0
  • [vdso] bff4d000-bff62000 rw-p bffeb000 00:00 0
  • [stack] bff60000-bff62000

Interprétation des régions :

  • 08048000-080be000 : Segment de texte (.text) et données en lecture seule
  • 080be000-080bf000 : Données initialisées (.data) et début des données non-initialisées (.bss)
  • 080bf000-080e3000 : Fin de .bss et espace mémoire alloué pour le tas (heap)
  • [heap] b75f9000-b7ffb000 : Espace mémoire alloué dynamiquement (tas)
  • [vdso] bff4d000-bff62000 : Espace mémoire virtuel pour les appels système (vdso)
  • [stack] bff60000-bff62000 : Pile d'exécution (stack)

Exemple 2 : Exécution du programme avec un autre PID

Voici les résultats affichés lors de l'exécution avec le PID 19341 :

  • PID = 19341
  • adresse de une_globale = 804980c
  • adresse de une_autre = 8049800
  • adresse de une_locale = bfee0c20
  • adresse de alloc = b7393008
  • adresse de main = 8048444
  • adresse de printf = 8048398

Voici les régions mémoire associées à ce PID :

  • 08048000-08049000 r-xp 00000000 08:06 703954 /home/queudet-a/Documents/gestion_mémoire
  • 08049000-0804a000 rw-p 00000000 08:06 703954 /home/queudet-a/Documents/gestion_mémoire
  • b7393000-b7d95000 rw-p b7393000 00:00 0
  • b7d95000-b7ee0fff r-xp 00000000 08:05 169844 /lib/tls/i686/cmov/libc-2.7.so
  • b7ee1000-b7ee4000 rw-p b7ee1000 00:00 0
  • b7ef1000-b7ef4000 rw-p b7ef1000 00:00 0
  • b7ef4000-b7ef5000 r-xp b7ef4000 00:00 0
  • [vdso] b7ef5000-b7f0f000 r-xp 00000000 08:05 1114565 /lib/ld-2.7.so
  • b7f0f000-b7f11000 rw-p 00019000 08:05 1114565 /lib/ld-2.7.so
  • bfece000-bfee3000 rw-p bffeb000 00:00 0

Interprétation des régions :

  • 08048000-08049000 : Segment de texte (.text) et données en lecture seule
  • 08049000-08049fff : Données initialisées (.data) et début des données non-initialisées (.bss)
  • b7393000-b7d94fff : Fin de .bss et espace mémoire alloué pour le tas (heap)
  • b7d95000-b7ee0fff : Librairie dynamique standard du langage C
  • b7ef5000-b7f10fff : Chargeur initial des librairies dynamiques
  • bfece000-bfee2fff : Pile d'exécution (stack)

Foire aux Questions (FAQ)

1. Qu'est-ce qu'un PID dans Linux ?

Le PID (Process Identifier) est un identifiant unique attribué à chaque processus en cours d'exécution par le système Linux. Il permet de distinguer et de gérer individuellement chaque processus.

2. À quoi sert le fichier maps sous Linux ?

Le fichier maps dans le répertoire /proc de Linux liste les régions mémoire associées à un processus particulier. Cela inclut les segments de code, de données, la pile, et le tas.

3. Quelles sont les différences entre les segments .data et .bss ?

Le segment .data contient les variables initialisées avec des valeurs spécifiques, tandis que le segment .bss contient les variables non-initialisées qui sont automatiquement mises à zéro par le système lors du démarrage du programme.

Cela peut vous intéresser :

Partagez vos remarques, questions , propositions d'amélioration ou d'autres cours à ajouter dans notre site

Enregistrer un commentaire (0)
Plus récente Plus ancienne