作業系統與硬體
處理完中斷或例外而回到原本的程式時,不使用一般函式的返回指令,而是使用專用的返回指令(RISC-V的sret、mret等),其理由為何?
- A因為專用的指令長度比較短
- B因為除了返回位置,還要一併還原模式與中斷的狀態
- C因為使用一般的返回指令時,處理常式無法得知返回位置的位址
查看答案與解析
正確答案:B. 因為除了返回位置,還要一併還原模式與中斷的狀態
發生例外或中斷時,CPU會將返回位置的位址,以及之前的運作模式、中斷是否原本為允許的狀態,儲存到專用暫存器後進入特權模式。返回時必須同時還原這些,並降到使用者模式後再前進到原本的指令,否則有可能以特權狀態繼續執行。專用的返回指令能以一個指令不可分割地完成這件事。這與指令長度無關,返回位置的位址可從已儲存的暫存器得知。
- A. 指令長度並不是理由。
- B. 正確。必須同時還原模式與中斷的狀態。
- C. 返回位置儲存在專用暫存器中,是可以得知的。