smi - s4 chapitre 4: gestion de la mémoire partie 1dmifps.uca.ma/alioua/os/diapo/gestion...
TRANSCRIPT
-
Année universitaire: 2019-2020
Chapitre 4:
Gestion de la mémoire partie 1
1
SMI - S4
Cours donné par: Pr. N. ALIOUA
-
Plan
Partie 1:
IV.1 Introduction
IV.2 Concepts de la mémoire
IV.3 Allocation contiguë de la mémoire
Partie 2:
IV.4 Allocation non contiguë de la mémoire
IV.5 Mémoire virtuelle
2
-
IV.1 Introduction
• On appelle «Mémoire» tout composant électronique capable de stocker temporairement des données.
• La mémoire consiste en un grand nombre d'octets, chacun possédant sa propre adresse. On peut distinguer 2 types de mémoires: o Mémoire principale (ou vive ou centrale): contient l’emplacement des
programmes et des données quand l’UCT les exécute.
o Mémoire secondaire (ou de masse ou auxiliaire): contient les programmes avant leur exécution. Elle est plus lente que la mémoire principale mais de très grande capacité.
• L'unité de mémoire ne voit qu'un flux d'adresses mémoire. Elle ignore leur provenance (compteur d'instructions, indexation, …) et leur type (instructions ou données).
3
1) Qu’est ce que la mémoire?
-
IV.1 Introduction
• La mémoire étant une ressource rare à partager, si les mécanismes de gestion de ce partage sont peu efficaces l'ordinateur sera peu performant, quelque soit la puissance de son UCT.
• Rôles du gestionnaire de la mémoire:
o Prise en charge de l’allocation de la mémoire aux processus:
Savoir quelles zones sont libres et quelles zones sont utilisées.
Règles d'allocation : qui obtient de la mémoire, combien, quand et comment ?
Règles de désallocation : à qui reprendre de la mémoire, combien, quand et comment?
Techniques d'allocation: choix des lieux d'allocation et mises à jour des informations d'allocation.
o Protection de la mémoire allouée à chaque processus contre un accès indésirable d’autres processus.
4
2) Pourquoi étudier la gestion de la mémoire?
-
Plan
IV.1 Introduction
IV.2 Concepts de la mémoire
IV.3 Allocation contiguë de la mémoire
IV.4 Allocation non contiguë de la mémoire
IV.5 Mémoire virtuelle
5
-
IV.2 Concepts de la mémoire
La gestion de la mémoire s’appuie sur deux niveaux:
oNiveau matériel: Mémoire cache: accélérer l’accès aux instructions et aux données
fréquemment utilisées par l’UCT.
Registres spéciaux: délimiter et protéger la mémoire contre les accès indésirables.
oNiveau logiciel: effectué par le gestionnaire de mémoire du SE et concerne principalement l’allocation de la mémoire aux différents processus.
N.B: Dans la gestion de la mémoire, le terme «Mémoire» fait référence à la mémoire principale (RAM), mais demande la contribution de la mémoire secondaire (spacieuse mais lente) et de la mémoire cache (rapide mais de taille restreinte).
6
1) Introduction
-
IV.2 Concepts de la mémoire
• Pour exécuter un processus, l’UCT a besoin d’accéder à la mémoire principale (RAM) et aux registres :
o L’accès aux registres est très rapide et se fait pendant un cycle d’horloge, alors que l’accès à la mémoire principale peut prendre plusieurs cycles (car elle est reliée par un bus).
↓ L’UCT reçoit les informations des registres mais doit attendre la réponse de la mémoire avant d’exécuter l’instruction.
La mémoire cache est introduite entre l’UCT (pas de bus) et la mémoire principale pour:
Accélérer l'exécution du processus
Stocker les informations fréquemment utilisées par l’UCT et faire office de tampon entre l’UCT et la mémoire principale.
7
2) Accélération de l’exécution
-
IV.2 Concepts de la mémoire
• Un programme réside sur la mémoire secondaire en tant que fichier exécutable binaire. Pour être exécuté, il doit être mis en mémoire principale en tant que processus.
• Les programmes et l’UCT ne manipulent que des adresses dites logiques (ou virtuelles). • L'espace d'adressage logique est un ensemble d'adresses générées par un
programme.
• L'unité mémoire manipule des adresses dites physiques. Elles ne sont jamais vues par les programmes. • L'espace d'adressage physique est un ensemble d'adresses physiques
correspondant à un espace d'adresses logiques.
• La MMU (Memory Management Unit): composant matériel chargé de transformer (convertir) les adresses logiques en adresses physiques.
8
3) Adresse physique et adresse logique
-
IV.2 Concepts de la mémoire
• Il est nécessaire de protéger le SE contre les accès des processus utilisateurs, mais aussi de protéger les processus utilisateurs les uns des autres (cas SE multi-utilisateurs).
• Utiliser un espace mémoire séparé pour chaque processus est un mécanisme de protection de la mémoire contre les accès indésirables:
oOn détermine la plage d'adresses auxquelles chaque processus peut accéder et on le limite à cette plage.
oDeux registres utilisés: le registre de base et le registre de limite.
• Registre de base: contient la plus petite adresse de mémoire physique légale.
• Registre de limite: spécifie la taille de la plage d’adresses du processus.
• N.B: Dans la MMU, le registre de base est connu sous le nom de registre de translation (relocation register).
9
4) Protection de la mémoire
-
IV.2 Concepts de la mémoire
• Exemple:
oRegistre de base=300040
oRegistre de limite= 120900
o Le processus peut accéder
légalement à toutes les adresses • de 300040 (incluse)
• à 420940 (non incluse)
(420940 =300040+120900)
10
4) Protection de la mémoire
-
IV.2 Concepts de la mémoire
• La protection de l'espace mémoire est réalisée par une comparaison entre chaque adresse physique, converti à partir d’une adresse logique du processus, et les valeurs de ses registres de base et de limite.
• Lorsqu’un processus tente d’accéder à la mémoire du SE ou d’un autre processus, cela entraîne une interruption du SE, qui traite la tentative comme une erreur fatale.
• Ce mécanisme empêche un programme utilisateur de modifier (accidentellement ou délibérément) le code ou les structures de données du SE ou d'autres utilisateurs.
11
• Evidement les registres de base et de limite ne peuvent être chargés ou modifiés que par le SE en mode noyau.
4) Protection de la mémoire
Physical address
-
IV.2 Concepts de la mémoire
• Un processus peut être transféré entièrement et temporairement de la mémoire principale vers la mémoire secondaire (swap out), puis ramené pour poursuivre son exécution (swap in). C’est l’ordonnancement à moyen terme.
Avantage: permettre à l'espace d'adressage physique total de tous les processus de dépasser la taille de la mémoire principale.
12
↓ Inconvénient: temps de changement de contexte + temps de transfert des processus d’une mémoire à l’autre.
• Le swapping peut être généralement désactivé dans les SE modernes.
5) Le swapping (va-et-vient)
-
IV.2 Concepts de la mémoire
• Certains mécanismes d’allocations de mémoire permettent à un processus de s'exécuter uniquement si le programme entier et toutes ses données sont chargés en mémoire physique.
• La taille d'un processus est donc limitée à la taille de la mémoire physique disponible.
• Pour obtenir une meilleure utilisation de l'espace mémoire, d’autres mécanismes d’allocations de mémoire adoptent le chargement dynamique:
o Le programme principal est chargé en mémoire et est exécuté.
oUn élément n'est pas chargé tant qu’il n'est pas appelé.
oCe mécanisme est utile lorsque de grandes quantités de code sont écrits pour traiter des cas peu fréquents.
oBien que la taille totale du programme puisse être importante, la portion utilisée (et donc chargée) peut être beaucoup plus petite.
13
6) Chargement dynamique
-
IV.2 Concepts de la mémoire
• La mémoire principale doit prendre en charge à la fois le SE et les processus utilisateur.
• C’est une ressource limitée qui doit être allouée efficacement
• Pour allouer un espace mémoire, le gestionnaire de mémoire peut appliquer deux modes d’allocation différents: oAllocation contiguë: placer la totalité d’un processus à des
adresses physiques consécutives.
oAllocation non contiguë : fractionner le processus et placer ses différents fragments à des adresses physiques dispersées.
14
7) Méthodes d’allocation de la mémoire
-
Plan
IV.1 Introduction
IV.2 Concepts de la mémoire
IV.3 Allocation contiguë de la mémoire
IV.4 Allocation non contiguë de la mémoire
IV.5 Mémoire virtuelle
15
-
IV.3 Allocation contiguë de la mémoire
• Allocation contiguë: méthode ancienne effectuée par le gestionnaire de mémoire pour l’attribution de la mémoire.
• La mémoire principale est généralement divisée en deux partitions:
o Une partition pour le SE
o Une partition que doivent partager les processus utilisateur: Chaque processus est contenu dans une seule partition contiguë de la
mémoire.
Le prochain processus va être placé en mémoire directement après.
16
1) Définition
-
IV.3 Allocation contiguë de la mémoire
• Un problème majeur dans l’allocation contiguë est qu’il peut y avoir assez d’espace pour exécuter un processus, mais il est fragmenté de façon non contiguë.
• Cette fragmentation peut être: oexterne: l’espace inutilisé est entre les partitions
o interne: l’espace inutilisé est à l’intérieur des partitions
• Il existe 2 moyens de réduire ce problème:
oPartition fixe
oPartition dynamique
17
SE
Processus 1
Processus 2
Partition vide
2) La fragmentation
Frag interne
Frag externe
-
IV.3 Allocation contigüe de la mémoire
• Partitions de tailles inégales avec plusieurs files:
o Placer le processus dans la partition de plus petite taille pouvant le contenir.
o Une file par partition pour minimiser la frag interne
o Problème: processus en attente alors qu'il y a des partitions vides (augmente la frag externe).
• Partitions de tailles inégales avec une seule file
o Choisir une partition libre pouvant contenir le processus (algorithme de placement).
o Une seule file pour toutes les partitions.
o Relativement:
o la frag interne augmente.
o la frag externe est réduite.
18
La méthode la plus simple pour allouer la mémoire est de la diviser (de manière statique) en plusieurs partitions de taille fixe, généralement de tailles inégales.
3) Allocation contigüe par partitions fixes
-
IV.3 Allocation contiguë de la mémoire
• Partitions en nombre et tailles variables.
• Au chargement d’un processus, on lui alloue exactement la taille mémoire nécessaire. Le reste devient une nouvelle zone libre (bloc libre ou trou).
• Lorsqu’il se termine, sa partition devient libre et peut augmenter la taille d’une partition libre adjacente.
• Ce schéma peut générer une frag externe, mais élimine définitivemeent la frag Interne.
19
4) Allocation contigüe par partitions dynamiques
-
IV.3 Allocation contiguë de la mémoire
• Décider où placer un processus de taille n dans l’un des blocs disponibles pouvant le contenir.
• 3 stratégies sont les plus utilisées:
o First-fit (1ère zone libre) : allouer le premier bloc de taille suffisante.
oBest-fit (Meilleur ajustement) : allouer le plus petit bloc qui soit suffisamment grand. Cet algorithme laisse des blocs trop petits pour inclure un autre processus.
oWorst-fit (pire ajustement ): allouer le plus grand bloc. Cet algorithme a été introduit pour remédier au problème engendré par le best-fit, en laissant des blocs de grande taille plus susceptibles de contenir d’autres processus.
20
5) Algorithmes de placement
-
IV.3 Allocation contiguë de la mémoire
21
• Le processus 7 de taille 35 Mo va être chargé en mémoire
• Selon l’algorithme utilisé, choisir le bloc
pouvant contenir le processus: * First-fit: * Best-fit: * Worst-fit:
Processus 3
Processus 4
Processus 5
30Mo disponible
40Mo disponible
Processus 6
70Mo disponible
Processus 1
45Mo disponible
premier (45Mo)
plus petit (40Mo)
plus grand (70Mo)
5) Algorithmes de placement
-
IV.3 Allocation contiguë de la mémoire
Quel est le meilleur de ces algorithmes?
•Critère principal: éviter le fait qu’un processus ne puisse être servi même s’il y a assez de mémoire.
•Best-fit: le trou créé est le plus petit possible. La mémoire se remplit alors de trous trop petits pour contenir un processus.
•Worst-fit: les trous crées seront les plus grands possibles.
• Les simulations effectuées dans ce domaine montrent qu’il ne vaut pas la peine d’utiliser les algorithmes complexes.
• First-fit donne de bons résultats en termes de disponibilité des blocs et surtout il ne gaspille pas de temps dans la recherche de blocs.
22
5) Algorithmes de placement
-
IV.3 Allocation contiguë de la mémoire
• Compactage (défragmentation):
o Effectué quand un processus ne trouve pas une partition assez grande, mais sa taille est plus petite que la frag externe existante.
o Pour cela, on déplace les processus (vers le bas de la mémoire par exemple) et on les range l’un après l’autre de manière contiguë. La valeur du registre de base doit être changée pour chaque processus.
o On obtient ainsi un seul bloc libre de grande taille, mais cette opération est coûteuse.
↓ Inconvénients:
o temps de transfert des processus
o rétablissement de tous les liens entre les adresses.
• Une autre technique pour réduire le problème de la frag est d’utiliser une allocation non contiguë de la mémoire.
23
6) Le Compactage