Unité de gestion mémoire

Un article de Wikipédia, l'encyclopédie libre.
(Redirigé depuis Memory Management Unit)
Aller à : navigation, rechercher
Cette MMU MC68451 pouvait s'utiliser avec le Motorola 68010

Une unité de gestion mémoire (MMU pour memory management unit) est un composant permettant de contrôler les accès qu'un processeur fait à la mémoire de l'ordinateur dans lequel il est placé.

Historique[modifier | modifier le code]

A l'époque des premiers microprocesseurs, il s'agissait d'un circuit intégré dédié. Puis le MMU a été intégrée aux microprocesseurs, à partir du 80386 pour la gamme Intel x86, à partir du 68030 pour la gamme Motorola 680x0. L'unité de gestion mémoire fait désormais partie intégrante de tous les microprocesseurs récents.

Fonction d’un MMU[modifier | modifier le code]

Parmi les fonctions de tels dispositifs, on trouve :

  • La traduction d'adresses logiques en adresses linéaires par l'unité de segmentation (voir Segmentation)
  • La traduction d'adresses linéaires en adresses physiques par l'unité de pagination (voir Pagination)
  • Le contrôle de tampon
  • L'arbitrage du bus
  • La protection de la mémoire (généralement cette fonction est faite par le MPU (memory protection unit))
  • La commutation de banque (dans des architectures informatiques plus simples comme les systèmes 8 bit)

Principe[modifier | modifier le code]

L'utilisation la plus courante et connue d'un MMU est la protection de plages mémoire. Un programme donné ne doit pas pouvoir accéder (en lecture ou écriture) à la mémoire utilisée par un autre programme, voire par le système d'exploitation lui-même. D'une manière simple, chaque programme exécuté par le système d'exploitation se voit attribuer une zone mémoire protégée, dans laquelle aucun autre programme ne peut écrire. Ce principe de protection mémoire est la caractéristique la plus cruciale pour bénéficier d'un système d'exploitation stable. Les anciens systèmes d'exploitation qui n'en bénéficiaient pas plantaient souvent, selon que les programmes exécutés comportaient des erreurs de conception ou non. Il fallait alors redémarrer toute la machine.

L'utilisation de traduction d'adresse (d'adresse virtuelle en adresse physique) est souvent utilisée conjointement à la protection mémoire afin de permettre le placement du logiciel n'importe où en mémoire, y compris en le fractionnant. Ainsi, un système d'exploitation multitâche peut charger plusieurs programmes simultanément dans la mémoire physique libre à l'instant du chargement. Peu importe les plages de mémoire physique libres, il peut donner les adresses virtuelles souhaitées par le programme chargé. Et même en cas de fragmentation de la mémoire physique libre, il peut créer une plage d'adresses virtuelles d'un seul tenant.

Fonctionnement[modifier | modifier le code]

Le système d'exploitation programme le MMU en déclarant une zone mémoire précise comme appartenant à un programme précis (une zone exécutable de la mémoire). Si une tentative d'accès à de la mémoire hors plage est détectée, une interruption est levée par le MMU. Celle-ci est interceptée par le processeur et cela a généralement pour effet de stopper le programme, qui reçoit par exemple : un signal SIGSEGV (signal de violation de segmentation) sous Unix.