Quel espace d'adressage est utilisé dans les appels système? physique? ou virtuel?


0

Explication

Il existe deux types d’espace d’adresse virtuel et physique. Sur le modèle physique (généralement utilisé par le noyau) la mémoire est délimitée et chaque adresse correspond à une adresse physique.

Le virtuel est utilisé par les processus. Il n'y a pas de limite (sauf celui dû à la taille du pointeur) . Pour avoir plus de mémoire, le programme le demande simplement (en ignorant quel montant peut être demandé) . Chaque adresse est mappée sur différentes adresses physiques.
C’est ainsi que les processus sont limités dans ce qu’ils peuvent lire dans la RAM.

Le problème

Le raisonnement est que les appels système utilise ring0, mais en même temps (au moins sur linux) l'état du processus est mis à jour en interruptible, suggérant que les appels système utilisent l'espace d'adressage virtuel.
Autant que je sache, les anneaux de la CPU concernent des instructions privilégiées et non un espace d'adressage (comme il est lié à la MMU) .

Donc, si une lecture hors limites (en raison d'une vulnérabilité) se produit lors de l'exécution d'un appel système dans le code du noyau. Peut-il renvoyer de la mémoire à partir d'autres processus?

Réponses:


0

Le code en mode noyau peut faire à peu près tout ce qu’il veut, y compris surveiller les espaces d’adresse de divers processus.

Oui, le code en mode noyau utilise un espace d'adressage virtuel. Le noyau gère espace d'adressage physique mais il ne le fait pas courir dans espace d'adressage physique.

Le mode utilisateur ne peut rien lire dans la RAM car il ne dispose d'aucun moyen pour affirmer des adresses physiques.

Étant donné que le mode noyau s'exécute avec la traduction d'adresse activée, le code en mode noyau ne peut également revendiquer que des adresses virtuelles. Mais le code en mode k peut configurer des entrées de table de pages pour définir des adresses virtuelles qui se traduisent en toutes les adresses physiques auxquelles il est susceptible d'accéder.


-1

Les appels système appelés par le noyau utilisent un espace d'adressage physique.
Les appels système appelés par les processus utilisent un espace d'adressage virtuel.


Désolé mais c'est incorrect. Une fois que le système d'exploitation est démarré et active la pagination, il reste activé pendant toute la vie du démarrage. Par conséquent, vous utilisez des adresses virtuelles à la fois en mode utilisateur et en mode noyau.
Jamie Hanrahan
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.