Je lis le livre sur les systèmes d'exploitation de Galvin. Galvin explique ce que sont les modes noyau et utilisateur, les privilèges d'instructions accordés pour les deux modes et aussi pour le mode-bit. Mais je suis intéressé de savoir comment le mode passe de l'un à l'autre. Fondamentalement, je veux résoudre la question suivante:
Un CPU a 2 modes, privilégiés et non privilégiés. Pour faire passer le mode de pré-prévalu à non pré-prévalu
a) Une interruption matérielle est nécessaire
b) Une interruption logicielle est nécessaire.
c) Une instruction privilégiée est nécessaire.
d) Une instruction non privilégiée est nécessaire.
D'après ce que je comprends,
du mode utilisateur au mode noyau - une interruption matérielle est nécessaire [comme dans les E / S disque]. Maintenant, dans le cas où le programme utilisateur se fatigue pour accéder à une mémoire qui est au-delà de sa plage autorisée, un piège se produit, qui est essentiellement une interruption logicielle qui sera gérée par le système d'exploitation. Maintenant, en mode utilisateur, nous ne pouvons exécuter aucune instruction privilégiée. Ainsi, une instruction non privilégiée telle qu'une demande d'E / S peut faire passer l'utilisateur en mode noyau. Donc je pense que pour changer
de non privilégié (utilisateur) à privilégié (noyau) - les instructions H / W Interrupt, S / W Interrupt & non-Privileged feront l'affaire.
Maintenant, passons au noyau en mode utilisateur. L'OS peut changer le noyau en mode utilisateur. Ainsi, il exécutera simplement une instruction privilégiée pour passer du mode noyau au mode utilisateur. Il n'a pas besoin de générer d'interruption H / w ou S / w. Je conclus donc, pour changer
de privilégié à non-privilégié - une instruction privilégiée fera l'affaire.
Ai-je raison ?
De plus, lors de l'exécution en mode noyau, toutes les interruptions seront désactivées, n'est-ce pas? La réponse ne peut donc pas être (a) ou (b). De plus, comme OS est essentiellement un logiciel, il ne peut pas générer d'interruptions H / W.
De plus, puisque le système d'exploitation lui-même gère les interruptions, cela n'a pas de sens pour moi de devoir générer une interruption (et la réparer) pour passer du noyau au mode utilisateur.
Veuillez me faire savoir si je me trompe quelque part. Toute aide à ce sujet est appréciée.