Pour répondre à cette question, je vais visiter une certaine compréhension préalable. La pagination de la demande pure ne peut pas être accomplie sans support matériel. Toutes les architectures informatiques modernes prennent en charge la pagination, mais beaucoup ont des détails d'implémentation différents.
Les processeurs x86 utilisent ce qu'on appelle une table de pages pour garder une trace des espaces d'adressage virtuels et des mappages de pages, ainsi que des bits sur les privilèges d'accès et, plus pertinent, si cette page est même présente dans la mémoire physique. Les violations déclenchent des défauts de page qui sont piégés par le système d'exploitation.
Pour plus d'informations à ce sujet, consultez cet article .
Afin de répondre à la question de l'échange de pages, nous devons d'abord visiter la question de savoir comment le système d'exploitation garde la trace des pages utilisées par quel processus et de la façon dont elles sont allouées. Il existe de nombreuses structures de données différentes qui peuvent être utilisées pour cela. Un tableau de bits plats indiquant si une trame est allouée ou non est à sens unique. Les listes ou piles liées en sont une autre. Avec la pagination de la demande pure, les pages allouées ne sont pas réellement marquées comme présentes lorsqu'elles sont allouées. Cela a pour effet qu'aucun bélier physique n'est mis de côté pour un processus jusqu'à ce qu'il y écrive réellement. Une fois qu'il le fait, le matériel lance une erreur que le système d'exploitation intercepte, puis le système d'exploitation utilise un algorithme de permutation s'il n'y a pas de pages physiques disponibles à affecter à la page virtuelle déjà allouée.
Pour plus d'informations sur l'allocation des cadres de page, voir ici . Vous y verrez un aperçu général de certaines infrastructures de données appropriées.
Une fois qu'un algorithme approprié pour l'allocation de pages est implémenté, un autre pour l'allocation d'espace disque pour l'échange doit être choisi. Windows, par exemple, a historiquement utilisé un fichier plat dans le système de fichiers pour l'échange de pages. J'imagine que pour chaque nœud de la structure de données assurant le suivi des pages allouées, il existe un pointeur associé à un décalage dans le fichier, indiquant la position de la page sur le disque. Les systèmes d'exploitation de type Unix ont traditionnellement utilisé des partitions distinctes pour l'échange de pages, ce qui est sans doute plus rapide car il n'y a pas de couche de système de fichiers.
Il est également possible de séparer les infrastructures de données de l'algorithme de permutation de celles de l'algorithme d'allocation, mais les deux sont liées, ce qui n'est probablement pas souvent fait.
J'espère que cela répond à votre question malgré la brièveté relative avec laquelle je l'ai traitée. J'ai trouvé que la meilleure façon de se renseigner sur les systèmes d'exploitation est de plonger dans les détails architecturaux parfois désagréables que l'on peut trouver dans des sites comme wiki.osdev.org et www.osdever.net qui traitent spécifiquement de la création de systèmes d'exploitation amateurs et fournissent d'excellents tutoriels. sur ces détails.