OSとハードウェア

多くのOSで、カーネルの領域を各プロセスのアドレス空間の一部(例えば上位の範囲)に割り当てておき、ページテーブルの保護ビットでユーザモードからのアクセスを禁止している。この配置の主な利点はどれか。

  1. Aカーネルに入るとき、アドレス空間を切り替えずに済むから
  2. Bアプリケーションがカーネルの関数を、システムコールを使わず直接呼べるから
  3. Cカーネルのメモリを、各プロセスが自由に書き換えて共有できるから
答えと解説を見る

正解:A. カーネルに入るとき、アドレス空間を切り替えずに済むから

カーネルを各プロセスのアドレス空間に同じように割り当てておくと、システムコールや割り込みでカーネルに入るとき、ページテーブルを切り替えずにそのままカーネルのコードとデータにアクセスでき、TLBも消さずに済みます。ユーザモードからのアクセスはページテーブルの保護ビットで禁止されているので、アプリケーションがカーネルの関数を直接呼んだり、カーネルのメモリを書き換えたりはできません。この保護が破られると重大な脆弱性になります。

  • A. 正しい。カーネルに入るときにアドレス空間の切り替えが不要になります。
  • B. 保護ビットで禁止されているので、直接は呼べません。
  • C. ユーザモードからは書き換えられません。
この分野を解く 分野ページへ

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

  1. ページサイズが4 KBのとき、仮想アドレスのうちページ内の位置(オフセット)を表すのは何ビットか。
  2. ページサイズが4 KBのとき、32ビットの仮想アドレス0x00403ABCのページ番号とページ内のオフセットの組み合わせとして正しいものはどれか。
  3. RISC-Vの特権アーキテクチャで定められている主な動作モードの組み合わせとして正しいものはどれか。
  4. 割り込みや例外の処理を終えて元のプログラムに戻るとき、通常の関数の戻り命令ではなく、専用の復帰命令(RISC-Vのsret・mretなど)を使う理由はどれか。
  5. リアルタイム性が求められるシステムで、割り込みが発生してからハンドラが動き出すまでの時間(割り込み遅延)を大きくしてしまう要因として最も適切なものはどれか。