2016-01-10 2 views

Répondre

0

La routine de service d'interruption (ISR) va s'exécuter en mode noyau. La table de saut que le processeur utilise pour déterminer quelle routine exécuter sur l'interruption elle-même ne peut pas être permutée, car le gestionnaire d'erreur de page est également présent. Je ne sais pas exactement ce qui se passerait si l'adresse du gestionnaire indiquait une région de mémoire non mappée. La mémoire virtuelle peut être supportée en mode noyau, au moins sur x86. Peut-être que certaines architectures pourraient gérer une erreur d'accès pour une adresse ISR, mais un OS ne l'implémenterait jamais, parce que la latence pour entrer l'ISR serait totalement inacceptable.

+0

Merci pour votre réponse. Oh, désolé pour mon anglais, vous ne comprenez probablement pas la question. Je veux dire que le gestionnaire d'interruptions souffre d'un retard lié à la traduction de l'adresse virtuelle à physique (TLB manque par exemple). Ce ne serait pas mieux de faire par cela - le modèle de mémoire est divisé en taux par exemple 1: 3, où 1/4 de la mémoire est démappée (exactement pour les besoins du système d'exploitation). Par moi, le système d'exploitation ne nécessite pas de traduction des adresses virtuelles à physique quand le gère. –

+0

Je suis sûr que vous pouvez aller sans tables de pages. Ou vous pouvez avoir une table de page de niveau unique où une entrée de niveau supérieur couvre toute la RAM. Dans les deux cas, vous n'encourez (essentiellement) jamais les frais généraux d'un missive TLB. Notez que les échecs TLB ne constituent généralement pas beaucoup de frais généraux. L'associativité est élevée et chaque entrée correspond à au moins 4 Ko de mémoire, de sorte que la localité spatiale et temporelle est haute. Le TLB est recherché en parallèle pour accéder au cache, de sorte qu'il n'entraîne aucune charge supplémentaire sur un hit. –