web-dev-qa-db-fra.com

Différences ou similitudes entre la pagination segmentée et la segmentation paginée?

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.

25
0decimal0

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:

  • Les deux (pagination segmentée et segmentation paginée) sont un type de systèmes combinés pagination/segmentation (la pagination et la segmentation peuvent être combinées en divisant chaque segment en pages).
  • Dans les deux systèmes, les segments sont divisés en pages.

Maintenant, pour décrire les différences je vais devoir définir et décrire chaque terme séparément:

  • Pagination segmentée - Les segments sont divisés en pages. La mise en œuvre nécessite STR (registre de table de segments) et PMT (table de mappage de pages). Dans ce schéma, chaque adresse virtuelle se compose d'un numéro de segment , numéro de page dans ce segment et un décalage dans cette page.Le numéro de segment est indexé dans la table de segment qui donne l'adresse de base de la table de page pour ce segment.Le numéro de page est indexé dans la table de page, dont chaque entrée est un cadre de page. le PFN (numéro de trame de page) et le décalage se traduisent par l'adresse physique, d'où l'adressage peut être décrit par la fonction suivante:

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:

Segmented Paging

  • Segmentation paginée - Parfois, la table de segments ou la table de pages peut être trop grande pour être conservée en mémoire physique (ils peuvent même atteindre des Mo) .Par conséquent, la table de segments est également divisée en pages et donc une table de pages de pages ST est créé. Le numéro de segment est divisé en page n ° (s1) et décalage de page (s2) du tableau de pages des pages ST. Ainsi, l'adresse virtuelle peut être décrite comme:

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: Paged Segmentation

37
0decimal0

Meilleures caractéristiques de la pagination

Le fait est que la pagination a les avantages suivants:

  1. Allocation rapide (au moins plus rapide que la segmentation)
  2. Aucune fragmentation externe (la dernière page de cette méthode souffre de fragmentation interne)

Meilleures caractéristiques de segmentation

Mais il y a aussi un excellent comportement vu de la segmentation:

  1. Partage
  2. Protection

Les termes donnés peuvent être combinés et créer les termes suivants:

  • Pagination segmentée: l'espace d'adressage virtuel est divisé en segments. L'espace d'adressage physique est divisé en cadres de page.
  • Segmentation paginée: La principale Technique de segmentation qui utilise la table des segments de processus sort parfois des limites! Cela signifie que la taille devient trop grande et que la mémoire principale n'a pas assez d'espace pour conserver la table des segments. Par conséquent, la table des segments et le numéro de segment sont divisés en pages.

Conditions requises pour la pagination segmentée

Plusieurs étapes doivent être suivies pour réaliser la pagination segmentée:

  1. Chaque entrée de table de segment représente une adresse de base de table de pages.
  2. STR (registre de table de segment) et PMT (table de mappage de page) sont remplis avec les valeurs souhaitées.
  3. Chaque adresse virtuelle se compose d'un numéro de segment, numéro de page et décalage dans cette page.
  4. Le numéro de segment est indexé dans la table des segments qui nous donne le adresse de base du table des pages pour ce segment.
  5. Le numéro de page est indexé dans la table des pages.
  6. Chaque entrée de table de pages est un cadre de page.
  7. Le résultat final qui est adresse physique est trouvé en ajoutant numéro de cadre de page et décalage.

Conditions requises pour la segmentation paginée

Les étapes suivantes ont lieu dans ce schéma:

  1. Chaque entrée de segment est divisée en plusieurs segments.
  2. Pour chaque entrée de table de segment, qui représente un regroupement des pages, une table de pages est créée.
4
hexpheus

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:

  • la pagination divise la mémoire en morceaux de taille fixe
  • la segmentation permet différentes largeurs pour chaque morceau

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:

  • la seule façon de traduire des pages est de faire des recherches binaires sur toutes les pages du processus 1, ce qui prend un journal inacceptable (n)
  • un échange hors du processus 1 partie 1 pourrait être énorme car ce segment pourrait être énorme

Cependant, avec des pages de taille fixe:

  • chaque traduction 32 bits ne fait que 2 lectures en mémoire: répertoire et marche de la table des pages
  • chaque swap est un 4KiB acceptable

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?