2011-02-04 2 views
0

UnixがプロセスAを実行しており、より高いレベルの割り込みが発生するとします。その後、OSは割り込み番号を取得し、IVTから呼び出すルーチンを探します。割り込みが発生した場合unixカーネルがどのプロセスをどのように決定するのですか

は今どのようにOSは、この割り込みは、プロセスAのためだったことを知っているんやプロセスB.のはそのプロセスBがディスクを読んで発行されている可能性があり、OSはプロセスAを実行している間に、それが戻ってきたのかもしれないではない

おかげでこれに

+0

割り込みを受け取った場合、それはそれ自身のためであることを知る –

答えて

3

スタート:http://en.wikipedia.org/wiki/MINIX

Goは本を購入し、それを読んで。それは本当に多くの助けになります。

割り込みは「プロセス」用ではありません。それらはデバイス用であり、デバイスドライバによって処理されます。

デバイスドライバが割り込みを処理し、デバイスの状態を更新します。

デバイスドライバは、I/O操作が完了したと判断した場合、そのI/O要求のキューを更新して、完了した操作を判断できます。保留中の操作のキューから操作が削除されます。

この操作を待っているプロセスは、すぐに実行可能になり、実行を再開できます。

1

あなたはハードウェア割り込みについて話していますが、これらはプロセスを対象としていません。

プロセスAがファイルを要求すると、すでにカーネルに存在するファイルシステム層がブロックデバイスからファイルをフェッチします。ブロックデバイス自体はドライバによって処理されます。

ブロックデバイスによってトリガされた割り込みが発生すると、OSにはドライバに関連するこの割り込みが発生します。ドライバは割り込みを処理するように指示されます。次に、読み込まれたブロックを照会し、要求されたブロックを確認します。

要求されたデータが準備完了であることがファイルシステムに通知された後、それがさらに処理されることがあります。その後、プロセスはブロックされた状態になります。

スケジューラの次のラウンドでは、スケジューラがこのプロセスを起床することを選択することがあります。また、別のプロセスを最初に起動するように選択することもできます。

ご覧のとおり、割り込み発生はプロセス操作から完全に切り離されています。

関連する問題