1

プロセスが wait_event_interruptible を呼び出すと、プロセスはスリープ状態になります (条件が満たされ、保留中のシグナルがない場合)、スケジューラはプロセスを実行キューから待機キューに移動します。wake_up 呼び出しがある場合、どのように正確に、誰が待機キューからプロセスを削除し、実行キューに保持しますか?

タクス

4

1 に答える 1

0

「wake_up 呼び出し」は、別のスレッド/プロセス/タスク (一部のカーネルは、プロセスではなくスレッドに状態を設定します) によって実行されるシステム コールで、スレッド/プロセス/タスクをパラメーターでウェイクアップします。システムコールは割り込みであるため(Linuxint $0x80では、最近置き換えられるまでsysenterは基本的に同じです)、カーネルに入ると、スケジューラが呼び出され、要求されたスレッド/プロセス/タスクがブロックされたキューからポップアウトされます。レディ キューにプッシュされます。このスレッド/プロセス/タスクの優先度が最も高い場合、最終的には割り込みから戻るときに実行されるため、ブロックされた状態から実行中の状態に直接移行します。

于 2012-06-07T16:19:48.330 に答える