問題タブ [preemptive]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
operating-system - プリエンプティブおよびノンプリエンプティブ カーネル VS プリエンプティブおよびノンプリエンプティブ スケジューリング
プリエンプティブ カーネルと非プリエンプティブ カーネルの違い、およびプリエンプティブ スケジューリングと非プリエンプティブ スケジューリングの違いを理解するのに苦労しています。
オペレーティング システムの概念 (第 9 版)、Silberschatz、Galvin、および Gagne から:
プリエンプティブ カーネルは、カーネルがカーネル モードで実行されている間にプロセスを削除および置換できる場所です。
非プリエンプティブ カーネルでは、カーネル モードで実行されているプロセスをプリエンプトすることはできません。カーネル モード プロセスは、カーネル モードを終了するか、ブロックするか、自発的に CPU の制御を譲るまで実行されます。
非プリエンプティブスケジューリングでは、CPU がプロセスに割り当てられると、プロセスは、終了するか待機状態に切り替えることによって CPU を解放するまで、CPU を保持します。- これは、非プリエンプティブ カーネルの説明とまったく同じように思えます。
プリエンプティブ スケジューリングは、次の 2 つの状況で発生します (同じ本から)。
※プロセスがrunning状態からready状態に切り替わったとき(例えば、割り込みが発生したとき)
プロセスが待機状態から準備完了状態に切り替わるとき (たとえば、I/O の完了時)*
この本では、このシナリオには選択肢があると簡単に述べられていますが、その選択肢があるかどうかはわかりません。準備完了キュー内の同じプロセスを実行し続けることができるか、それとも準備完了キューから別のプロセスを選択して実行できるかの選択ですか?
基本的に、これら 4 つの用語の明確な説明が私が探しているものです。
ありがとうございました!
scheduling - スケジューリング中にタスクの作業時間が増加しますか? (先制スケジューリング)
これは、結果がすでに与えられている演習を研究しているときに見つけたものですが、これまでに研究したものとは少しずれているようです:
この図では、実行する 6 つのタスクを含む 2 つの CPU でのプリエンプティブ スケジューリングのスケジューリング テーブルを確認できます。もちろん、タスクの完了に必要な時間と優先度が各タスクに与えられています。
そして今、主な質問:
t=7 で CPU #2 でタスク #1 の作業を継続すると、タスク #1 の残り作業時間は 4 になるはずではありませんか? 図では、6 つのタスクのうち 6 つが完了したことを示していますが、元の 10 の作業時間のうち 6 つが t=0 で完了しました。これは、4 つのタスクしか残っていないことを意味します。演習のやり方が間違っているのでしょうか、それともマルチ プロセス スケジューリングについて知っておくべきことを見逃していましたか?
(最初はプロセッサの切り替えが原因だと思っていましたが、タスク#4を見るとそうではないようです)
ご意見ありがとうございます。