Gestion de la Mémoire : Les Fondamentaux
Ce document explore les mécanismes de gestion de la mémoire dans les systèmes d'exploitation, depuis les approches historiques jusqu'aux techniques modernes d'optimisation et de sécurité, en passant par la traduction d'adresses et la gestion des accès.
Core Principles
- La mémoire est divisée en pages pour une gestion plus efficace.
- La MMU (Memory Management Unit) traduit les adresses virtuelles en adresses physiques.
- Les tables de pages, organisées hiérarchiquement, mémorisent les correspondances entre pages virtuelles et physiques.
- Le TLB (Translation Lookaside Buffer) est un cache qui accélère la traduction des adresses.
- Les optimisations comme 'first-touch' et 'copy-on-write' améliorent l'efficacité de l'allocation mémoire.
- La sécurité de la mémoire est cruciale, avec des mécanismes comme ASLR et des protections contre les failles comme Meltdown et Spectre.
Formulas
- Adresse = Segment : Offset
- 12436 = 3 \times 4096 + 148
- 2^{20} \text{ entrées dans la table } (\approx 1 \text{ million})
- 12 \text{ bits pour le déplacement dans les pages (taille de page } 4 \text{ Ko})
- 20 \text{ bits restants pour adresser les pages}
- Chaque entrée occupe 20 bits (4 octets)
Pitfalls to Avoid
- Ne pas comprendre la fragmentation mémoire peut entraîner une mauvaise utilisation des ressources.
- Une mauvaise gestion des accès peut introduire des failles de sécurité.
- Ignorer l'overhead des tables de pages peut dégrader les performances.
- La copie complète de la mémoire lors du fork() est inefficace.
- Ne pas gérer correctement les accès concurrents en environnement multi-cœurs peut causer des problèmes de synchronisation.
Myth vs Reality
- La mémoire est toujours allouée dès la création d'un processus.: Grâce à l'allocation 'first-touch' (lazy allocation), les pages ne sont allouées que lorsqu'elles sont réellement accédées pour la première fois.
- Le TLB est une simple table de traduction d'adresses.: Le TLB est un cache matériel qui stocke les traductions récentes pour accélérer l'accès, et il utilise des politiques de remplacement comme LRU.
- Les failles comme Meltdown et Spectre sont dues à des bugs logiciels.: Ces failles exploitent des caractéristiques de conception des processeurs modernes comme l'exécution 'out-of-order' et la spéculation, plutôt que des bugs logiciels.
People
- Intel: Fabricant de processeurs affectés par Meltdown.
- Linux: Système d'exploitation dont la gestion mémoire est analysée (32 bits et 64 bits).
- Unix: Système d'exploitation dont le mécanisme de création de processus (fork + exec) est discuté.