Noyau d'un système d'exploitation INF2610 Chapitre 7 : Gestion de la mémoire Département de génie informatique et génie logiciel Chapitre 7 - Gestion de la mémoire • Généralités • Comment organiser la mémoire physique ? • Comment organiser l’espace d’adressage d’un processus ? • La pagination pure - Conversion d’adresses virtuelles en adresses physiques - Table des pages à plusieurs niveau et table inversée - Algorithmes de remplacement de page • Segmentation / pagination • Linux Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 7- 2 Généralités • Le gestionnaire de la mémoire est le composant du système d’exploitation qui se charge de gérer l’allocation d’espace mémoire aux processus : - Comment organiser la mémoire physique ? (Partitions fixes ou variables, cadres de même taille). - Comment mémoriser l’état de la mémoire? Parmi les parties libres en mémoire, lesquelles allouer au processus? (politique de placement) - Faut-il allouer tout l’espace nécessaire avant l’exécution ou à la demande ? (politique d’allocation). - S’il n’y a pas assez d’espace en mémoire, doit-on libérer de l’espace en retirant des parties ou des processus entiers ? Si oui lesquels ? (politique de remplacement). - Les adresses figurant dans les instructions sont-elles relatives (logiques /virtuelles) ? Si oui, comment les convertir en adresses physiques. - Si plusieurs processus peuvent être résidents en mémoire, comment assurer la protection des processus (éviter qu’un processus soit altéré par un autre) ? Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 7- 3 Généralités (2) Exigences : •Efficacité : la mémoire doit être allouée équitablement et à moindre coût tout en assurant une meilleure utilisation des ressources (mémoire, processeurs et périphériques). •Protection : Les processus ne peuvent pas se corrompre. •Transparence : Chacun des processus doit ignorer l’existence des autres en mémoire. •Relocalisation : la possibilité de déplacer un processus en mémoire. Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 7- 4 (Algorithmes de gestion de mémoire) Taille fixe (e.g. pages, blocs sur disque): on peut maintenir une liste des objets libres ou une carte (bitmap). Taille variable: on peut maintenir une liste des objets libres et chercher (premier assez gros, taille la plus proche...); on peut avoir différentes listes pour différentes catégories de tailles (algorithme des subdivisions). Ramasse-miettes (garbage collection): déterminer automatiquement la mémoire libérée (décompte de référence, marquage et balayage, compaction, copie, par générations). Le noyau Linux utilise plusieurs de ces algorithmes (liste des objets libres, subdivisions, décompte de référence) et maintient des réservoirs de mémoire libre par processeur. Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 7- 5 Comment organiser la mémoire physique ? Multiprogrammation : •La mémoire physique est partagée entre le système d'exploitation et plusieurs processus. •Le but est d’optimiser le taux d'utilisation du processeur. Taux d’utilisation = 1 – Pn où P est le taux d’attente d’E/S et n est le nombre de processus. Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 8.6 Chapitre 7- 6 Comment organiser la mémoire physique ? (2) • Partitions fixes • unité d’allocation partition • Un processus est chargé dans une partition SE Partition 2K Fragmentation interne Partition 4K Partition 6K Partition vide Partition 3K Mémoire Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 7- 7 Comment organiser la mémoire physique ? (3) • • • Partitions variables unité d’allocation partition Un processus est chargée dans une partition 0K 0K SE SE 40K 40K processus 5 processus 1 90K 100K 100K Fin du processus 1 processus 4 Arrivée du processus 5 processus 4 170K 170K 200K 200K processus 3 processus 3 230K 230K 256K 256K Fragmentation externe Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 7- 8 Comment organiser la mémoire physique ? (4) • Cadres (cases ou frames) de même taille fragmentation interne • unité d’allocation cadre • Un processus peut occuper plusieurs cadres contigus ou non P1 P1 P2 P3 P1 P3 P2 P2 P1 Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 7- 9 Comment organiser la mémoire physique ? (5) Pour gérer l'allocation et la libération de l'espace mémoire, le gestionnaire doit : •Connaître l'état de la mémoire : tables de bits ou listes chaînées. Mémorisation de l’état de la mémoire cas de BSD 4. Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 7- 10 Comment organiser la mémoire physique ? (6) Pour gérer l'allocation et la libération de l'espace mémoire, le gestionnaire doit : • Avoir une politique de placement et de récupération d’espace. - Premier ajustement (first fit) : première zone libre qui convient. - Meilleur ajustement (best fit) : plus petite zone libre qui convient. - Pire ajustement (worst case) : plus grande zone libre qui convient - Par subdivision Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 7- 11 Comment organiser la mémoire physique ? (7) Par subdivision (cas de Linux) : La mémoire centrale est gérée comme suit : •Initialement, la mémoire est composée d’une seule zone libre. •Lorsqu’une demande d’allocation arrive, la taille de l’espace demandé est arrondie à une puissance de 2. La zone libre initiale est divisée en deux. Si la première est trop grande, elle est, à son tour, divisée en deux et ainsi de suite... Sinon, elle est allouée au demandeur. •Le gestionnaire de la mémoire utilise un tableau qui contient des têtes de listes. Le premier élément du tableau contient la tête de la liste des zones de taille 1. Le deuxième élément contient la tête de la liste des zones de taille 2… •Cet algorithme conduit vers une importante fragmentation interne. Les espaces non utilisés (de la fragmentation interne) sont récupérés et gérés différemment. •Lors de la libération de l’espace, les zones contiguës de même taille sont regroupées en une seule zone. Allocation très rapide. Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 7- 12 Comment organiser la mémoire physique ? (8) Par subdivision (cas de Linux) : Demande de 6 pages 8 pages Demande de 5 pages 8 pages Demande de 3 pages 4 pages Libération de 8 pages + Libération de 8 pages 16 pages Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 7- 13 Comment organiser l’espace d’adressage d’un processus ? • Espace d’adressage d’un processus = ensemble de segments Segments = zones contiguës de tailles différentes Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 7- 14 Comment organiser l’espace d’adressage d’un processus ?(2) • Espace d’adressage d’un processus = ensemble de pages de même taille. 7 6 5 4 0 0 0 0 0 1 Mémoire physique 4 4 3 2 1 3 2 1 0 3 0 0 0 1 2 0 1 1 Table des pages Espace d'adressage linéaire • 0 1 0 2 1 0 6 0 0 3 Représenté par 1 Espace d’adressage d’un processus = ensemble de segments. Segment = ensemble de pages de même taille. Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 7- 15 Comment organiser l’espace d’adressage d’un processus ? (3) ● D’une manière générale, l’espace d’adressage est structuré en blocs de : – même taille (pages-> pagination) ou – tailles différentes (segments->segmentation). ● Les deux organisations peuvent être combinées : segment = {pages} ● Le format de l’adresse de cet espace est : – (numéro de page, déplacement dans la page) pour la pagination; – (numéro de segment, déplacement dans le segment) pour la segmentation; – (numéro de segment, numéro de page, déplacement dans la page) pour la segmentation/pagination. • L’allocation de l’espace mémoire physique nécessaire peut se faire : - avant l’exécution ou - à la demande au cours de l’exécution Mémoire virtuelle • Mémoire virtuelle - Taille de l’espace d’adressage peut être >> à celle de la mémoire physique - Espace d’adressage virtuel = {adresses virtuelles} Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 7- 16 Comment organiser l’espace d’adressage d’un processus ? (4) Exemple 1 : ● Supposez le format d’adresse virtuelle (b, d) sur 32 bits avec n bits pour d (offset) : – Le nombre maximal de blocs que peut contenir l’espace virtuel : 232-n – La taille maximale d’un bloc (page ou segment) : 2n – La taille maximale de l’espace d’adressage : 232 n => pertes par fragmentation et table des blocs n => pertes par fragmentation et table des blocs ● La table des blocs (pages ou segments) d’un processus permet de localiser les différents blocs de l’espace d’adressage. Elle contient une entrée par bloc : (bit de présence, adresse physique du début du bloc, ….). ● L’adresse de la table des blocs fait partie du contexte du processus à sauver ou à restaurer lors du changement de contexte. Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 7- 17 Comment organiser l’espace d’adressage d’un processus ? (5) • Il y a deux types d’adresses dans les systèmes implantant la mémoire virtuelle : - Celles référencées par les processus (adresses virtuelles, relatives, logiques), - Celles de la mémoire physique (adresses physiques ou réelles). ● Il faut notamment : – Un mécanisme de conversion d’adresses virtuelles rapide. – Une politique de remplacement de pages / segments => moins de fautes de pages / segments. Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 7- 18 La pagination pure • L’espace d’adressage (virtuel) et la mémoire physique sont structurées en unités d’allocations (pages pour l’espace d’adressage et cases (ou cadres) pour la mémoire physique). • La taille d’une page est fixe et égale à celle d’une case. Elle varie entre 512 octets et 8 Kio. (commande pagesize) • L’unité d’allocation est la page (le cadre). Il n’y a pas de fragmentation externe car toutes les pages sont de même taille. • Par contre, il peut y avoir une fragmentation interne si une page de l’espace d’adressage n’est pas pleine. Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 7- 19 La pagination pure (2) Exemple : Soit un programme de 64 Kio sur une machine 32 Kio de mémoire physique •Taille d’une page = Taille d’une case = 4 Kio. 7 •L’espace d’adressage virtuel 6 d’un processus est composé 5 4 3 de 16 pages de 4 Kio. 2 1 0 Mémoire physique •La mémoire physique est composée de 8 cases (cadres) de 4 Kio. 4 3 2 1 0 Espace d'adressage virtuel Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 7- 20 Conversion d’adresses virtuelles ● Adresse virtuelle = (numéro de page, déplacement dans la page). ● Les adresses virtuelles référencées par l’instruction en cours d’exécution doivent être converties en adresses physiques. ● La correspondance entre les pages et les cases est mémorisée dans la table de pages. Le nombre d’entrées dans la table est égal au nombre de pages virtuelles. ● La table des pages d’un processus doit être (en totalité ou en partie) en mémoire centrale lors de l’exécution du processus. Elle est nécessaire pour la conversion des adresses virtuelles en adresses physiques. ● Chaque entrée de la table des pages est composée de plusieurs champs, notamment : – – – – – – Le bit de présence Le bit de référence (R) Les bits de protection (un, deux ou trois bits) Le bit de modification (M appelé bit dirty/clean) Le numéro de case correspondant à la page son emplacement sur disque Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 7- 21 Conversion d’adresses virtuelles (2) : exemple ● Supposons que l’adresse virtuelle est sur 16 bits : (numéro de page (4 bits), déplacement dans la page (12 bits)). ● La conversion est réalisée en examinant l’entrée dans la table des pages correspondant au numéro de page. ● Si le bit de présence est à 0, la page n’est pas en mémoire, il faut alors lancer son chargement en mémoire. ● Sinon, on détermine l’adresse physique sur 15 bits en recopiant dans : – les 3 bits de poids le plus fort, le numéro de case (110) correspondant au numéro de page (0010) et – les 12 bits de poids le plus faible, les 12 bits de poids le plus faible de l’adresse virtuelle. Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 7- 22 Conversion d’adresses virtuelles (3) : exemple ● L’adresse virtuelle 8196 (0010 0000 0000 0100) est convertie en adresse physique 24580 (110 0000 000 0100). 0 0 1 0 0 0 0 010 1 1 001 1 2 3 110 1 000 1 100 1 011 1 000 000 0 0 000 0 101 1 000 111 0 1 000 0 000 0 000 000 0 0 Table des pages 15 Noyau d'un système d'exploitation 0 0 0 0 0 0 0 1 0 Adresse virtuelle 0 110 Adresse physique 1Adresse 1 0physique 0 0 0 0 0 0 0 0 Génie informatique et génie logiciel Ecole Polytechnique de Montréal 0 1 0 0 Chapitre 7- 23 Exercice 1 • Dans un système de mémoire virtuelle, la taille des pages virtuelles et physiques est 1024 octets et l’adressage virtuel est sur 16 bits. Un processus P1 utilise les 9 premières pages de son espace virtuel. Les champs P (bit de présence) et Cadre (numéro de cadre physique) de la table des pages de l’espace virtuel de P1 sont : 1. Quelle est la taille maximale (en nombre de pages) de l’espace virtuel d’un processus ? 2. Quelle est l'adresse physique correspondant à chacune des adresses virtuelles de P1 suivantes codées en hexadécimal : 0x0A2A et 0x01F1 ? Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 7- 24 Conversion d’adresses virtuelles (4) : MMU ● Cette conversion d’adresse est effectuée par un composant matériel du processeur le MMU : Memory Management Unit (MMU). ● Le MMU vérifie si l’adresse virtuelle reçue correspond à une adresse en mémoire physique (en consultant la table des pages). ● Si c’est le cas, le MMU transmet sur le bus de la mémoire l’adresse réelle, sinon il y a un défaut de page. ● Un défaut de page provoque un déroutement (trap) dont le rôle est de ramener à partir du disque la page manquante référencée (l’unité de transfert est la page). Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 7- 25 Conversion d’adresses virtuelles (5) : MMU Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 7- 26 Conversion d’adresses virtuelles (6) MMU avec mémoire associative TLB • Pour accélérer la translation d’adresse, le MMU est doté d’un composant, appelé mémoire associative, composé d’un petit nombre d’entrées (8 à 128). • Ce composant appelé aussi TLB (Translation Lookaside Buffers) contient des informations sur les dernières pages référencées. Chaque entrée est composée de : -Un bit de validité -Un numéro de page virtuelle -Un bit de modification (M) -Un, deux ou trois bits de protection -Un numéro de case 1 1 1 1 Noyau d'un système d'exploitation 140 20 130 129 1 0 1 1 RW RX RW RW Génie informatique et génie logiciel Ecole Polytechnique de Montréal 31 38 29 62 Chapitre 7- 27 Conversion d’adresses virtuelles (7) MMU avec mémoire associative TLB • Lorsqu’une adresse virtuelle est présentée au MMU, il vérifie d’abord si le numéro de la page virtuelle est présent dans la mémoire associative (en le comparant simultanément à toutes les entrées). • S’il le trouve et le mode d’accès est conforme aux bits de protection, le numéro de case est pris directement de la mémoire associative (sans passer par la table des pages). • Si le numéro de page est présent dans la mémoire associative mais le mode d’accès est non conforme, il se produit un défaut de protection. • Si le numéro de page n’est pas dans la mémoire associative, le MMU accède à la table des pages à l’entrée correspondant au numéro de page. • Si le bit de présence de l’entrée trouvée est à 1, le MMU remplace une des entrées de la mémoire associative par l’entrée trouvée. Sinon, il provoque un défaut de page. Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 7- 28 Conversion d’adresses virtuelles (8) MMU avec mémoire associative TLB A Début Mémoire Pleine? UCT accède au TLB Oui Non Remplacement de page Page dans TLB? Oui Non Accès à la table de pages Transfert de la page du disque vers la mémoire Mise à jour de la table de pages Noyau d'un système d'exploitation A Non Page en Mémoire? Oui Mettre à jour TLB Génie informatique et génie logiciel Ecole Polytechnique de Montréal UCT génère l’adresse physique Chapitre 7- 29 Conversion d’adresses virtuelles (9) MMU avec mémoire associative TLB ● Supposons qu’il faut 100ns pour accéder à la table des pages et 20ns pour accéder à la mémoire associative. ● Si la fraction de références mémoire trouvées dans la mémoire associative (taux d’impact) est s, le temps d’accès moyen est : s * 20 + (1-s) *100. Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 7- 30 Table des pages à plusieurs niveaux ● La taille de la table de pages peut être très grande: 220 entrées (plus d’un million) pour un adressage virtuel sur 32 bits et des pages de 4 Ko. ● Pour éviter d’avoir des tables trop grandes en mémoire, de nombreux ordinateurs utilisent des tables de pages à plusieurs niveaux. ● Par exemple, une table de pages à deux niveaux, pour un adressage sur 32 bits et des pages de 4 Ko, est composée 1025 tables de 1024 entrées. Il est ainsi possible de ne charger que les tables nécessaires. ● Dans ce cas, une adresse virtuelle de 32 bits est composée de trois champs : – un pointeur sur la table du 1er niveau (10 bits), – un pointeur sur une table du 2nd niveau (10 bits) et – un déplacement dans la page (12 bits). Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 7- 31 Table des pages à 2 niveaux Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 7- 32 ntains either the PPN of some physical page or the address of a disk block ss, the MMU must access PTEs before it can determine the PPN. As wit Table des pages à k niveaux O is identical to the VPO. VIRTUAL ADDRESS n-1 VPN 1 VPN 2 Level 2 Page Table Level 1 Page Table ... ... ... p-1 VPN k 0 VPO Level k Page Table PPN m-1 p-1 PPN 0 PPO PHYSICAL ADDRESS Figure 10.19: Addresstranslation with a -level pagetable. Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 7- 33 Table des pages inversée Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 7- 34 Algorithmes de remplacement de page ● A la suite d’une faute de page (lourde), le système d’exploitation doit ramener en mémoire la page manquante à partir du disque. ● S’il n’y a pas de case libre en mémoire, il doit retirer une page de la mémoire pour la remplacer par celle demandée. ● Si la page à retirer a été modifiée depuis son chargement en mémoire, il faut la réécrire sur le disque. ● Quelle est la page à retirer de manière à minimiser le nombre de défauts de page ? – Le choix de la page à retirer peut se limiter aux pages du processus qui a provoqué le défaut de page (allocation locale) ou à l’ensemble des pages en mémoire (allocation globale). – En général, l’allocation globale produit de meilleurs résultats que l’allocation locale. ● Ces algorithmes mémorisent les références passées aux pages. Le choix de la page à retirer dépend des références passées. Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 7- 35 Algorithme aléatoire ● Critère : choisir au hasard une page victime (à retirer de la mémoire) ● Facile ● Version locale et globale ● Utilisé pour des comparaisons entre méthodes Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 7- 36 Algorithme optimal (BELADY) ● Critère : remplacer la page qui sera référencée le plus tard possible dans le futur ● Irréalisable, ne peut être fait que a posteriori ● Version locale et globale ● Intérêt pour faire des études analytiques comparatives Nombre d'accès: 20 Fautes de page: 9 (45%) Exemple 1 : avec 3 cadres 7 0 7 7 1 7 2 2 0 2 3 2 0 2 4 2 2 2 3 2 0 2 3 2 2 2 1 2 2 2 0 2 1 2 7 7 0 7 1 7 0 0 0 0 0 0 4 4 4 0 0 0 0 0 0 0 0 0 0 1 1 1 3 3 3 3 3 3 3 3 1 1 1 1 1 1 1 Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 7- 37 Algorithme FIFO ● Critère : la page dont le temps de résidence est le plus long ● Implémentation facile : pages résidentes en ordre FIFO (on expulse la première) ● Ce n’est pas une bonne stratégie : critère non fondé sur l’utilisation de la page ● Anomalie de Belady : en augmentant le nombre de cadres on augmente le nombre de défauts de page au lieu de le diminuer. 7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1 7 7 7 2 2 2 2 4 4 4 0 0 0 0 0 0 0 7 7 7 0 0 0 0 3 3 3 2 2 2 2 2 1 1 1 1 1 0 0 1 1 1 1 0 0 0 3 3 3 3 3 2 2 2 2 2 1 Nombre d'accès: 20 Fautes de page: 15 (75%) Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 7- 38 Algorithme FIFO (2) Anomalie de Belady Exemple 2 avec 3 cadres Nombre d'accès: 20 Fautes de page: 15 (75%) 7 0 1 2 7 0 3 7 0 1 2 3 7 0 1 2 3 2 4 3 7 7 7 2 2 2 3 3 3 3 3 3 7 7 7 2 2 2 2 2 0 0 0 7 7 7 7 7 1 1 1 1 0 0 0 3 3 3 3 1 1 1 0 0 0 0 0 2 2 2 2 1 1 1 1 4 4 Exemple 2 avec 4 cadres Nombre d'accès: 20 Fautes de page: 16 (80%) 7 0 1 2 7 0 3 7 0 1 2 3 7 0 1 2 3 2 4 3 7 7 7 7 7 7 3 3 3 3 2 2 2 2 1 1 1 1 1 1 0 0 0 0 0 0 7 7 7 7 3 3 3 3 2 2 2 2 2 1 1 1 1 1 1 0 0 0 0 7 7 7 7 3 3 3 3 2 2 2 2 2 2 1 1 1 1 0 0 0 0 0 4 4 Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 7- 39 Algorithme LRU • Critère : page résidente la moins récemment utilisée • Basé sur le principe de localité : une page a tendence à être réutilisée dans un futur proche. • Difficile à implémenter sans support matériel Exemple 1 avec 3 cadres Nombre d'accès: 20 Fautes de page: 12 (60%) 7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1 7 7 7 2 2 2 2 4 4 4 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 3 3 3 3 3 3 0 0 0 0 0 1 1 1 3 3 3 2 2 2 2 2 2 2 2 2 7 7 7 Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 7- 40 Algorithme LRU (2) Comment l’implémenter ? • Mémoriser pour chaque page en mémoire la date de la dernière référence. • Vieillissement : • - Un registre de n bits est associé à chaque page, - Le bit le plus significatif est mis à 1 à chaque référence - Régulièrement, on décale vers la droite les bits de ce registre, - On choisit la page dont la valeur est la plus petite Utilisation d’une pile : - Ajouter ou déplacer, en sommet de pile, le numéro de la page référencée, - On remplace la page située au fond de la pile. Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 7- 41 Algorithme de l’horloge (seconde chance) ● Approximation de LRU ● Les pages en mémoire sont mémorisées dans une liste circulaire en forme d’horloge. ● On a un indicateur sur la page la plus ancienne et un indicateur de référencement R sur chaque page.. ● Lorsqu’un défaut de page se produit, les pages sont examinées, une par une, en commançant par celle pointée par l’indicateur. ● La première page rencontrée ayant son bit de référence R à 0 est remplacée. Le bit R de la page ajoutée est à 1. ● Le bit R des pages examinées est remis à 0. ● Une variante de cet algorithme, tient compte du bit de modification M. Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 7- 42 Algorithme de l’horloge (2) Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 7- 43 Comment répartir la mémoire entre les processus ? ● Allouer un même nombre cadres (cases) à chaque processus. Par exemple, si la mémoire totale fait 100 cadres et qu’il y a cinq processus, chaque processus recevra 20 cadres. ● Allouer les cases proportionnellement aux tailles des programmes ou en tenant compte des priorités. L’architecture impose un nombre minimum. ● L’allocation des cases peut se faire lors du chargement ou à la demande, au cours de l’exécution. Espace de travail (working set) : ● W(t,) est l'ensemble des pages qui ont fait l'objet d'au moins une référence entre le temps t- et t. ● On conserve en mémoire les pages référencées entre t et t- . ● Cet espace de travail ne doit pas excéder une certaine limite. Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 7- 44 Problème de l’écroulement du système ● Le système passe plus de temps à traiter les défauts de page qu’à exécuter des processus. ● Si le nombre de processus est trop grand et l’espace propre à chacun est insuffisant, ils passeront leur temps à gérer des fautes de pages. ● On peut limiter le risque d’écroulement en surveillant le nombre de défauts de page provoqués par un processus. ● Si un processus provoque trop de défauts de pages (au-dessus d’une limite supérieure) on lui allouera plus de pages; au-dessous d’une limite inférieure, on lui en retirera. ● S’il n’y a plus de cases disponibles et trop de défauts de pages, on devrait suspendre un des processus. Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 7- 45 Problème de l’écroulement du système (2) Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 7- 46 Retour sur instruction ● Sur la plupart des processeurs, les instructions se codent sur plusieurs octets. ● Si un défaut de page se produit au milieu d’une instruction, le processeur doit revenir au début de l’instruction initiale, avant de lancer le chargement de la page manquante en mémoire. ● Ce retour sur instruction n’est possible qu’avec l’aide du matériel. Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 7- 47 Segmentation/pagination ● L’espace d’adressage d’un processus est composé d’un ensemble de segments. Ces segments sont de tailles différentes (fragmentation externe). ● La segmentation facilite l’édition de liens, le partage entre processus de segments de données ou de codes. ● La segmentation peut être combinée avec la pagination : Chaque segment est composé d’un ensemble de pages. Les adresses virtuelles sont dans ce cas des triplets : (numéro du segment, numéro de page, déplacement dans la page) Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 7- 48 Linux 514 Espace d’adressage d’un processus • Chaque processus sur une machine de 32-bit a 3 GB d’espace d’adressage virtuel accessible en mode utilisateur, • le GB restant est réservé aux tables des pages, la pile d’exécution, données et code du système d’exploitation, accessible en mode noyau. process-specific data structures (e.g., page tables, task and mm structs, kernel stack) different for each process physical memory identical for each process kernel virtual memory kernel code and data 0xc0000000 %esp user stack 0x40000000 Memory mapped region for shared libraries process virtual memory brk runtime heap (via malloc) 0x08048000 0 Noyau d'un système d'exploitation uninitialized data (.bss) initialized data (.data) program text (.text) forbidden Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 7- 49 Linux (2) Espace d’adressage d’un processus task_struct mm vm_area_struct mm_struct pgd mmap vm_end vm_start vm_prot vm_flags vm_next vm_end vm_start vm_prot vm_flags • L’espace d’adressage est composé d’un ensemble de régions. process virtual memory shared libraries 0x40000000 data 0x0804a020 vm_next • Chaque région est un ensemble de pages contiguës avec les mêmes propriétés (text, data, pile, librairies partagées, fichier mmap,...). text vm_end vm_start vm_prot vm_flags vm_next 0x08048000 0 Figure 10.29: HowLinux organizesvirtual memory. Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 7- 50 Linux (3) Espace d’adressage d’un processus task_struct mm vm_area_struct mm_struct pgd mmap vm_end vm_start vm_prot vm_flags vm_next • • • vm_start et vm_end : pointent vers le début et la fin de la région. vm_prot : indique les permissions d’accès read/write aux pages de la région. process virtual memory vm_end vm_start vm_prot vm_flags shared libraries 0x40000000 data 0x0804a020 vm_next text vm_end vm_start vm_prot vm_flags vm_next 0x08048000 0 Vm_flags : indique notamment si 10.29: HowLinux organizesvirtual memory. la région est privéeFigure ou non. Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 7- 51 Linux (4) Espace d’adressage d’un processus • Comment vérifier si une adresse virtuelle est légale ? process virtual memory vm_area_struct • Comment vérifier si la page de l’adresse virtuelle est en mémoire ? vm_end vm_start r/o shared libraries vm_next vm_end vm_start r/w • Comment vérifier si l’accès est légal ? data • Comment récupérer l’adresse physique ? 1 segmentation fault: accessing a non-existing page 3 normal page fault vm_next vm_end vm_start r/o text 2 protection exception: e.g., violating permissions by writing to a read-only page vm_next Noyau d'un système d'exploitation 0 Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 7- 52 Linux (5) Espace d’adressage d’un processus 515 Adresse virtuelle Table des pages à 4 niveaux task_struct mm vm_area_struct mm_struct pgd mmap process virtual memory vm_end vm_start vm_prot vm_flags vm_next vm_end vm_start vm_prot vm_flags shared libraries 0x40000000 data 0x0804a020 vm_next text vm_end vm_start vm_prot vm_flags vm_next Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal 0x08048000 0 Chapitre 7- 53 physical and systems such as digital signal processors, embe Linuxaddressing, (6) y supercomputers continue to d’un do so. processus However, modern processors desig Espace d’adressage ngTranslation use a form of addressing known as virtual addressing (Figure 10.2). d’adresses CPU CPU chip chip CPU CPU Virtual Virtual Address Address (VA) (VA) Address Address translation translation MMU MMU Physical Physical address address (PA) (PA) 4100 4100 44 Main Main memory memory 0: 0: 1: 1: 2: 2: 3: 3: 4: 4: 5: 5: 6: 6: 7: 7: ... M-1: M-1: Data Data word word Figure 10.2: A systemthat usesvirtual addressing. Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 7- 54 Linux (7) Mémoire physique • Linux supporte des architectures NUMA (Non Uniform Memory Access) qui utilisent des unités mémoires hétérogènes avec des caractéristiques différentes. • Linux offre la possibilité de gérer ces unités mémoires en associant à chaque unité un nœud (de type struct_pglist_data). Ces nœuds sont chainés entre-eux. • Dans une architecture UMA, un seul nœud est présent. • Pour certaines architectures (ex. x86), il n’est pas possible de traiter toute la mémoire physique (unité mémoire) de la même manière. Chaque nœud (unité mémoire) est composé de trois zones mémoires : - • ZONE_DMA (16 Mo sur x86) réservée pour l’accès DMA des périphériques (qui ne peuvent accéder qu’aux 16 premiers Mio de la mémoire physique), ZONE_NORMAL (à mappage direct dans l’espace noyau) et ZONE_HIGHMEM utilisée si la taille des deux zones précédentes est supérieure à 896 Mo sur x86 (adresses non mappées de façon permanente). ZONE_DMA et HIGHMEM peuvent être vides. Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 7- 55 Linux (8) Mémoire physique • Le noyau conserve une image de la mémoire physique (ZONE_NORMAL). • La mémoire physique est constituée de trois parties. • Les deux premières (réservées au noyau et à l’image de la mémoire) sont fixées en mémoire (jamais swappées). • Le reste est divisé en cadres. Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 7- 56 Linux (9) Politique d’allocation : buddy algorithm • Un système de pagination à la demande sans prépaginiation ni concept d’ensemble de travail. • Allocation de la mémoire physique par subdivision Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 7- 57 Linux (10) Politique de remplacement • Au démarrage, Init lance un démon de pages (processus kswapd qui exécute l’algorithme de remplacement de pages de type « horloge ») pour chaque nœud mémoire. • Ce démon est réveillé périodiquement ou suite à une forte allocation d’espace mémoire, pour vérifier si le nombre de cases libres en mémoire est trop bas (inférieur à un seuil min). Si ce n’est pas le cas, il se remet au sommeil. • Sinon, Il parcourt les listes active et inactive de chaque zone à la recherche de pages à libérer. Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 7- 58 Linux (11) Appels système • Les appels systèmes splice et sendfile permettent d'éviter les copies: transférer les pages d'un espace d'adressage virtuel à l'autre par le biais des tables de pages. Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 7- 59 Exercice 1 Caractéristiques du système : Mémoire physique de 64 mots de 8 bits Taille d’une page = 4 mots Table des pages à deux niveaux: Adresse virtuelle sur 6 bits : 2 bits (niv. 1), 2 bits (niv. 2), 2 bits (décalage) Une entrée dans la table des pages sur 8 bits: - 2 bits de contrôle : bit de présence, bit de référence (10,11) si bit de présence =0 et bit de référence =1, la page est dans la zone de « «swap » - 6 bits pour l’adresse Deux processus P1 et P2 sont en mémoire. La table de premier niveau de P1 commence à 32 La table de premier niveau de P2 commence à 52. Supposez que l’état courant de la mémoire est : Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 7- 60 Figure 1 Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 7- 61 Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 7- 62 Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 7- 63