Comment le noyau de savoir si le PROCESSEUR est en mode utilisateur ou en kenel mode?
Puisque le PROCESSEUR fonctionne en user/kernel mode, je veux savoir comment cela est déterminé par le noyau. Je veux dire, si un sys appel est appelé, le noyau exécute pour le compte de la démarche, mais comment le noyau de savoir qu'il est en cours d'exécution en mode noyau?
- double possible de CPU passe du mode Utilisateur au Mode Noyau : à Quoi faut-il faire? Comment est-il fait de cette transition?
- peut-être vous voulez dire contexte utilisateur/processus-contexte vs noyau-contexte/interruption contexte?
Vous devez vous connecter pour publier un commentaire.
Vous pouvez dire si vous êtes en mode utilisateur ou en mode noyau à partir du niveau de privilège défini dans le code-registre de segment (CS). Chaque instruction chargé dans la CPU, de la mémoire pointée par le RIP ou EIP registre (l'instruction de registre de pointeur de fonction de si vous êtes x86_64 ou x86 respectivement) va lire le segment est décrit dans le tableau de descripteur global (DTG) par le présent code descripteur de segment. Les deux premiers bits du segment de code descripteur déterminer le courant niveau de privilège que le code est en cours d'exécution à. Lorsqu'un syscall est faite, ce qui est généralement fait par le biais d'un logiciel d'interruption, le PROCESSEUR à vérifier le privilège de niveau, et si c'est en mode utilisateur, permettra l'échange de l'actuel code descripteur de segment pour un noyau-un niveau tel que déterminé par le syscall de l'interruption logicielle porte descripteur, ainsi que de faire une pile de commutateur et d'enregistrer les indicateurs actuels, le niveau de l'utilisateur CS valeur et RIP valeur sur ce nouveau noyau de niveau de pile. Lorsque le syscall est terminée, l'utilisateur en mode CS valeur, des drapeaux, et le pointeur d'instruction (EIP ou RIP) valeur sont restaurés à partir du noyau de la pile, et une pile de commutateur est de retour pour le courant de l'exécution de processus de la pile.
The lower two-bits of the code segment descriptor
?Largement si c'est noyau en cours d'exécution code en mode noyau. La transition à partir de l'espace utilisateur au mode noyau (pour un appel système) provoque un changement de contexte pour se produire. Dans le cadre de ce changement de contexte le mode CPU est changé.
Noyau de code n'est exécuté en mode noyau. Il n'y a pas de chemin, le code du noyau peut exécuter en mode utilisateur. Lorsque l'application appelle de l'appel système, il va générer un piège (interruption logicielle) et le mode de commutateur pour le mode noyau et le noyau de la mise en œuvre de système d'appel sera exécuté. Une fois que c'est fait, le noyau va revenir en mode utilisateur et l'utilisateur de l'application continuera de traitement en mode utilisateur.
Le terme est appelé "Superviseur Mode", qui s'applique aux x86/ARM et de nombreux autres processeur ainsi.
Lire ce (qui s'applique uniquement pour les CPU x86):
http://en.wikipedia.org/wiki/Ring_(computer_security)
Anneau de 0 à 3 sont les différents privilèges au niveau des CPU x86. Normalement Ring0 et 3 sont utilisés (noyau et utilisateur), mais de nos jours, l'Anneau 1 trouver des usages (par exemple, VMWare utilisé pour émuler l'invité de l'exécution de l'anneau 0). Seulement Ring 0 a le privilège d'exécuter certains privilégiés instructions (comme lgdt, ou lidt), et donc un bon test au niveau de l'assemblage est bien sûr pour exécuter ces instructions, et de voir si votre programme rencontre une exception ou pas.
Lisez ceci pour réellement identifier votre niveau de privilège (look pour le CPL, qui est un pictorialization de Jason réponse):
http://duartes.org/gustavo/blog/post/cpu-rings-privilege-and-protection
C'est une simple question et n'a pas besoin d'experts commentaire comme prévu ci-dessus..
La question est de savoir comment fonctionne un processeur arriver à savoir si c'est en mode noyau ou son mode utilisateur.
La réponse est en mode "bit"....
C'est un peu dans le registre d'État du processeur de registres.
Lorsque "mode de bit=0",,,elle est considérée comme en mode noyau(également appelé mode moniteur,mode privilégié,le mode protégé...et bien d'autres...)
Lorsque "mode bit=1", il est considéré comme le mode Utilisateur...et l'utilisateur peut désormais effectuer ses applications personnelles sans noyau spécial interruption.
si simple...n'est-ce pas??