Système d'exploitation et matériel
Que se passe-t-il lorsque l’instruction ecall à la fin du code RISC-V ci-dessus est exécutée ?
li a7, 64 # システムコールの番号
li a0, 1 # 引数1
la a1, msg # 引数2
li a2, 13 # 引数3
ecall
- ABranchement vers l’adresse du numéro indiqué, comme un appel de fonction ordinaire, en restant en mode privilégié
- BLes interruptions sont désactivées et le CPU s’arrête jusqu’à la prochaine interruption
- CUne exception fait basculer en mode privilégié et le traitement du noyau s’exécute
Afficher la réponse et l'explication
Réponse : C. Une exception fait basculer en mode privilégié et le traitement du noyau s’exécute
ecall est une instruction qui provoque volontairement une exception. Le CPU sauvegarde l’adresse de l’instruction courante, bascule dans un mode plus privilégié et se rend au point d’entrée de traitement des exceptions défini par l’OS. Le noyau détermine l’appel système d’après le numéro dans a7, le traite avec a0 à a2 comme arguments, renvoie le résultat, puis revient en mode utilisateur. Il est impossible de brancher directement du mode utilisateur vers une fonction du noyau, et c’est une autre instruction, comme wfi, qui met le CPU en attente.
Continuer : 9 autres questions sur Système d'exploitation et matériel