スケジューリングでの準備完了の待機は、プリエンプティブまたは非プリエンプティブとしてカウントされますか?
切り替える前に IO やイベントを実行する必要があるため、最初は非プリエンプティブだと思っていましたが、準備ができたときにリソースを返す必要があるため、プリエンプティブであると友人に言われました。
では、この場合、どちらの解釈が正しいのでしょうか?
スケジューリングでの準備完了の待機は、プリエンプティブまたは非プリエンプティブとしてカウントされますか?
切り替える前に IO やイベントを実行する必要があるため、最初は非プリエンプティブだと思っていましたが、準備ができたときにリソースを返す必要があるため、プリエンプティブであると友人に言われました。
では、この場合、どちらの解釈が正しいのでしょうか?
他のプロセスがその特定のリソースを必要としない場合でも、イベント/タスクの完了後にリソースを解放することは、すべてのプロセスの義務です。プリエンプションとは何の関係もありません。
一般に、プリエンプティブかどうかを決定するスケジュールされたプロセスの優先度に依存します。特定のステージは、プリエンプティブ/非プリエンプティブとして定義されていません。
それは依存します --- プロセスがプリエンプティブである場合、スケジュールされるまで待機しません。他の優先度の低いプロセスからチャンスを奪います。プロセスの優先度が低い/プリエンプティブではない場合、リソースが解放されるのを待ち続け、イベントを完了してから、スケジューラを介してディスパッチされます。
待機中 - リソースが使用可能になるか、イベントが発生するのを待っているため、プロセスは現在実行できません。たとえば、プロセスは、キーボード入力、ディスク アクセス要求、プロセス間メッセージ、タイマーのオフ、または子プロセスの終了を待機している可能性があります。