4

プリエンプティブ カーネルと非プリエンプティブ カーネルの違い、およびプリエンプティブ スケジューリングと非プリエンプティブ スケジューリングの違いを理解するのに苦労しています。

オペレーティング システムの概念 (第 9 版)、Silberschatz、Galvin、および Gagne から:

プリエンプティブ カーネルは、カーネルがカーネル モードで実行されている間にプロセスを削除および置換できる場所です。

非プリエンプティブ カーネルでは、カーネル モードで実行されているプロセスをプリエンプトすることはできません。カーネル モード プロセスは、カーネル モードを終了するか、ブロックするか、自発的に CPU の制御を譲るまで実行されます。

非プリエンプティブスケジューリングでは、CPU がプロセスに割り当てられると、プロセスは、終了するか待機状態に切り替えることによって CPU を解放するまで、CPU を保持します。- これは、非プリエンプティブ カーネルの説明とまったく同じように思えます。

プリエンプティブ スケジューリングは、次の 2 つの状況で発生します (同じ本から)。

  1. ※プロセスがrunning状態からready状態に切り替わったとき(例えば、割り込みが発生したとき)

  2. プロセスが待機状態から準備完了状態に切り替わるとき (たとえば、I/O の完了時)*

この本では、このシナリオには選択肢があると簡単に述べられていますが、その選択肢があるかどうかはわかりません。準備完了キュー内の同じプロセスを実行し続けることができるか、それとも準備完了キューから別のプロセスを選択して実行できるかの選択ですか?

基本的に、これら 4 つの用語の明確な説明が私が探しているものです。

ありがとうございました!

4

1 に答える 1