Le matériel fournit une Unité de Gestion Mémoire. C'est un morceau de circuit qui est en mesure d'intercepter et de modifier tout accès à la mémoire. Chaque fois que le processeur accède à la mémoire vive, par exemple pour lire de la prochaine instruction à exécuter, ou pour l'accès aux données déclenchée par une instruction, il le fait à certains d'adresse qui est, grosso modo, d'une valeur de 32 bits. Un mot de 32 bits peut avoir un peu plus de 4 milliards de valeurs distinctes, donc il y a un espace d'adressage de 4 GO: c'est le nombre d'octets qui pourrait avoir une adresse unique.
Ainsi, le processeur envoie la demande à ses sous-système de mémoire, comme "lecture de l'octet à l'adresse de x et de lui donner de nouveau à moi". La demande passe par la MMU, qui décide quoi faire avec la demande. Le MMU pratiquement divise les 4 GO d'espace dans les pages; taille de la page dépend du matériel que vous utilisez, mais les tailles typiques sont 4 et 8 ko. Le MMU utilise des tables qui indiquent ce qu'il a à faire avec des accès pour chaque page: soit l'accès est accordé avec une réécrit l'adresse (l'entrée de page dit: "oui, la page contenant l'adresse de x existe, il est dans la RAM physique à l'adresse y"), ou rejeté, à quel point le noyau est appelé à gérer les choses de plus loin. Le noyau peut décider de tuer le processus fautif, ou pour faire un peu de travail et de modifier la MMU les tables afin que l'accès peut-être essayé à nouveau, cette fois avec succès.
C'est la base de la mémoire virtuelle: du point de vue, le processus a un peu de RAM, mais le noyau a déplacé vers le disque dur, dans "l'espace de swap". Le tableau correspondant est marqué comme "absent" dans la MMU les tables. Lorsque le processus accède à ses données, le MMU appelle le noyau, ce qui extrait les données, de l'échange, il met à l'espace libre dans la mémoire RAM physique, et modifie la MMU les tables de point de l'espace. Le noyau, puis saute en arrière pour le processus de code, le droit à l'instruction, ce qui a déclenché toute l'affaire. Le processus de code ne voit rien de l'ensemble de l'entreprise, à l'exception que l'accès à la mémoire a pris un certain temps.
Le MMU gère également les droits d'accès, ce qui empêche un processus de lecture ou d'écriture de données qui appartient à d'autres processus, ou pour le noyau. Chaque processus a son propre ensemble de MMU les tables, et le noyau de la gestion de ces tables. Ainsi, chaque processus a son propre espace d'adressage, comme s'il était seul sur une machine avec 4 GO de RAM, sauf que le processus était mieux de ne pas accéder à la mémoire qu'il n'a pas alloué à juste titre, à partir du noyau, parce que les pages correspondantes sont marqués comme absent ou interdit.
Lorsque le noyau est appelée par le biais d'un système d'appel à partir d'un certain processus, le noyau de code doit s'exécuter dans l'espace d'adressage du processus; de sorte que le code du noyau doit être quelque part dans l'espace d'adressage de chaque processus (mais protégés: le MMU tables d'empêcher l'accès à la mémoire du noyau d'utilisateur non privilégié de code). Parce que le code peut contenir des adresses codées en dur, le noyau a intérêt à être à la même adresse pour tous les processus; classiquement, Linux, cette adresse est 0xC0000000. La MMU les tables pour chaque carte de processus qu'une partie de l'espace d'adressage à ce que physiques RAM bloque le noyau est chargé au démarrage. Notez que le noyau de la mémoire n'est jamais échangé (si le code qui peut lire les données à partir de l'espace de swap a été lui-même échangé, les choses allaient mal tourner assez vite).
Sur un PC, les choses peuvent être un peu plus compliqué, car il y a 32-bit et 64-bit les modes et les registres de segment, et PAE (qui agit comme une sorte de deuxième niveau MMU avec d'énormes pages). Le concept de base reste le même: chaque processus a son propre point de vue d'un virtuel 4 GO d'espace d'adressage, et le noyau utilise la MMU pour mapper chaque page virtuelle à une position physique dans la mémoire vive, ou nulle part à tous.