37
SYSTÈME D’EXPLOITATION I SIF-1015

SYSTÈME D’EXPLOITATION I SIF-1015. Contenu du cours 10 Gestion de la mémoire –Concepts et opérations de base –Concepts et opérations avancées –Implémentation

Embed Size (px)

Citation preview

Page 1: SYSTÈME D’EXPLOITATION I SIF-1015. Contenu du cours 10 Gestion de la mémoire –Concepts et opérations de base –Concepts et opérations avancées –Implémentation

SYSTÈME D’EXPLOITATION I

SIF-1015

Page 2: SYSTÈME D’EXPLOITATION I SIF-1015. Contenu du cours 10 Gestion de la mémoire –Concepts et opérations de base –Concepts et opérations avancées –Implémentation

Contenu du cours 10• Gestion de la mémoire

– Concepts et opérations de base

– Concepts et opérations avancées

– Implémentation

– LECTURES• Chapitre 8 et 9 (OSC)• Chapitre 21 (Mitchell)• Chapitre 8 (Card)

Page 3: SYSTÈME D’EXPLOITATION I SIF-1015. Contenu du cours 10 Gestion de la mémoire –Concepts et opérations de base –Concepts et opérations avancées –Implémentation

Concepts et opérations de base

• Espace d’adressage d’un processus– Chaque processus est associé à un espace d’adressage qui

représente les zones de mémoire allouées au processus. Cet espace d’adressage comporte:

• Le code du processus

• Les données du processus décomposées en deux segments: segment data qui contient les variables initialisées et le

segment bss qui contient les variables non initialisées

• Le code et les données des bibliothèques partagées utilisées par le processus

• La pile utilisée par le processus

Page 4: SYSTÈME D’EXPLOITATION I SIF-1015. Contenu du cours 10 Gestion de la mémoire –Concepts et opérations de base –Concepts et opérations avancées –Implémentation

Concepts et opérations de base

• Espace d’adressage d’un processus – LINUX alloue 3 Go de 4 Go à cet espace d’adressage. Le Go

restant est réservé à la mémoire utilisée par le noyau (code de LINUX et les données qu’il manipule)

– Les 3 Go disponibles sont décomposés en régions mémoire utilisables par le processus

– Le programme AfficheAdresses.c affiche l’adresse de diverses variables et fonctions. Les régions mémoire utilisées par un processus peuvent être visualisées (fig. 8.1, Card)

Page 5: SYSTÈME D’EXPLOITATION I SIF-1015. Contenu du cours 10 Gestion de la mémoire –Concepts et opérations de base –Concepts et opérations avancées –Implémentation

Concepts et opérations de base

• Espace d’adressage d’un

processus (AfficheAdresses.c)

Page 6: SYSTÈME D’EXPLOITATION I SIF-1015. Contenu du cours 10 Gestion de la mémoire –Concepts et opérations de base –Concepts et opérations avancées –Implémentation

Concepts et opérations de base• Espace d’adressage d’un processus (AfficheAdresses.c)

Page 7: SYSTÈME D’EXPLOITATION I SIF-1015. Contenu du cours 10 Gestion de la mémoire –Concepts et opérations de base –Concepts et opérations avancées –Implémentation

Concepts et opérations avancées• Régions de mémoire

– L’espace d’adressage d’un processus est composé de plusieurs régions de mémoire. Chaque région mémoire est caractérisée par plusieurs attributs:

• Adresses de début et de fin

• Droits d’accès de cette zone

• L’objet qui lui est associé (ex: fichier exécutable)

– Les régions de mémoire contenues dans l’espace d’adressage d’un processus peuvent être déterminées en affichant le contenu du fichier maps (dans le répertoire de chaque processus dans /proc)

– L’affichage donne:• Les adresses du début et de fin de la région de mémoire

• Les droits d’accès (p indique que la région peut être partagée entre processus)

• Le déplacement du début de la région dans l’objet

• Le numéro du périphérique (disque) contenant l’objet

• Le numéro d’i-node de l’objet

Page 8: SYSTÈME D’EXPLOITATION I SIF-1015. Contenu du cours 10 Gestion de la mémoire –Concepts et opérations de base –Concepts et opérations avancées –Implémentation

Concepts et opérations avancées• Régions de mémoire

– Dans cet exemple, les trois premières régions (trois premières lignes) correspondent au programme exécuté (segment de code, segment de données initialisées, et segment de données non-initialisées)

Page 9: SYSTÈME D’EXPLOITATION I SIF-1015. Contenu du cours 10 Gestion de la mémoire –Concepts et opérations de base –Concepts et opérations avancées –Implémentation

Implémentation• Gestion des tables de pages (pagination)

– LINUX utilise les mécanismes de mémoire virtuelle fournis par le processeur sur lequel il s’exécute

– Les adresses manipulées par le noyau et les processus sont des adresses virtuelles et une conversion est effectuée par le processeur pour transformer une adresse virtuelle en adresse physique en mémoire centrale

– La conversion fonctionne de la façon suivante:• Une adresse mémoire est décomposée en deux parties:

– Un numéro de page

– Un déplacement dans la page

• Le numéro de page est utilisé comme indice dans la table de page, ce qui fournit l’adresse physique d’une page en mémoire centrale

• À cette adresse est ajouté le déplacement pour obtenir l’adresse physique du mot concerné

Page 10: SYSTÈME D’EXPLOITATION I SIF-1015. Contenu du cours 10 Gestion de la mémoire –Concepts et opérations de base –Concepts et opérations avancées –Implémentation

Implémentation• Motivations derrière la VM

– La DRAM est utilisée comme une cache pour le disque• L’espace d’addresses (virtuelle) d’un processus peut dépasser la capacité de

la mémoire physique

• La somme des espaces d’adresses de plusieurs processus peut dépasser la capacité de la mémoire physique

– Faciliter la gestion de mémoire• Plusieurs processus résident en DRAM

– Chaque processus possède son espace d’adresses

• Seulement le code et les données actives sont en DRAM

• Le OS alloue plus de mémoire au processus au besoin

– Facilite la gestion de la protection• Un processus ne peut interférer avec un autre

• Chacun opère dans un espace d’adresse distinct

• Les processus user ne peuvent accéder aux informations privilégiées– Les sections différentes d’un espace d’adresses ont différentes permissions

Page 11: SYSTÈME D’EXPLOITATION I SIF-1015. Contenu du cours 10 Gestion de la mémoire –Concepts et opérations de base –Concepts et opérations avancées –Implémentation

Implémentation• Gestion des tables de pages (pagination)

– Conversion d’adresse virtuelle en adresse physique

Page 12: SYSTÈME D’EXPLOITATION I SIF-1015. Contenu du cours 10 Gestion de la mémoire –Concepts et opérations de base –Concepts et opérations avancées –Implémentation

Système avec VM (Motivation #1)

• Exemples:– Stations de travail, serveurs, PC modernes, etc.

Traduction d’Addresse: Le matériel convertit les adresses virtuelles en adresses physiques via une table de lookup (page table) gérée par le OS

CPU

0:1:

N-1:

Memory

0:1:

P-1:

Page Table

Disk

VirtualAddresses

PhysicalAddresses

Page 13: SYSTÈME D’EXPLOITATION I SIF-1015. Contenu du cours 10 Gestion de la mémoire –Concepts et opérations de base –Concepts et opérations avancées –Implémentation

Faute de page• Qu’arrive-t-il si un objet est sur disque au lieu de la RAM ?

– PTE indique que la VA n’est pas en RAM

– Le OS lance un exception handler qui transfert les données du disque vers la RAM

• Le processus courant est interrompu, un autre est démarré

• Le OS contrôle pleinement le transfert

CPU

Memory

Page Table

Disk

VirtualAddresses

PhysicalAddresses

CPU

Memory

Page Table

Disk

VirtualAddresses

PhysicalAddresses

Before fault After fault

Page 14: SYSTÈME D’EXPLOITATION I SIF-1015. Contenu du cours 10 Gestion de la mémoire –Concepts et opérations de base –Concepts et opérations avancées –Implémentation

Gestion d’une faute de page• CPU signale le I/O

controller

– Lecture d’un bloc de longueur P à partir de l’adresse X sur le disque et stocké à l’adresse Y de la RAM

• Lecture

– Mode DMA

– Géré par le I/O controller

• I / O Controller signale la fin du transfert

– CPU est interompu

– OS redémarre le processus

suspendu diskDiskdiskDisk

Memory-I/O busMemory-I/O bus

ProcessorProcessor

CacheCache

MemoryMemoryI/O

controller

I/Ocontroller

Reg

(2) DMA Transfer

(1) Initiate Block Read

(3) Read Done

Page 15: SYSTÈME D’EXPLOITATION I SIF-1015. Contenu du cours 10 Gestion de la mémoire –Concepts et opérations de base –Concepts et opérations avancées –Implémentation

Motivation #2: Gestion de mémoire • Plusieurs processus peuvent résider en RAM

– Comment résoudre les conflits d’addressage ?• Si deux processus accèdent à la même adresse RAM ?

kernel virtual memory

Memory mapped region forshared libraries

runtime heap (via malloc)

program text (.text)

initialized data (.data)

uninitialized data (.bss)

stack

forbidden0

%esp

memory invisible to user code

the “brk” ptr

Linux/x86

process

memory

image

Page 16: SYSTÈME D’EXPLOITATION I SIF-1015. Contenu du cours 10 Gestion de la mémoire –Concepts et opérations de base –Concepts et opérations avancées –Implémentation

Virtual Address Space for Process 1:

Physical Address Space (DRAM)

VP 1VP 2

PP 2

Address Translation0

0

N-1

0

N-1M-1

VP 1VP 2

PP 7

PP 10

(e.g., read/only library code)

Solution: Espaces d’adresses virtuelles séparées• Les espaces d’adresses virtuelles et physiques sont divisés en blocs de

dimension égale• Chaque bloc correspond à une page ( virtuelle et physique)

• Chaque processus possède son propre espace d’adresses• Le OS contrôle l’assignation de pages virtuelles en mémoire physique

...

...

Virtual Address Space for Process 2:

Page 17: SYSTÈME D’EXPLOITATION I SIF-1015. Contenu du cours 10 Gestion de la mémoire –Concepts et opérations de base –Concepts et opérations avancées –Implémentation

Motivation #3: Protection• Les PTE contiennent des droits d’accès

– Les violations d’accès sont trappées par le OSPage Tables

Process i:

Physical AddrRead? Write?

PP 9Yes No

PP 4Yes Yes

XXXXXXX No No

VP 0:

VP 1:

VP 2:•••

•••

•••

Process j:

0:1:

N-1:

Memory

Physical AddrRead? Write?

PP 6Yes Yes

PP 9Yes No

XXXXXXX No No•••

•••

•••

VP 0:

VP 1:

VP 2:

Page 18: SYSTÈME D’EXPLOITATION I SIF-1015. Contenu du cours 10 Gestion de la mémoire –Concepts et opérations de base –Concepts et opérations avancées –Implémentation

Implémentation: Tables de Pages

Memory residentpage table

(physical page or disk address) Physical Memory

Disk Storage(swap file orregular file system file)

Valid

1

1

111

1

10

0

0

Virtual PageNumber

Page 19: SYSTÈME D’EXPLOITATION I SIF-1015. Contenu du cours 10 Gestion de la mémoire –Concepts et opérations de base –Concepts et opérations avancées –Implémentation

Implémentation• Gestion des tables de pages (pagination)

– En raison de la taille de l’espace mémoire adressable par le processeur, la table des pages n’est pas implémentée sous forme d’une seule table contiguë en mémoire puisque cette approche nécessiterait trop de mémoire

– Par exemple:• Les processeurs de l’architecture x86 peuvent adresser 4 Go

• La taille des pages mémoire est de 4 Ko (1 M pages de 4 Ko)

• Chaque entrée de la table occupe quatre octets (adresse de 32 bits)

• Une table de pages complète utiliserait 1 M entrées, pour une occupation de mémoire de 4 Mo

– La table de pages est alors décomposée en au moins 2 niveaux:• Un catalogue de table de pages contenant les adresses des pages qui

contiennent des parties de la table des pages complète

• Les parties utilisées de la table des pages sont chargées en mémoire

Page 20: SYSTÈME D’EXPLOITATION I SIF-1015. Contenu du cours 10 Gestion de la mémoire –Concepts et opérations de base –Concepts et opérations avancées –Implémentation

Tables de pages multi-niveaux• Étant donné:

– Bloc de 4KB (212)

– Adresses de 32-bits

– PTE de 4-byte

• Problème:

– Table de pages de 4 MB !

• 220 *4 bytes

• Solution

– Table de pages multi-niveaux

– e.g., Table 2-niveaux (P6)

• Niveau 1 : 1024 entrées, chaque entrée pointe sur une table de pages de niveau 2

• Niveau 2: 1024 entrées, chacune pointe sur une page en DRAM

Level 1

Table

...

Level 2

Tables

Page 21: SYSTÈME D’EXPLOITATION I SIF-1015. Contenu du cours 10 Gestion de la mémoire –Concepts et opérations de base –Concepts et opérations avancées –Implémentation

Structure de la table de pages 2-niveaux (P6)• Page répertoire:

– 1024 PDEs de 4-byte qui pointent chacune sur une table de pages

– Une page répertoire est attribuée par processus

– La page répertoire d’un processus doit être en mémoire quand ce processus s’exécute

– Cette page est toujours pointée par le PDBR

• Page tables:– 1024 PTEs de 4-byte qui pointent sur

une page en RAM.

– Les tables de pages peuvent aller et venir entre la RAM et le disque

page directory

...

Up to 1024 page tables

1024

PTEs

1024

PTEs

1024

PTEs

...

1024

PDEs

Page 22: SYSTÈME D’EXPLOITATION I SIF-1015. Contenu du cours 10 Gestion de la mémoire –Concepts et opérations de base –Concepts et opérations avancées –Implémentation

Mapping VA->PA (P6)

PDE

PDBRphysical address

of page table base

(if P=1)

physical

address

of page base

(if P=1)physical address

of page directory

word offset into

page directory

word offset into

page table

page directory page table

VPN1

10

VPO

10 12

VPN2 Virtual address

PTE

PPN PPO

20 12

Physical address

word offset into

physical and virtual

page

Page 23: SYSTÈME D’EXPLOITATION I SIF-1015. Contenu du cours 10 Gestion de la mémoire –Concepts et opérations de base –Concepts et opérations avancées –Implémentation

Représentation d’un espace virtuel

• Example simple

– Espace d’adresses virtuelles de 16 pages

• Flags– P: La PDE ou PTE en mémoire ?

– M: Cet espace de VA a-t-il été mappé ?

Page Directory

PT 3

P=1, M=1

P=1, M=1

P=0, M=0

P=0, M=1

••••

P=1, M=1

P=0, M=0

P=1, M=1

P=0, M=1

••••

P=1, M=1

P=0, M=0

P=1, M=1

P=0, M=1

••••

P=0, M=1

P=0, M=1

P=0, M=0

P=0, M=0

••••

PT 2

PT 0

Page 0

Page 1

Page 2

Page 3

Page 4

Page 5

Page 6

Page 7

Page 8

Page 9

Page 10

Page 11

Page 12

Page 13

Page 14

Page 15

Mem Addr

Disk Addr

In Mem

On Disk

Unmapped

Page 24: SYSTÈME D’EXPLOITATION I SIF-1015. Contenu du cours 10 Gestion de la mémoire –Concepts et opérations de base –Concepts et opérations avancées –Implémentation

Implémentation• Gestion des tables de pages (pagination)

– L’intérêt de cette table de pages à deux niveaux repose sur le fait que la table de pages n’a pas besoin d’être chargée entièrement en mémoire

– Si par exemple, un processus utilise 6 Mo de mémoire sur un processeur x86, seulement trois pages sont utilisées pour la table des pages:

• La page contenant le catalogue

• La page contenant la partie de la table de pages correspondant aux premiers 4 Mo de mémoire (1 K entrées, chaque entrée pointe sur une page de 4 Ko)

• La page contenant la partie de la table de pages correspondant aux prochains 4 Mo de mémoire (la moitié est utilisée)

Page 25: SYSTÈME D’EXPLOITATION I SIF-1015. Contenu du cours 10 Gestion de la mémoire –Concepts et opérations de base –Concepts et opérations avancées –Implémentation

Implémentation• Gestion des pages mémoire (descripteur de page)

– LINUX tient à jour l’état de chaque page de la mémoire centrale. Il utilise un tableau de descripteurs, pointé par la variable mem_map pour décrire chaque page

– La structure page définit le format de ce descripteur

Page 26: SYSTÈME D’EXPLOITATION I SIF-1015. Contenu du cours 10 Gestion de la mémoire –Concepts et opérations de base –Concepts et opérations avancées –Implémentation

Implémentation• Gestion des pages mémoire (descripteur de page)

– La structure page définit le format de ce descripteur

Page 27: SYSTÈME D’EXPLOITATION I SIF-1015. Contenu du cours 10 Gestion de la mémoire –Concepts et opérations de base –Concepts et opérations avancées –Implémentation

Implémentation• Espace d’adressage des processus (descripteur de

régions mémoire)– L’espace d’adressage des processus peut être formé de plusieurs

régions mémoire

– Le noyau maintient en mémoire une description des régions mémoire par un processus. La structure vm_area_struct (fichier définit le format du descripteur de chaque région

Page 28: SYSTÈME D’EXPLOITATION I SIF-1015. Contenu du cours 10 Gestion de la mémoire –Concepts et opérations de base –Concepts et opérations avancées –Implémentation

• Espace d’adressage des processus (descripteur de régions mémoire)– L’espace d’adressage des processus peut être formé de

plusieurs régions mémoire

kernel virtual memory

Memory mapped region for shared libraries

runtime heap (via malloc)

program text (.text)

initialized data (.data)

uninitialized data (.bss)

stack

forbidden0

%esp

memory invisible to user code

the “brk” ptr

Linux/x86

process

memory

image

Implémentation

Page 29: SYSTÈME D’EXPLOITATION I SIF-1015. Contenu du cours 10 Gestion de la mémoire –Concepts et opérations de base –Concepts et opérations avancées –Implémentation

vm_next

vm_next

Linux organise la VM comme une collection d’espaces virtuels

task_structmm_struct

pgdmm

mmap

vm_area_struct

vm_end

vm_protvm_start

vm_end

vm_protvm_start

vm_end

vm_prot

vm_next

vm_start

process virtual memory

text

data

shared libraries

0

0x08048000

0x0804a020

0x40000000

– pgd:

• page directory address

– vm_prot:

• read/write permissions for this area

– vm_flags

• shared with other processes or private to this process

vm_flags

vm_flags

vm_flags

Page 30: SYSTÈME D’EXPLOITATION I SIF-1015. Contenu du cours 10 Gestion de la mémoire –Concepts et opérations de base –Concepts et opérations avancées –Implémentation

Traitement des fautes de pages sous LINUX

vm_area_struct

vm_end

r/o

vm_next

vm_start

vm_end

r/w

vm_next

vm_start

vm_end

r/o

vm_next

vm_start

process virtual memory

text

data

shared libraries

0

• La VA est-elle légale?– Est-elle définit dans une

vm_area_struct?– Sinon signaler un

segmentation violation (e.g. (1))

• L’opération est-elle légale?– Le processus peut-il faire

un read/write ?– Sinon signaler un

protection violation (e.g., (2))

• SI OK, traite la faute de page– e.g., (3)

write

read

read1

2

3

Page 31: SYSTÈME D’EXPLOITATION I SIF-1015. Contenu du cours 10 Gestion de la mémoire –Concepts et opérations de base –Concepts et opérations avancées –Implémentation

Exec() explicité

kernel code/data/stack

Memory mapped region for shared libraries

runtime heap (via malloc)

program text (.text)

initialized data (.data)

uninitialized data (.bss)

stack

forbidden0

%espprocess VM

brk

0xc0

physical memorysame for each process

process-specific datastructures

(page tables,task and mm structs)

kernel VM

• Pour exécuter un nouveau programme p dans le contexte du processus courant par exec():– Libérer les vm_area_struct et les

tables de pages de l’ancien processus– Créer de nouvelles vm_area_struct

et des tables de pages pour le nouveau processus• Zones stack, bss, data, text, shared

libs.• Zones text et data correspondant

au fichier .exe• Zone bss et stack initialisées à 0

– Intialiser le PC au début du programme à exécuter dans la zone .text• Linux swap ensuite les pages de

codes et de données au besoin.data.text

p

demand-zero

demand-zero

libc.so

.data.text

Page 32: SYSTÈME D’EXPLOITATION I SIF-1015. Contenu du cours 10 Gestion de la mémoire –Concepts et opérations de base –Concepts et opérations avancées –Implémentation

Fork() explicité• Création d’un nouveau processus avec fork():

– Copier les structures mm_struct, vm_area_struct, et les tables de pages du processus père.

• Au début les deux processus partagent les mêmes pages en mémoire

• Comment peut-on avoir deux espaces d’adresses distincts sans recopier toutes les

pages virtuelles ? => Technique du “copy on write”

– Technique du copy-on-write• Créer initialement les pages W en R/O

• Le champ flag des vm_area_struct de ces zones est initialisé à private “copy-on-write”

• Un accès en écriture à ces pages par un des processus cause une faute de page

– Le gestionnaire de fautes reconnait le copy-on-write, fait une copie de la page et restaure la permission en écriture

– Résultat:Copies de pages sont retardées tant qu’un accès en écriture n’est pas requis (i.e.,

quand un processus essaie de modifier une page partagée).

Page 33: SYSTÈME D’EXPLOITATION I SIF-1015. Contenu du cours 10 Gestion de la mémoire –Concepts et opérations de base –Concepts et opérations avancées –Implémentation

Fork() explicité• Création d’un nouveau processus avec fork():

– Technique du “copy on write” (avant un page fault)

Page 34: SYSTÈME D’EXPLOITATION I SIF-1015. Contenu du cours 10 Gestion de la mémoire –Concepts et opérations de base –Concepts et opérations avancées –Implémentation

Fork() explicité• Création d’un nouveau processus avec fork():

– Technique du “copy on write” (après un page fault)

Page 35: SYSTÈME D’EXPLOITATION I SIF-1015. Contenu du cours 10 Gestion de la mémoire –Concepts et opérations de base –Concepts et opérations avancées –Implémentation

Implémentation• Espace d’adressage des processus (descripteur de

régions mémoire, structure vm_area_struct )

Page 36: SYSTÈME D’EXPLOITATION I SIF-1015. Contenu du cours 10 Gestion de la mémoire –Concepts et opérations de base –Concepts et opérations avancées –Implémentation

Implémentation• Espace d’adressage des processus (descripteur d’espace

d’adressage)– LINUX maintient un descripteur de l’espace d’adressage. Ce

descripteur est accessible par le champ mm de la structure task_struct associée à chaque processus. mm pointe sur une structure mm_struct

Page 37: SYSTÈME D’EXPLOITATION I SIF-1015. Contenu du cours 10 Gestion de la mémoire –Concepts et opérations de base –Concepts et opérations avancées –Implémentation

Implémentation• Espace d’adressage des processus (descripteur d’espace

d’adressage)– Structure mm_struct