【ノンプリエンプティブスケジューリング】
ノンプリエンプティブスケジューリング とは?
最終更新:
💡 CPUを強制的に取り上げず、タスクが譲るのを待つ方式
実行中のプロセスやスレッドを、別のタスクへCPUを渡すために強制的には切り替えないスケジューリング方式。終了・待ち状態への移行・明示的な譲渡などを機に次のタスクを選ぶ。
📌 このページのポイント
ノンプリエンプティブスケジューリングってどういう仕組みなの?
プリエンプティブスケジューリングとはどう違うの?
プリエンプティブ方式は、タイマや高優先度タスクの準備などを機に、実行中でもCPUを取り上げられるよ。非横取り方式ではタスクが譲るタイミングに頼るので、長い計算がほかのタスクを待たせる。切り替え回数やコストはタスクの動作と実装にもよるので、必ず軽いとは言えないんだ。
今のパソコンでも使われているの?
じゃあもう完全に使われていないの?
メリットもあるんだね!
使い分けのポイントって何なの?
タスクがどれだけ長くCPUを使うか、ほかの処理をどれだけ待たせてよいかを見るんだ。協調型なら長い処理を適切に区切って譲る設計が必要。プリエンプティブ方式でも優先度などの設定で待ち時間は変わるので、名前だけで応答性や公平性が保証されるわけではないよ。
まとめ:ざっくりこれだけ覚えればOK!
「ノンプリエンプティブスケジューリング」って出てきたら「CPUを強制的に取り上げず、タスクが譲るのを待つ方式」と思えばだいたいOK!
📖 おまけ:英語の意味
「Non-preemptive Scheduling」 = 非横取りスケジューリング
💬 Nonは否定、preemptiveは先に取る・横取りするという意味。別のタスクへ渡すために、実行中のCPU使用を強制的に取り上げない方式だよ