OSとハードウェア
多くのOSで、カーネルの領域を各プロセスのアドレス空間の一部(例えば上位の範囲)に割り当てておき、ページテーブルの保護ビットでユーザモードからのアクセスを禁止している。この配置の主な利点はどれか。
- Aカーネルに入るとき、アドレス空間を切り替えずに済むから
- Bアプリケーションがカーネルの関数を、システムコールを使わず直接呼べるから
- Cカーネルのメモリを、各プロセスが自由に書き換えて共有できるから
答えと解説を見る
正解:A. カーネルに入るとき、アドレス空間を切り替えずに済むから
カーネルを各プロセスのアドレス空間に同じように割り当てておくと、システムコールや割り込みでカーネルに入るとき、ページテーブルを切り替えずにそのままカーネルのコードとデータにアクセスでき、TLBも消さずに済みます。ユーザモードからのアクセスはページテーブルの保護ビットで禁止されているので、アプリケーションがカーネルの関数を直接呼んだり、カーネルのメモリを書き換えたりはできません。この保護が破られると重大な脆弱性になります。
- A. 正しい。カーネルに入るときにアドレス空間の切り替えが不要になります。
- B. 保護ビットで禁止されているので、直接は呼べません。
- C. ユーザモードからは書き換えられません。