OSとハードウェア

割り込みや例外の処理を終えて元のプログラムに戻るとき、通常の関数の戻り命令ではなく、専用の復帰命令(RISC-Vのsret・mretなど)を使う理由はどれか。

  1. A専用の命令の方が、命令の長さが短いから
  2. B戻り先に加え、モードと割り込みの状態も戻すため
  3. C通常の戻り命令では、ハンドラからは戻り先のアドレスが分からないから
答えと解説を見る

正解:B. 戻り先に加え、モードと割り込みの状態も戻すため

例外や割り込みが起きると、CPUは戻り先のアドレスのほか、それまでの動作モードや割り込みが許可されていたかどうかを専用のレジスタに保存して、特権モードに入ります。戻るときはこれらを同時に元に戻し、ユーザモードに下げてから元の命令へ進まなければ、特権のまま実行が続く危険があります。専用の復帰命令はこれを1命令で不可分に行います。命令の長さの問題ではなく、戻り先のアドレスは保存されたレジスタから分かります。

  • A. 命令の長さは理由ではありません。
  • B. 正しい。モードと割り込みの状態も同時に戻す必要があります。
  • C. 戻り先は専用のレジスタに保存されていて分かります。
この分野を解く 分野ページへ

OSとハードウェアのほかの問題

  1. リアルタイム性が求められるシステムで、割り込みが発生してからハンドラが動き出すまでの時間(割り込み遅延)を大きくしてしまう要因として最も適切なものはどれか。
  2. NMI(マスク不可能割り込み)の説明として正しいものはどれか。
  3. 複数のコアをもつシステムで、OSがあるページのページテーブルの項目を書き換えて対応を取り消したとき、必要になる処理として正しいものはどれか。
  4. プログラムが、OSが割り当てていないアドレスにアクセスしたときに一般的に起こることはどれか。
  5. ファイルをメモリに対応づける(mmapのような)しくみで、ファイルの内容を読むときに起こることの説明として正しいものはどれか。