P. 1
Gestion de la mémoire

Gestion de la mémoire

|Views: 297|Likes:
Publié parstrideworld

More info:

Published by: strideworld on Oct 12, 2009
Droits d'auteur :Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as DOC, PDF, TXT or read online from Scribd
See more
See less

12/12/2012

pdf

text

original

ESAT / DMSI / Cours Système

WINDOWS NT – GESTION DE LA MEMOIRE
Le gestionnaire de mémoire (Virtual Memory manager ) de l' exécutif NT est en particulier chargé d' offrir à chaque processus une allocation et une gestion de mémoire privée, de permettre le partage de mémoire entre processus et de protéger contre les accès non autorisés la mémoire partagée comme la mémoire privée.

LA MEMOIRE VIRTUELLE OU LOGIQUE
Les systèmes de mémoire virtuelle ont en général soit une vue segmentée de la mémoire, soit une vue linéaire. Ainsi les processeurs 8086 et 80286 utilisent un modèle segmenté dans lequel un segment correspond à un ensemble d' adresses contiguës L' adresse est alors constituée d' un n° de segment et d' un déplacement dans le segment. Les processeurs RISC et les processeurs CISC récents d' Intel ont une architecture d' adressage linéaire dans laquelle les adresses vont de 0 à n-1 pour adresser n octets. L' espace d' adressage est divisé en pages et la mémoire physique est divisée en blocs ou page frames. Vocabulaire: pages valides = pages chargées en mémoire, pages invalides = pages sur disque. pagination = transfert de pages vers le disque.

Taille des pages de Workstation NT: 4 ko (celle du 386 )

GESTION DE LA MEMOIRE (POUR LES SOUS-SYSTEMES EN MODE UTILISATEUR)
Les sous-systèmes peuvent ici partager la mémoire en utilisant des objets protégés, nommés et manipulés comme les autres objets de l' exécutif. Ils peuvent aussi protéger les pages de mémoire privée ou bien les bloquer en mémoire. Le gestionnaire de mémoire autorise : - l' allocation de la mémoire, - la lecture et l' écriture de la mémoire virtuelle, - le blocage des pages virtuelles en mémoire physique, - l' obtention d' informations sur ce type de pages, - leur protection, - leur transfert sur disque. L' allocation se fait en deux étapes: - la réservation: le gestionnaire réserve une plage d' adresses virtuelles pour un processus, - l' engagement (committing) : la mémoire engagée correspond à une zone du fichier d' échange (swap), sur disque, réservée à un processus. Ces deux étapes peuvent se faire en même temps ou non, selon les besoins du "thread" qui alloue de la mémoire au moment ou il crée des structures de données dynamiques. Pour un "thread" donné, une grande zone de mémoire peut être réservée : le quota du "thread" n' est imputé que lorsque cette mémoire est engagée. Ainsi est géré le fichier d' échange. Un processus qui possède des privilèges (une application critique en temps par exemple) peut aussi bloquer certaines pages virtuelles en mémoire pour éviter les "défauts de page". Un processus peut manipuler son propre espace d' adressage ou bien celui d' un autre processus. Il peut aussi créer un autre processus dont il manipulera l' espace d' adressage (il appelera les services de mémoire virtuelle avec le "handle" du processus créé).

Page1

ESAT / DMSI / Cours Système

PARTAGE DE MEMOIRE
Chaque processus ayant son propre espace d' adressage virtuel, le partage consiste à "mapper" les adresses virtuelles d' un nouveau processus sur les pages physiques du code déja chargé pour les besoins d' un processus antérieur. Si le partage de la zone de mémoire se fait en écriture, il faut en outre assurer la protection de cette zone en synchronisant les processus qui la partagent. L 'objet-section (section object ) que le sous-système Win32 met à la disposition des applications sous la forme d' un objet mappage de fichier (file-mapping-object) est un bloc de mémoire susceptible d' être partagé par plusieurs processus. Un "thread" peut créer un tel objet et lui donner un nom, permettant à des "threads" d' autres processus d' ouvrir les "handles" correspondants. Vocabulaire: vue (view ) d' une section : désigne la partie de l' objet-section que le processus doit mapper parce qu' il en a besoin, l' objet-section lui-même pouvant être très grand. Exemple du mappage des vues d' une section:

Memoire virtuelle du processus 1 . . .

Vue

Memoire Physique

. . .

Memoire virtuelle du processus 2 Vue 1

Section

Vue 2

Mappage de vues d' une section

Page2

ESAT / DMSI / Cours Système

Le programme chargé de gérer une grande base de données crée un objet-section qui contient cette base toute entière. Lors d' une requête utilisateur sur la base, le programme mappe une vue de la section de la base sur son espace d' adressage virtuel, y lit les données, supprime le mappage de la vue, puis crée une autre vue pour accéder à d' autres informations. Le programme accède ainsi à la base en mappant différentes vues de l' objet-section et en lisant ou en écrivant en mémoire plutôt que sur le fichier: on parle ici d' E/S sur un fichier mappé ou mapped file I/O. Les attributs de l' objet-section : - la taille maximale : si la section est associée à un fichier, la taille maximale de la section peut être celle du fichier, - la protection de page : c' est la protection attribuée lors de la création, - fichier paginé-fichier mappé : indique si la section est initialement vide (fichier paginé) ou bien remplie avec le contenu d' un fichier (fichier mappé), - basé- non basé : la section est basée si elle utilise la même adresse virtuelle pour tous les processus qui la partagent, elle est non basée dans le cas contraire. En cas de partage, la synchronisation des processus est nécessaire : ainsi les applications Win32 utilisent pour accéder aux objets "mappage de fichier" (équivalents des objets-section) des mutex, des événements, des sections critiques ou des sémaphores. Un processus qui "mappe" une vue d' une section doit d' abord obtenir un handle. Il peut par ailleurs recevoir un "handle" sur un objet-section soit par héritage soit parce qu' un autre processus le duplique et le lui transmet.

PROTECTION DE LA MEMOIRE
La protection de la mémoire est basée sur : - un espace d' adressage propre à chaque processus : le matériel empêche un thread d' accéder à l' espace d' adressage virtuel d' un autre processus. - deux modes de fonctionnement : le mode noyau (accès au code et aux données du système autorisé) et le mode utilisateur (accès à ces mêmes zones impossible ). - la protection des pages : des droits d' accès sont attribués à chacune des pages et dans chacun des deux modes. - la protection de la mémoire basée sur les objets : chaque ouverture d' un "handle" sur un objetsection est soumis à la vérification des droits du processus sur cet objet. Le gestionnaire VM offre les protections suivantes pour chaque page valide : lecture seule, lecture/écriture, exécution seule (si le matériel le supporte ), page de garde (pour le contôle des limites des piles ), pas d' accès, copie à l' écriture. Le sous-système Win32 rend la protection des pages du gestionnaire VM accessible aux applications Win32 à travers de sa fonction VirtualProtect(). Les autres protections ne sont pas disponibles pour les applications.

Page3

ESAT / DMSI / Cours Système

IMPLEMENTATION DE LA MEMOIRE VIRTUELLE
Chaque processus Workstation NT dispose d' un espace d' adressage de 4 Go dont 2 sont réservés pour le système:

FFFFFFFFh

Non paginées Paginées Mémoire système (2 Go )

C0000000h

Adr. associées directement

80000000h Mémoire utilisateur (2 Go )

Paginées 00000000h

La mémoire utilisateur est accessible par tous les "threads" en mode utilisateur et en mode noyau, elle est spécifique à chaque processus. La mémoire système est accessible par les "threads" en mode noyau, elle est identique pour tous les processus. Le code et les données du noyau sont situés dans la partie basse de la mémoire système et ne sont jamais paginés hors de la mémoire. En outre, les adresses physiques de cette zone mémoire se déduisent des adresses virtuelles en mettant les 3 bits les plus significatifs à 0. Il en découle un accès très rapide au code situé dans cette zone. Lors de la création d' un processus, soit on précise au gestionnaire VM qu' il doit initialiser l' espace d' adressage par duplication (technique POSIX ), soit le gestionnaire de processus crée un processus et le gestionnaire VM initialise son espace d' adressage avec le code qui va s' exécuter.

LA PAGINATION
Le transfert des pages entre le disque et la mémoire est assuré par le gestionnaire de pages (pager ) qui traîte les défauts de page, maintient à jour les structures de données pour la gestion de la mémoire et protège les pages. Les mécanismes de pagination mis en jeu sont classiques : mémoire associative, appelée tampon des pages récemment utilisées(TLB ) et contenant des couples "numéro de page virtuelle-numéro de pages physique"; table des pages. Règles de pagination: Le Gestionnaire VM utilise un algorithme de pagination à la demande: ceci signifie qu' il charge une page lorsqu' un défaut de page se produit. Cet algorithme est dit aussi avec regroupement, ce qui signifie que plusieurs pages voisines sont chargées. Ceci a pour effet de diminuer le nombre de défauts de page.

Page4

ESAT / DMSI / Cours Système

En outre une stratégie de placement permet de trouver une page physique libre et, le cas échéant, une stratégie de remplacement permet de désigner la page qui doit être extraite de la mémoire pour faire de la place. Il existe des stratégies de remplacement de deux types: Une stratégie de remplacement locale alloue un nombre fixe (ajustable dynamiquement ) de pages physiques à chaque processus. Lorsque toutes ces pages sont occupées et qu' une nouvelle page doit être chargée, l' algorithme de remplacement de page entre en action. Une stratégie de remplacement globale où n' importe quelle page physique, appartenant ou non au processus, peut être utilisée lors d' un défaut de page. Le Gestionnaire VM utilise une stratégie de remplacement locale FIFO et doit pour cela mémoriser les pages en mémoire pour chaque processus. Cet ensemble de pages s' appelle jeu de pages de travail du processus (process'working set ). La taille minimale du jeu est attribuée à chaque processus lors de sa création: il garantit le nombre de pages dont dispose le processus pendant son fonctionnement. LA BASE DE DONNES DES PAGES PHYSIQUES (schéma page suivante) : Les tables des pages d' un processus permettent de localiser les pages physiques mais le gestionnaire VM doit en outre connaître son état et, le cas échéant, qui est l' utilisateur. La base de données des pages physiques (page frame database ) répond à ce besoin. Il s' agit d' un tableau de rubriques, numérotées de 0 à n-1 (pour n pages physiques ), et contenant les informations relatives à ces pages. Une page physique peut se trouver dans l' un des états suivants: - valide: utilisée par un processus, une rubrique valide d' une table des pages pointe dessus, - à zéro: la page est libre et initialisée avec des zéros, - libre: elle est libre mais non initialisée, - en attente: elle a été retirée du jeu de pages de travail du processus qui l' utilisait, l'indicateur de transition est positionné, - modifié: idem état précédent mais la page, écrite, n' a pas encore été recopiée sur disque, l' indicateur de transition est positionné, - mauvais: elle ne doit pas être utilisée. Les pages non utilisées sont regroupées dans des listes, par état.

Page5

ESAT / DMSI / Cours Système

PROC1: table de spages Valide Invalide: adr. disque Valide

Base de Données des pages physiques

Utilisée sur liste attente

PROC2: table des pages Valide Invalide: adr. disque Valide

Utilisée

PTE prototype

Utilisée

PROC3: table des pages Valide Invalide: transition Invalide: adr. disque Sur liste des modifiées

TABLE DES PAGES ET BASE DE DONNEES PHYSIQUE

Page6

You're Reading a Free Preview

Télécharger
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->