技術

[xv6 #21] Chapter 2 – Traps, interrupts, and drivers

テキストの31ページ

本文

プロセスの実行中、CPUは通常のプロセッサループを実行する。
通常のプロセッサループとは、一つの命令を読み込み、プログラムカウンタを進め、その命令を実行し、それを繰り返すことである。
ユーザープログラムから(次の命令の実行ではなく)カーネルへ処理を戻すのを制御する上でイベント群が発生する。
それらのイベントは、ユーザープログラムが何か異常なこと(例えば、PTEが存在しない仮想アドレスを参照したり)を実行しようとしてることを注意するためのデバイスの信号を含む。
もしくは、ユーザープログラムが、システムコールを使ってカーネルにサービスを求める事を含む。
それらのイベントを制御するために主たるチャレンジが3つある。

1.

プロセッサがユーザモードからカーネルモードへ(またその逆も)切り替えることを、カーネルが準備しなければならない。

2.

カーネルとデバイスは、その並列な活動状態を調整しなければならない。

3.

カーネルは、デバイスのインターフェイスをよく理解していなければならない。
それら3つのチャレンジに取り組むことは、ハードウェアに対する深い理解と注意深いプログラミングが要求され、そしてそれは理解しがたいカーネルコードに帰着する可能性がある。
この章では、xv6がどうやってその3つのチャレンジに取り組むかを説明する。

感想

第2章のまえがき的部分です。

3つのチャレンジを頭において読み進めたい。

コメントを残す

メールアドレスが公開されることはありません。



※画像をクリックして別の画像を表示

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください