J'étudiais les systèmes combinés de pagination/segmentation et dans mon livre, il y avait deux approches:
1.paged segmentation
2.segmented paging
Je ne pouvais pas faire la différence entre les deux. Je pense que dans la segmentation paginée, le segment est divisé en pages et dans la pagination segmentée, les pages sont divisées en segments, même si je ne sais pas si j'ai raison ou tort. Pendant ce temps, sur Internet, la pagination/segmentation combinée est décrite en utilisant un seul schéma. Je ne peux pas comprendre pourquoi dans mon livre de cours il y a deux schémas pour cela. Toute aide serait grandement appréciée.
Donc, après avoir vigoureusement cherché sur le net la différence ou la similitude entre ces deux termes, j'ai trouvé une réponse finale. Tout d'abord, j'écrirais le similitudes:
Maintenant, pour décrire les différences je vais devoir définir et décrire chaque terme séparément:
va = (s, p, w) où va est l'adresse virtuelle, | s | détermine le nombre de segments (taille de ST), | p | détermine le nombre de pages par segment (taille du PT), | w | détermine la taille de la page.
address_map(s, p, w)
{
pa = *(*(STR+s)+p)+w;
return pa;
}
Le schéma est ici:
va = (s1, s2, p, w)
address_map
(s1, s2, p, w)
{
pa = *(*(*(STR+s1)+s2)+p)+w;
return pa;
}
La description du diagramme est ici:
Le fait est que la pagination a les avantages suivants:
Mais il y a aussi un excellent comportement vu de la segmentation:
Les termes donnés peuvent être combinés et créer les termes suivants:
Plusieurs étapes doivent être suivies pour réaliser la pagination segmentée:
Les étapes suivantes ont lieu dans ce schéma:
La segmentation entraîne des traductions et des échanges de pages plus lents
Pour ces raisons, la segmentation a été largement abandonnée sur x86-64.
La principale différence entre eux est que:
Bien qu'il puisse sembler plus intelligent d'avoir des largeurs de segment configurables, lorsque vous augmentez la taille de la mémoire pour un processus, la fragmentation est inévitable, par exemple:
| | process 1 | | process 2 | |
----------- -----------
0 max
deviendra finalement à mesure que le processus 1 se développe:
| | process 1 || process 2 | |
------------------ -------------
0 max
jusqu'à ce qu'une scission soit inévitable:
| | process 1 part 1 || process 2 | | process 1 part 2 | |
------------------ ----------- ------------------
0 max
À ce point:
Cependant, avec des pages de taille fixe:
Les blocs de mémoire de taille fixe sont tout simplement plus faciles à gérer et ont dominé la conception actuelle du système d'exploitation.
Voir aussi: Comment fonctionne la pagination x86?