220 - Mémoire des processus Flashcards

1
Q

Le SE gère l’organisation de la mémoire

A
  • Le SE est responsable de la cohérence et du nettoyage de la mémoire de l’ordinateur
  • La gestion effective de la mémoire dépend du SE et des capacités matérielles
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Un processus ne voit que son propre espace mémoire

A
  • Accéder à un espace qui n’est pas le sien est interdit
  • Tout est autorisé dans son espace mémoire
    → Peut corrompre ses propres données en mémoire (bogues)
    → Mais ne peut corrompre les autres processus
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

4 segments mémoire principaux

A
  • Code (text): le code machine du programme
  • Données statiques (initialisées et non initialisées)
  • Tas (qui croît vers le bas)
  • Pile (qui croît vers le haut)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Segments extra

A

Extra
* Bibliothèques (code et données)
* Piles supplémentaires (threads)
* Mémoire anonyme et projection de fichiers
* Etc.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Fonctionnement de la pile

A

On empile
* Des cadres d’exécution fonctionnels (stackframe)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Gestion programmative

A

Le programme décide des allocations et des désallocations

Les langages fournissent des mécanismes
* Fonctions bibliothèque. Ex. malloc(3) et free(3) en C
* Mots clés. Ex. new et delete en C++
* Ramasse-miettes. Ex. Java

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Allocation (et désallocation) dynamique

A
  • Mémoire réservée quand elle est nécessaire
  • Et libérée quand elle ne l’est plus
    → Contient les données importantes des vrais programmes
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Contenu de la pile

A
  • Les variables automatiques (variables locales)
  • Les paramètres des fonctions
  • La place pour les valeurs de retour
  • Des valeurs pour la gestion des appels de fonctions
    (adresse de retour, base de pile, etc.)
  • Taille fixée (8Mo pour Linux) mais modifiable par ulimit (bash),
    prlimit(1), setrlimit(2)
  • Contient aussi les arguments du programme (argv)
  • Et les variables d’environnement (environ(7))
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Appels système pour demande d’espace mémoire

A

brk(2) et mmap(2)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Contenu des programmes exécutables (binaires)

A
  • Code en langage machine
  • Données binaires
  • Métadonnées pour chargement et édition de lien (entre autres)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Format des exécutables et bibliothèques dynamiques

A
  • Unix (multi-plateforme): ELF (Executable and Linking Format) pour exécutables et .so
  • Windows: PE (Portable Executable) pour .exe et .dll
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Initialisation en mémoire (chargement)

A
  • Provient du fichier binaire (presque tel quel)
    code et données initialisés
  • Réservé par le système d’exploitation (et initialisé à 0)
    données non initialisées (BSS), tas et pile (avec argv et env)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Qui décide de la vraie organisation de la mémoire?

A
  • Compilateur C, éditeur de liens, éditeur de lien dynamique
  • Peuvent décider d’organiser l’exécutable et la mémoire de
    nombreuses façons
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Droits de la mémoire

A
  • Les zones mémoires ont des droits
  • Lecture (r), écriture (w), exécution (x)
    exécution = avoir compteur ordinal dessus
  • Configuré par le système d’exploitation et par l’appel système mprotect(2)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Droits habituels des segments

A

Droits habituels des segments
* Code machine: r-x
* Données statiques en lecture seule: r–
* Données statiques en lecture écriture: r-w * Tas: rw-
* Pile: rw-

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Comment voir l’organisation de la mémoire d’un processus

A

Pour voir l’organisation de la mémoire d’un processus
* Commande pmap(1)
* Pseudo-fichier /proc/PID/maps