作業系統與硬體

上方RISC-V程式碼最後的ecall指令被執行時,會發生下列何事?

li   a7, 64      # 系統呼叫的編號
li   a0, 1       # 引數1
la   a1, msg     # 引數2
li   a2, 13      # 引數3
ecall
  1. A以特權模式不變的方式,作為一般函式呼叫分支到指定編號的位址
  2. B中斷被停用,CPU停止運作直到下一次中斷到來
  3. C因例外而切換到特權模式,並執行核心的處理程序
查看答案與解析

正確答案:C. 因例外而切換到特權模式,並執行核心的處理程序

ecall是刻意引發例外的指令。CPU會儲存目前指令的位址,切換到特權較高的模式,並跳到作業系統所設定的例外處理入口。核心依據a7的編號判斷是哪一個系統呼叫,將a0~a2當作引數進行處理,回傳結果後再回到使用者模式。使用者模式無法直接分支到核心的函式,而讓CPU停止的是wfi這類另外的指令。

  • A. 不會以使用者模式直接分支,而是藉由例外切換模式。
  • B. 讓CPU停止並等待中斷的是wfi等另外的指令。
  • C. 正確。因例外進入特權模式,由核心負責處理。
練習這個領域 前往領域頁面

作業系統與硬體的其他題目

  1. 關於中斷與例外的差異,下列何者是一般的說明?
  2. 下列何者與指令的執行無關,且發生時間並不固定,屬於非同步事件?
  3. CPU接受中斷時,一般的處理流程為下列何者?
  4. 中斷向量表的作用為下列何者?
  5. 在重要處理的過程中暫時停用(遮罩)中斷時,下列何者是正確的注意事項?

這個領域的比較