Tp n°8 : gestion de la mémoire - systèmes d’exploitation - t

Projet DVD-MIAGE 2010 : TP n°8 – Gestion de la mémoire virtuelle

Objectif : Comprendre les régions de la mémoire virtuelle d'un processus

La mémoire virtuelle d'un processus sous un système UNIX est organisée en plusieurs régions contiguës. Chaque région est associée à des protections spécifiques (lecture, écriture, exécution) et à un rôle distinct (code, données, pile, mémoire allouée dynamiquement, etc.). Ce TP vise à visualiser et analyser ces régions.

Travail à effectuer

  1. Commencez par compiler le programme suivant avec l'option -static :
    #include <sys/types.h>#include <unistd.h>#include <stdio.h>#include <stdlib.h>int une_globale;int une_autre = 4;char *alloc;int main() {int une_locale;alloc = malloc(1024L * 1024L * 10L); /* Allocation de 10 Mo */printf("PID = %d\n", getpid());printf("Adresse de une_globale = %8lx\n", (unsigned long)&une_globale);printf("Adresse de une_autre_globale = %8lx\n", (unsigned long)&une_autre);printf("Adresse de une_locale = %8lx\n", (unsigned long)&une_locale);printf("Adresse de alloc = %8lx\n", (unsigned long)alloc);printf("Adresse de main = %8lx\n", (unsigned long)&main);printf("Adresse de printf = %8lx\n", (unsigned long)&printf);/* Affichage de la carte mémoire */sprintf(alloc, "cat /proc/%d/maps", getpid());system(alloc);return 0;}
  2. Comparez les espaces adressables de chaque région affichés dans la carte mémoire avec les adresses fournies par le programme. Expliquez le rôle de chaque région en fonction des résultats observés.
  3. Répétez l'exercice en compilant le programme sans l'option -static.

Remarque

Sous UNIX, chaque fichier sur disque est identifié par un numéro appelé i-node. Ce numéro peut être visualisé avec l'option -i de la commande ls.

Systèmes d'exploitation

A. Queuedet

Informations sur les systèmes d'exploitation et leur gestion de la mémoire virtuelle.

FAQ

1. Qu'est-ce qu'une région de mémoire virtuelle ?

Une région de mémoire virtuelle est une portion contiguë de l'espace mémoire alloué à un processus. Elle peut contenir du code, des données statiques ou dynamiques, la pile, ou d'autres segments protégés selon leur usage.

2. À quoi sert l'option -static lors de la compilation ?

L'option -static force le lien statique des bibliothèques, ce qui signifie que le programme inclut directement les librairies nécessaires dans son binaire. Cela évite les dépendances dynamiques et modifie la structure de la mémoire du processus.

3. Pourquoi les adresses changent-elles entre les compilations avec et sans -static ?

Avec -static, le programme est auto-suffisant et les bibliothèques sont intégrées, ce qui peut influencer l'emplacement des segments en mémoire. Sans cette option, le programme dépend du chargeur dynamique (ld.so), qui peut affecter différemment les adresses des régions.

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