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
  1. ABranchement vers l’adresse du numéro indiqué, comme un appel de fonction ordinaire, en restant en mode privilégié
  2. BLes interruptions sont désactivées et le CPU s’arrête jusqu’à la prochaine interruption
  3. 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.

S'entraîner sur ce thème Retour au thème

Autres questions sur Système d'exploitation et matériel

  1. Quelle est l’explication générale de la différence entre interruption et exception ?
  2. Parmi les événements suivants, lequel est asynchrone, sans rapport avec l’exécution des instructions et survenant à un moment imprévisible ?
  3. Quel est le déroulement général du traitement lorsque le CPU accepte une interruption ?
  4. Quel est le rôle de la table des vecteurs d’interruption ?
  5. À quoi faut-il prendre garde lorsqu’on désactive (masque) temporairement les interruptions pendant un traitement important ?

Comparatifs sur ce thème