プリエンプティブとノンプリエンプティブって

~「噛み砕いた説明がうますぎる!」先輩の例え話~

最近、業務で「スケジューリング」の仕組みについて調べる機会があったんですが、そこで「プリエンプティブ」と「ノンプリエンプティブ」という言葉が出てきました。
正直、初めて聞いたときは「なにそれ?難しそう…」という感じでした。でも、うちのチームの先輩(説明がめちゃくちゃうまい人)が例え話で教えてくれて、頭の中で一気に整理できたんです。せっかくなので、自分の備忘録としてその内容をまとめてみました!


プリエンプティブとは?

まず、プリエンプティブ(Preemptive)から。簡単に言うと、
「優先順位が高いタスクを、途中でも割り込ませる方法」です。

先輩いわく、これは「効率の良さ重視」の考え方。もっと優先するべきタスクがあれば、今やっている仕事を中断してでもそっちを先にやる、みたいな仕組みです。

先輩の例え話:プレゼン会場での時間管理

「プレゼン大会を想像してみ。発表者が5分間話してる途中でタイマーが鳴ったら、司会者が『はい、時間切れ!次の人!』って強制的に切り替える感じやな。まだ話し終わってなくても、次の発表が始まる。これがプリエンプティブのイメージや。」

特徴

メリット

優先度の高いタスクをすぐに実行できる。例えば、PCで作業中にシステム通知が割り込んでくるのはこの仕組みのおかげ。

デメリット

タスクを中断するコスト(オーバーヘッド)が発生する。途中で仕事を止めてまた再開するのって、効率悪いときもありますよね。

使われる場面

WindowsやLinuxなど、現代のマルチタスクOSではこれが主流です。


ノンプリエンプティブとは?

次に、ノンプリエンプティブ(Non-Preemptive)。こちらは「タスクが自分から終わらない限り、次のタスクに切り替えない方法」です。

先輩の例え話:順番を守る生徒たち

「次は、黒板を使って発表する生徒たちのイメージや。発表者が『以上で終わります!』って言うまで、次の生徒は黒板を使えない。順番を譲るのを待つだけやねん。これがノンプリエンプティブの動き方や。」

特徴

メリット

強制中断しないので切り替えコストが少ない。シンプルで安定した処理ができる。

デメリット

長いタスクがCPUを独占すると、後ろのタスクが延々待たされるリスクがある。

使われる場面

プリンターの印刷処理など、比較的シンプルなシステムでよく採用されています。


学んだこと2

プリエンプティブは「割り込みOK」、
ノンプリエンプティブは「最後までやり切る派」。
どちらの方式にも一長一短があって、使うシーンによって最適な方法が異なるということが分かりました。

先輩の例え話を聞いてから、「なんでOSがこんな風に動くのか」がぐっと理解しやすくなりました。普段使ってるPCやスマホの裏で、こんな頭の良い仕組みが働いてるんだな~と思うと、システムの奥深さに感動します。

これを書いてみて、自分の中でもスケジューリングの基礎がかなり整理できました。同じように「プリエンプティブ?何それ?」って思った人の参考になれば嬉しいです!

いいなと思ったら応援しよう!

新社会人の備忘録
この記事が少しでもお役に立ったと感じたら応援よろしくお願いします! チップでコーヒーを買いたいです☕️