Question

Remarque: Je tente d'étudier une vue d'ensemble de haut niveau de l'allocation de mémoire virtuelle

est un fendit d'espace d'adressage virtuel de processus en pages, d'une taille particulière:

  .text
  .bss
  .data

Est-ce que cela inclut également un espace de tas et la pile - ou est-ce toujours non-paginable

Était-ce utile?

La solution

Première note que les « pages » sont simplement régions d'un espace d'adressage. Une région qui est « non paginable » (je suppose que vous voulez dire qu'il ne peut pas être échangé sur le disque) est toujours logiquement divisé en pages, mais le système d'exploitation pourrait mettre en œuvre une autre politique sur ces pages.

La taille de la page la plus commune est de 4096 octets. De nombreuses architectures utilisent de support de plusieurs formats de page en même temps (par exemple les pages 4K ainsi que des pages 1MB). Cependant, les systèmes d'exploitation collent souvent avec une seule taille de page, car dans la plupart des cas, les coûts de gestion des tailles de plusieurs pages sont beaucoup plus élevés que les bénéfices fournis. Des exceptions existent mais je ne pense pas que vous devez vous en soucier.

Chaque page virtuelle a certaines autorisations qui s'y rattachent, comme si elle est lisible, inscriptible, exécutable (varie en fonction du support matériel). Le système d'exploitation peut utiliser pour aider à faire respecter la sécurité, la cohérence du cache (mémoire partagée), et les pages Délestage de mémoire physique.

Les .text, les régions .bss et .data ne doivent pas être connues du système d'exploitation (bien que la plupart des systèmes d'exploitation ne les connaissent, pour des raisons de sécurité et de performance).

Le système d'exploitation ne peut pas affecter réellement la mémoire d'une page pile / tas jusqu'à ce que la première fois que la page est accessible. Le système d'exploitation peut fournir des appels système pour demander plus de pages de l'espace tas / pile. Certains systèmes d'exploitation offrent la mémoire partagée ou la fonctionnalité de bibliothèque partagée qui conduit à davantage de régions qui apparaissent dans l'espace d'adressage. Cela dépend du système d'exploitation.

Autres conseils

En règle générale, sur un système d'exploitation paginée un processus ensemble espace d'adressage est divisé en pages. Chaque adresse linéaire contient deux composants -. Un numéro de page dans les bits les plus significatifs, et un décalage dans la page dans les bits les moins significatifs

Par exemple, avec 32 bits d'adresses linéaires et pages de 4 Ko, les 20 bits supérieurs sont un numéro de page et les 12 bits inférieurs sont un décalage de page.

.data est l'endroit où initialisées les variables globales du programme laïque. .bss contient les globals sans un initialiseur explicite (avec une valeur par défaut de 0). Le tas et la pile sont des zones de mémoire séparées de celles-ci et de l'autre. Toute la mémoire vu par un processus est toute la mémoire virtuelle divisé en pages. Un processus ne voit rien d'autre que la mémoire virtuelle.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top