2015-12-04 2 views
0
  1. Pourquoi une partie de la mémoire virtuelle est-elle réservée pour le système d'exploitation? Pourquoi est-ce limité à une certaine taille? Cela semble être un fait universellement connu parce que quand j'ai googlé, je n'ai trouvé personne qui posait des questions similaires.
  2. Si le segment OS (la partie dans VM réservée pour le système d'exploitation) est accédé, que se passe-t-il?
  3. Comment le segment du système d'exploitation affecte-t-il la traduction entre la mémoire virtuelle et la mémoire physique? Par exemple, si votre mémoire virtuelle est de 128 Ko, les premiers 32 Ko sont alloués pour seg 0 et les derniers 32 Ko pour seg 1. Ensuite, vous réservez les 16 premiers Ko pour le segment d'OS. Qu'est-ce qui arrive à seg 0? Est-ce que sa taille rétrécit à 16 Ko parce que 16 Ko a été changé en seg SE? Ou reste-t-il le même?
+0

Et s'il n'y en avait pas et que vous n'aviez plus de VM. le noyau est seulement si grand. – Jasen

+0

que signifie «SE segment»? – Jasen

+0

@Jasen Désolé, je faisais référence à la partie dans VM réservée pour OS – HoneyWine

Répondre

0

Pourquoi une partie de la mémoire virtuelle est-elle réservée pour le système d'exploitation? Pourquoi est-ce limité à une certaine taille? Cela semble être un fait universellement connu parce que quand j'ai googlé, je n'ai trouvé personne qui posait des questions similaires. La raison pour laquelle une partie de l'espace d'adressage logique est réservée au système d'exploitation est que la même mémoire physique est partagée par tous les processus et doit se trouver au même emplacement.

Lorsqu'une interruption se produit, tout processus peut être en cours d'exécution. Le gestionnaire de mode noyau doit donc être au même emplacement.

Habituellement, la zone réservée du système d'exploitation est si grande que le système d'exploitation actuel ne sera jamais proche de l'utiliser. Donc ce n'est pas vraiment limité en taille.

Si le segment OS est accédé, que se passe-t-il?

Cela dépend de la façon dont on y accède. Si un processus accède en mode noyau (appel système, interruption, exception), c'est normal. S'il accède à la zone réservée en mode utilisateur, il déclenche généralement une violation d'accès quelconque. Certains systèmes peuvent rendre certaines zones de la mémoire système lisibles depuis le mode utilisateur mais sont généralement protégées en écriture.

Comment le segment du système d'exploitation affecte-t-il la traduction entre la mémoire virtuelle et la mémoire physique?

Cela dépend du système. Certains systèmes rendent les tables de pages utilisateur paginables. Les tables de pages utilisateur peuvent alors être dans des zones paginables dans l'espace d'adressage système. En d'autres termes, les tables de pages sont en mémoire virtuelle/logique, donnant une traduction supplémentaire pour les adresses d'utilisateur qui ne se produit pas pour les adresses système

La même chose pour l'espace d'adressage du système provoquerait un problème de poule et d'oeuf. Dans un tel système, les tables de pages système seraient dans des emplacements physiques (une autre raison pour laquelle tout le monde utilise la même plage d'adresses pour l'espace système).

D'autres systèmes utilisent des adresses physiques pour toutes les tables de pages. Dans le cas, la traduction est la même. Par exemple, si votre mémoire virtuelle est de 128 Ko, les premiers 32 Ko sont alloués pour seg 0 et les derniers 32 Ko pour seg 1. Ensuite, vous réservez les 16 premiers Ko pour le segment d'OS. Qu'est-ce qui arrive à seg 0? Est-ce que sa taille rétrécit à 16 Ko parce que 16 Ko a été changé en seg SE? Ou reste-t-il le même?

Ceci n'est pas un bon exemple. La mémoire virtuelle n'est jamais aussi petite. Imaginez un système 32 bits. L'espace d'adressage virtuel est de 4 Go. Le système affecte les 3 premiers Go à l'utilisateur l'espace utilisateur et le dernier 1 Go à l'espace système.

Tous les processus partagent le même espace système de 1 Go. Ils ont leur propre espace utilisateur de 3 Go.

+0

Merci! Ceci est une explication très détaillée. – HoneyWine