Ficha de revisão: Gestion de la mémoire virtuelle et partage

📋 Plan du Cours

  1. Mémoire virtuelle : intuition et motivation
  2. Problèmes de la mémoire physique
  3. Indirection et abstraction adressage direct
  4. MMU et traduction VA vers PA
  5. Pagination et table de pagination
  6. Pagination à la demande et défaut de page
  7. Localité, working set et thrashing
  8. Allocation dynamique avec mmap
  9. Types de mapping mmap et partage
  10. Protection, isolation et partage mémoire

📖 1. Mémoire virtuelle : intuition et motivation

🔑 Notions clés & Définitions

  • Mémoire virtuelle : Technique où chaque processus dispose d’un espace mémoire qui lui paraît privé, même si la mémoire réelle est partagée.
  • Espace d’adressage : Ensemble des adresses qu’un processus peut utiliser pour indexer sa mémoire vue comme un tableau d’octets.
  • CPU virtuel : Idée selon laquelle le processeur est partagé entre processus tout en donnant à chacun l’illusion d’un CPU dédié.
  • Hiérarchie mémoire : Organisation des supports de stockage (cache, RAM, disque) du plus rapide au plus lent, avec des accès gérés en cascade.
  • Cache miss : Événement où le cache ne contient pas la donnée demandée, obligeant à aller chercher ailleurs (ex. RAM).

📝 Points essentiels

  • Chaque processus a sa propre mémoire vue comme un grand tableau d’octets, indexé par des adresses propres au processus.
  • Le programmeur peut, en pratique, décider où placer code et données dans l’espace du processus via l’allocation.
  • L’implémentation combine plusieurs niveaux (cache, RAM, disque) et reste en grande partie invisible pour le programmeur.
  • La mémoire vive est limitée par la vitesse : SRAM est rapide mais coûteuse, tandis que DRAM est moins chère mais environ 100× plus lente.
  • La mémoire vive est limitée par la capacité : un espace d’adressage de 64 bits correspond à 2^64 octets, soit 17 179 869 184 Gio, alors que la RAM physique est de l’ordre de quelques Gio.
  • L’espace disponible doit être géré malgré de nombreux processus simultanés, des durées d’usage différentes et des types d’objets hétérogènes (code lecture seule, données chargées depuis disque, variables lecture+écriture

💡 Astuce mémo

Mémoire virtuelle = «tableau privé» par processus, mais réalisée avec une «échelle» cache→RAM→disque pour compenser lenteur et petite taille.

📖 2. Problèmes de la mémoire physique

🔑 Notions clés & Définitions

  • Mémoire physique : La mémoire physique est la mémoire réelle de la machine, typiquement la DRAM, adressée par des adresses physiques.
  • Mémoire virtuelle : La mémoire virtuelle est un espace d’adressage présenté au CPU, mappé vers la mémoire physique par le système de gestion mémoire.
  • Indirection : L’indirection est un accès indirect via une référence, permettant de passer par un niveau supplémentaire avant d’atteindre la donnée ou le code.
  • Mémoire adressée directement : L’adressage direct fait correspondre une adresse CPU à une position mémoire sans passer par une traduction dynamique.
  • MMU : La MMU est le composant matériel qui traduit les adresses virtuelles du CPU en adresses physiques à la volée.

📝 Points essentiels

  • La mémoire physique doit gérer simultanément de nombreux processus, chacun consommant du code, des données et des variables.
  • La taille et la durée d’occupation de chaque processus posent un problème de dimensionnement de l’espace mémoire.
  • Les processus manipulent souvent des éléments hétérogènes, comme du code en lecture seule et des données chargées depuis le disque.
  • Les variables locales et globales sont en lecture et écriture, contrairement au code typiquement protégé en lecture seule.
  • La protection de chaque processus nécessite d’empêcher l’accès non autorisé aux zones mémoire des autres processus.
  • La coopération entre processus nécessite un mécanisme de partage, par exemple via une zone de mémoire partagée (shared memory).

💡 Astuce mémo

Indirection = “référence → intermédiaire → cible” : on passe par un relais avant d’atteindre code/données.

📖 3. Indirection et abstraction adressage direct

🔑 Notions clés & Définitions

  • Adresse virtuelle : Une adresse virtuelle est un identifiant utilisé par le CPU pour référencer la mémoire, sans correspondre directement à la DRAM.
  • Adresse physique : Une adresse physique désigne l’emplacement réel dans la mémoire principale (DRAM) ou chez un périphérique.
  • Memory Management Unit : La MMU est le composant matériel qui traduit les adresses virtuelles en adresses physiques à la volée.
  • Espace d’adressage virtuel : L’espace d’adressage virtuel est l’ensemble des adresses virtuelles possibles, noté VAS={0,…,N−1}.
  • Espace d’adressage physique : L’espace d’adressage physique est l’ensemble des adresses physiques possibles, noté PAS={0,…,M−1}.

📝 Points essentiels

  • Le CPU manipule des adresses virtuelles (VA) et ne voit pas directement la DRAM.
  • La MMU traduit chaque VA en une adresse physique (PA) via une correspondance reconfigurable.
  • Chaque processus dispose d’un VAS privé, ce qui évite que les adresses de processus se confondent.
  • Le VAS est exprimé sur n bits avec N=2^n, et le PAS sur m bits avec M=2^m.
  • La mémoire centrale correspond à la mémoire physique (DRAM) et sert de support principal aux données en cours d’usage.
  • La MMU est reconfigurée par l’OS à chaque changement de contexte pour refléter le processus courant.

💡 Astuce mémo

VA→MMU→PA : la MMU fait le “dictionnaire” entre l’adresse vue par le CPU et l’adresse réelle.

📖 4. MMU et traduction VA vers PA

🔑 Notions clés & Définitions

  • MMU : La Memory Management Unit est le matériel qui traduit les adresses virtuelles en adresses physiques à chaque accès mémoire, avec l’aide du noyau.
  • Traduction d’adresses : La traduction d’adresses est le mécanisme qui convertit un numéro de page virtuelle (VPN) en numéro de page physique (PPN) puis recompose l’adresse physique.
  • Taille de bloc P : La taille de bloc P est l’unité commune de découpage, avec P=2pP=2^p octets, utilisée pour les pages virtuelles et les pages physiques.
  • Page virtuelle : Une page virtuelle est un bloc de taille P dans l’espace d’adressage virtuel, identifié par un numéro de page virtuelle VPN.
  • Page physique : Une page physique est un bloc de taille P dans la mémoire DRAM, identifié par un numéro de page physique PPN.

📝 Points essentiels

  • La MMU intervient à chaque accès mémoire pour traduire le VPN en PPN, rendant la gestion invisible pour le programme d’application.
  • Le disque est beaucoup plus lent que la SRAM/CPU et la DRAM, ce qui rend la gestion purement matérielle trop complexe et nécessite la coopération du noyau.
  • Le système utilise une vue virtuelle : les données résident réellement en DRAM, mais le CPU les adresse via des adresses virtuelles.
  • La taille de page P=2pP=2^p rend les opérations de calcul efficaces : division entière par P, modulo P, multiplication par P et ajout de l’offset sont gratuits en pratique.
  • La traduction suit : VPN=VA/PVPN=\lfloor VA/P\rfloor et PO=VAmodPPO=VA\bmod P, puis PA=PPN×P+POPA=PPN\times P+PO avec un offset identique dans VA et PA.
  • Les numéros de pages vérifient VPN{0,,X1}VPN\in\{0,\dots,X-1\} avec X=N/PX=N/P et PPN{0,,Y1}PPN\in\{0,\dots,Y-1\} avec Y=M/PY=M/P.

💡 Astuce mémo

VA = (VPN × P) + PO ; PA = (PPN × P) + PO : même PO, seul VPN→PPN change.

📖 5. Pagination et table de pagination

🔑 Notions clés & Définitions

  • Table de Pagination : Annuaire de traduction qui associe chaque numéro de page virtuelle VPN à un numéro de page physique PPN et à des métadonnées.
  • Page Table Entry : Entrée de table de pagination qui contient la correspondance VPN→PPN et des informations d’état pour la traduction d’adresse.
  • VPN : Numéro de page virtuelle, identifiant la page dans l’espace d’adressage virtuel.
  • PPN : Numéro de page physique, identifiant la page dans la mémoire physique.
  • Page Offset : Partie basse de l’adresse qui désigne la position dans la page et reste identique en virtuel et en physique.

📝 Points essentiels

  • La traduction d’adresse utilise PA=PPN×P+POPA=PPN\times P+POPOPO (offset) est identique dans la page virtuelle et la page physique.
  • La taille de page vaut P=2pP=2^p, ce qui rend la division entière, la division modulo et la multiplication par PP efficaces (opérations de bits).
  • La division entière par PP extrait la partie haute (VPN), et le modulo PP extrait la partie basse (offset).
  • La table de pagination est un dictionnaire de correspondances : clé=VPN et valeur=PPN plus métadonnées, chaque paire forme une PTE.
  • Une PTE est stockée en mémoire principale, et la MMU la consulte en matériel pour traduire l’adresse sans intervention logicielle supplémentaire.
  • Il existe trop de PTE pour tenir entièrement dans la MMU : historiquement tableau exhaustif, aujourd’hui plutôt structure en arbre de recherche pour accélérer la consultation.

💡 Astuce mémo

Offset = même adresse dans la page : VPN change, PO reste.

📖 6. Pagination à la demande et défaut de page

🔑 Notions clés & Définitions

  • Valid bit : Le valid bit est un booléen du PTE qui indique si la page virtuelle est présente en DRAM et donc accessible.
  • PTE valide : Une PTE valide décrit une page virtuelle dont le contenu est en DRAM, ce qui rend l’accès mémoire possible.
  • PTE invalide : Une PTE invalide décrit une page virtuelle absente de DRAM, ce qui empêche l’accès direct et déclenche une gestion par le noyau.
  • Page fault : Un page fault est l’interruption déclenchée quand le CPU accède à une page virtuelle dont la PTE est invalide mais dont la page doit être chargée.
  • Segmentation fault : Un segmentation fault correspond à une erreur irrécupérable quand la page virtuelle demandée n’est pas allouée (adresse non valide pour le processus).

📝 Points essentiels

  • Une page virtuelle présente en DRAM correspond à une PTE valide, donc la MMU peut traduire vers une adresse physique et autoriser l’accès.
  • Une page virtuelle absente de DRAM (swapped-out ou uncached) correspond à une PTE invalide, donc l’accès déclenche une interruption logicielle.
  • Une page virtuelle non existante (unallocated ou unmapped) correspond aussi à une PTE invalide, mais l’erreur est irrécupérable et le noyau tue le processus.
  • Quand le CPU accède à une PTE invalide, la MMU déclenche une interruption logicielle et le CPU exécute l’ISR du noyau associée.
  • Si la page n’est pas allouée, le noyau considère l’accès comme une erreur irrécupérable (VO : segmentation fault) et termine le processus fautif.
  • Si la page est déchargée, le noyau traite un défaut de page (VO : page fault) et charge la page en DRAM avant de relancer l’accès.

💡 Astuce mémo

Valid bit = DRAM : 1 accès OK, 0 page fault (ou kill si non allouée).

📖 7. Localité, working set et thrashing

🔑 Notions clés & Définitions

  • Localité des accès : Principe selon lequel des adresses proches sont consultées à des instants proches, ce qui rend les accès mémoire plus prédictibles.
  • Working set : Ensemble des pages virtuelles qu’un processus a utilisées récemment, servant d’estimation de ses besoins en mémoire.
  • Thrashing : Effondrement brutal des performances dû à un excès de défauts de page, où le système passe son temps à échanger plutôt qu’à exécuter.
  • AMAT : Moyenne du temps d’accès mémoire, combinant le temps de hit et le coût des défauts de page pondéré par leur fréquence.
  • Working set en multiprogrammation : Situation où plusieurs processus ont chacun un working set, dont la somme peut dépasser la mémoire DRAM disponible.

📝 Points essentiels

  • AMAT = temps de hit + (taux de défaut de page × pénalité de défaut de page).
  • Le temps de hit est proche de la latence DRAM, environ 50 ns.
  • La pénalité d’un défaut de page correspond à la latence disque, environ 5 ms.
  • Les défauts de page doivent rester rares pour éviter une hausse massive de l’AMAT.
  • Principe de localité : si des accès sont proches dans le temps, les pages récemment utilisées ont plus de chances d’être réutilisées.
  • Working set d’un processus = ensemble des pages virtuelles accédées récemment par ce processus uniquement, pas par les autres.

💡 Astuce mémo

Localité = « proche maintenant, proche bientôt » ; Working set = « pages chaudes » ; Thrashing = « trop de pages froides à charger ».

📖 8. Allocation dynamique avec mmap

🔑 Notions clés & Définitions

  • Adresse virtuelle : Une adresse virtuelle désigne une zone vue par le processus, que le noyau relie ensuite à des pages physiques selon les besoins.
  • Pages virtuelles : Des pages virtuelles sont des unités fixes de mémoire virtuelle que le noyau mappe en nombre entier lors d’un appel mmap.
  • Flags de protection PROT : Les flags PROT indiquent les droits d’accès de la zone mappée, comme lecture, écriture et exécution.
  • Flags de mapping MAP : Les flags MAP décrivent le type de mapping et le comportement de partage, en combinant des options via un OR bitwise.
  • Swap file : Un swap file est un espace de stockage utilisé pour faire transiter des pages entre DRAM et disque lors des défauts de page.

📝 Points essentiels

  • mmap choisit une adresse virtuelle de départ et le noyau réserve un nombre entier de pages virtuelles pour la région demandée.
  • Les droits d’accès viennent de PROT_READ et/ou PROT_WRITE et/ou PROT_EXEC, combinables selon le besoin.
  • Les options de mapping se combinent avec un OR bitwise, par exemple MAP_ANONYMOUS | MAP_PRIVATE pour des pages vierges dédiées.
  • Avec MAP_ANONYMOUS, la région est allouée paresseusement page par page : le premier accès déclenche un défaut et le noyau fournit une page physique puis l’efface.
  • Le swapping correspond à un va-et-vient entre DRAM et un swap file : swap in au défaut de page, swap out pour libérer des pages physiques.
  • Comparaison : MAP_ANONYMOUS | MAP_SHARED rend les pages accessibles aux processus enfants, tandis que MAP_ANONYMOUS | MAP_PRIVATE isole via Copy-On-Write.

💡 Astuce mémo

Paresseux = premier accès = défaut de page = page physique fournie, puis swap in/out gère la DRAM.

📖 9. Types de mapping mmap et partage

🔑 Notions clés & Définitions

  • Memory-Mapped I/O : Technique de communication où le noyau mappe des adresses physiques de périphériques dans l’espace d’adressage pour y accéder comme de la mémoire.
  • MMIO : Zone d’adresses réservée au noyau et aux drivers pour accéder aux périphériques via leurs registres.
  • VAS : Espace d’adressage virtuel propre à un processus, géré par l’OS via une table de pagination.
  • Copy-on-Write : Mécanisme qui retarde la duplication des pages jusqu’au moment où une copie est modifiée.
  • fork() : Appel système qui crée un nouveau processus en dupliquant les structures, puis en s’appuyant sur Copy-on-Write pour éviter une copie immédiate.

📝 Points essentiels

  • Les adresses DRAM sont allouées aux processus userland, tandis que les adresses MMIO sont réservées au noyau et aux drivers.
  • La MMU sert de support matériel à la traduction et peut être reconfigurée à chaque changement de contexte pour refléter le VAS courant.
  • L’isolation entre processus repose sur un VAS individuel et sur une table de pagination maintenue par l’OS pour chaque processus.
  • Une même page peut être présente dans plusieurs VAS, ce qui permet du partage tout en conservant des espaces virtuels distincts.
  • Le mapping en lecture seule peut viser des pages comme un fichier exécutable, sans consommer d’espace disque supplémentaire.
  • Le mapping en lecture/écriture correspond à une mémoire partagée pour permettre la communication entre processus via les mêmes pages physiques ou mappages.

💡 Astuce mémo

DRAM=Userland, MMIO=Noyau; VAS=bulle par processus; COW=Copie seulement si ça s’écrit.

📖 10. Protection, isolation et partage mémoire

🔑 Notions clés & Définitions

  • Fork() : Appel système qui crée un nouveau processus en dupliquant l’espace d’adressage, tout en pouvant partager des pages via une stratégie de copie différée.
  • Copy-on-Write : Stratégie de gestion mémoire où des pages sont partagées en lecture seule jusqu’à la première écriture, qui déclenche une copie.
  • PTE en lecture seule : Entrée de table de pages configurée pour interdire l’écriture, afin de forcer la détection d’une tentative de modification.
  • PCB (page table) : Structure de contrôle par processus contenant les informations nécessaires pour traduire ses adresses virtuelles et gérer les pages associées.
  • Faute de protection : Interruption déclenchée par la MMU lorsqu’un processus tente d’écrire dans une page dont les droits ne l’autorisent pas.

📝 Points essentiels

  • Lors d’un fork(), le noyau duplique les structures de pagination (PCB et tables) et marque les PTE concernés en lecture seule pour éviter une copie immédiate.
  • Le noyau marque, dans les deux PCB, les pages partagées comme copy-on-write afin que les deux processus voient la même donnée tant qu’aucun n’écrit.
  • Quand P1 tente d’écrire dans une page marquée en lecture seule, la MMU détecte l’infraction et lève une faute de protection.
  • Après la faute, le noyau constate que la page est copy-on-write, duplique finalement le contenu de la page, puis met à jour les tables pour autoriser lecture/écriture.
  • Après mise à jour, P1 réessaie l’écriture et obtient une nouvelle donnée visible uniquement depuis son espace d’adressage.

💡 Astuce mémo

Copy-on-Write = «lecture partagée, écriture déclenche copie» : tant que ça ne s’écrit pas, ça ne se duplique pas.

📊 Tableaux de synthèse

PTE valide vs invalide (ce que voit la MMU)

État PTEPage en DRAMConséquence à l’accès
PTE valideOuiMMU traduit vers une adresse physique et l’accès est possible
PTE invalideNonMMU ne peut pas traduire et déclenche une interruption logicielle

Types de mapping mmap : partage vs isolation

Mapping (flags)PartageComportement à l’écriture
MAP_ANONYMOUS | MAP_SHAREDEnfants peuvent accéderPas d’isolation via COW (partage visible)
MAP_ANONYMOUS | MAP_PRIVATEIsolationCopy-On-Write : copie seulement à la première écriture
MAP_FILE | MAP_SHAREDPartage avec le fichier d’origineSwap vers le fichier d’origine
MAP_FILE | MAP_PRIVATEIsolationCopy-On-Write puis swap vers fichier anonyme

⚠️ Pièges & confusions fréquents

  1. Confondre VA et PA : le CPU manipule des adresses virtuelles, la MMU traduit à la volée vers des adresses physiques.
  2. Croire que la page fault est gérée par le programme : c’est une interruption logicielle où le noyau charge la page en DRAM puis relance l’accès.
  3. Mélanger page fault et segmentation fault : page fault = page déchargée à charger, segmentation fault = page non allouée/irrécupérable.
  4. Penser que PO change entre virtuel et physique : l’offset de page reste identique, seul VPN→PPN (ou équivalent) varie.
  5. Croire que la table de pagination tient dans la MMU : le cours indique qu’il y a trop de PTE, donc structure de recherche (ex. arbre) plutôt qu’un tableau exhaustif.
  6. Interpréter MAP_ANONYMOUS|MAP_PRIVATE comme “copie immédiate” : le cours insiste sur l’allocation paresseuse et l’isolation via Copy-On-Write.
  7. Confondre isolation et partage : une même page peut apparaître dans plusieurs VAS, donc partage possible malgré des espaces virtuels distincts.

✅ Checklist Examen

  1. Expliquer l’intuition de la mémoire virtuelle : chaque processus voit un “vas” privé comme un vaste tableau d’octets, réalisé via hiérarchie cache→RAM→disque.
  2. Relier les 4 problèmes motivant la mémoire virtuelle : lenteur, taille insuffisante, gestion des zones libres/occupées, isolation/protection et partage.
  3. Définir indirection et donner l’idée “référence → intermédiaire → cible” appliquée à la traduction d’adresses.
  4. Décrire le rôle de la MMU : traduire à chaque accès mémoire une VA en PA, reconfigurée par l’OS à chaque changement de contexte.
  5. Donner les ensembles VAS et PAS (VA sur n bits avec N=2^n, PA sur m bits avec M=2^m) et l’idée “VAS privé par processus”.
  6. Calculer la décomposition d’une adresse avec taille de page P=2^p : VPN=⌊VA/P⌋, PO=VA mod P, puis PA=PPN×P+PO.
  7. Expliquer pourquoi les calculs sont “gratuits” en pratique quand P=2^p (division entière/modulo/multiplication par bits) et rappeler que PO est identique en virtuel et physique.
  8. Décrire la table de pagination PT comme dictionnaire VPN→PPN+méta, et la notion de PTE (valid bit et métadonnées).
  9. Distinguer PTE valide vs invalide : page présente en DRAM (accès possible) vs absente (interruption logicielle).
  10. Décrire le déroulement d’un défaut de page : MMU détecte PTE invalide, OS vérifie l’existence, choisit une page libre (swap out si besoin), charge (swap in), met à jour la PTE, puis relance l’accès.
  11. Calculer/écrire AMAT = page hit time + (page fault rate × page fault penalty) et rappeler les ordres de grandeur (hit ~50 ns, pénalité ~5 ms) et le lien avec la localité/working set.
  12. Expliquer thrashing : somme des working sets > taille DRAM ⇒ excès de défauts de page ⇒ effondrement des performances.
  13. Expliquer mmap : réservation d’un nombre entier de pages virtuelles, droits via PROT_, partage via MAP_ (OR bitwise), et allocation paresseuse (premier accès ⇒ défaut).
  14. Comparer MAP_ANONYMOUS|MAP_SHARED vs MAP_ANONYMOUS|MAP_PRIVATE (COW) et MAP_FILE|MAP_SHARED vs MAP_FILE|MAP_PRIVATE (COW puis swap vers fichier anonyme).

Teste seu conhecimento

Teste seu conhecimento sobre Gestion de la mémoire virtuelle et partage com 10 perguntas de múltipla escolha com correções detalhadas.

1. Quel est l’intérêt principal de la mémoire virtuelle pour un processus ?

2. Quel problème la mémoire physique doit-elle notamment résoudre lorsqu’elle héberge plusieurs processus ?

Faça o quiz →

Revisar com flashcards

Memorize os conceitos chave de Gestion de la mémoire virtuelle et partage com 20 flashcards interativos.

Mémoire virtuelle — définition ?

Espace privé perçu par chaque processus.

Espace d’adressage — rôle ?

Indexer la mémoire virtuelle d’un processus.

CPU virtuel — concept ?

Illusion de CPU dédié à chaque processus.

Veja os flashcards →

Similar courses

Crie suas próprias fichas de revisão

Importe seu curso e a IA gera fichas, quizzes e flashcards em 30 segundos.

Gerador de fichas