22Fermer24
spectrasLe 15/07/2004 à 23:01
Ah oui mais attend, la granularité de l'OS, c'est comme les clusters sur disque dur, et ça dépend du reglage de l'allocateur.
Non. La taille des pages est fixe et dépend du processeur. En l'occurence sur ix86 le processeur gère deux tailles : 4ko et 4Mo (un bit à changer dans le cr0 ou le cr1).
On utilise bien un allocateur de mémoire
L'allocation de mémoire du système d'exploitation aux applications se résume à une liste chaînée des pages inutilisées. C'est tout. Les liens que tu as mis n'ont rien à voir, ils concernent la gestion de la mémoire sans pagination justement (par exemple dans une application, ou sur un système d'exploitation très simpliste).
la PMMU quand à elle sert à faire de la pagination dans le sens 'protection hardware' et générer une erreur de page si un processus écrit là où il n'est pas sensé écrire
C'est l'un des rôles, mais en fait c'est un effet de bord. La pagination a pour but de permettre justement la fragmentation de la mémoire, en établissant un mapping spécifique à chaque processus, faisant correspondre les adresses qu'il utilises à l'adresse réelle de la mémoire physique. La détection d'un accès erroné (Page Fault) n'est qu'un effet de bord de cette traduction, qui se produit quand justement il n'y a pas d'adresse réelle correspondant à l'adresse virtuelle demandée.
Mais l'arbitre de la mémoire, celui qui va allouer au processus tant et tant de mémoire, l'alignement, la granularité, etc... c'est bien un allocateur comme celui de Doug Lea. D'ailleurs, celui-ci surclasse le malloc du compilateur C si t'inclus malloc.c dans ton projet.
La gestion de la mémoire dans le processus est spécifique au processus, le système d'exploitation ne s'en mèle pas, il se contente juste de répondre à des ^H^H^H la requête de modification de l'espace dispo pour le processus (appel système brk() sous linux).
Voir mon post de 16H14
Au temps pour moi.