\r\n\r\n
プロセスとは、実行されているプログラムのことです。コンピュータは同時に多くのタスクを実行しているはずです。そのため、CPUはプロセスをフェッチして実行する必要があります。ある処理を実行し、他の処理を実行しないことが必要な場合があります。このとき、実行中のプロセスは中断され、CPUは新しいプロセスに割り当てられる。タスクが完了すると、CPUは前のプロセスに割り戻される。このような仕組みでスケジューリングすることをプリエンプティブスケジューリングという。実行中のプロセスを中断することができず、実行中のプロセスを必ず実行しなければならない場合、これを非強制スケジューリングと呼びます。OSにおけるプリエンプティブ・スケジューリングとノンプリエンプティブ・スケジューリングの違いについて説明します。プリエンプティブスケジューリングとは、あるプロセスが実行中に他のプロセスから割り込まれる可能性があるプロセススケジューリングの仕組みのことで、この仕組みを利用することで、あるプロセスが実行中に他のプロセスから割り込まれることを防ぐことができる。ノンプリエンプティブスケジューリングは、前のプロセスが終了してから実行を開始するプロセススケジューリング機構である。これがOSにおけるプリエンプティブ・スケジューリングとノンプリエンプティブ・スケジューリングの重要な違いである。
1. 概要と主な相違点 2. オペレーティングシステムにおけるプリエンプティブスケジューリングとは 3. オペレーティングシステムにおけるアンフォーストスケジューリングとは 4. オペレーティングシステムにおけるプリエンプティブとアンエンプティブの類似点 5. 並列比較 - 表形式OSにおけるプリエンプティブとアンエンプティブスケジュール 6. 総括
サイクリック・スケジューリングは、プリエンプティブ・スケジューリングの一例である。各プロセスはわずかなCPU時間しか必要としません。通常10ミリ秒から100ミリ秒の間。この小さなデータの単位は、時間量子とも呼ばれる。この時間が経過すると、プロセスはプリエンプトされ、レディキューの最後に追加されます。P1、P2、P3、P4の4つのプロセスがあるとすると、CPUのバーストタイム(ミリ秒)は次のようになります。量は20個です。
図01:循環型スケジューリングの例
P1プロセスは20まで実行され、残り33ミリ秒となる。そして、P2が実行される。時間量が20、P2の所要時間が17msなので、P2は17ms分実行され、P2の処理は完了する。そしてP3には、その機会が与えられます。20ms実行、48ms残し、その後P4が20ms実行、4msで完了。ここでもP1は20ms実行され、処理完了まで13msの猶予があります。ゼロにすることでP3が得られ、20ms実行され、28msで処理が完了します。P4が実行されます。4msしかないので、P4は実行終了。p2とP4はすでに終了しています。残りのプロセスはP1とP3である。P3に機会が与えられ、完了までに13msあるので終了する。これで、残るプロセスはP3のみとなり、28msで完了する。つまり、P3は20ms、それ以外は8ms、他のプロセスがすべて実行を終了した状態で実行されることになります。従って、P3の残り8msが再度実行されることになります。ここでも、各プロセスに実行のチャンスがある。
ノンプリエンプティブスケジューリングの例として、FCFS(First-come, First-served)スケジューリングがある。最初に要求されたプロセスが最初にCPUに割り当てられる。このスケジューリングは、先入れ先出し(FIFO)キューで簡単に管理できる。P1、P2、P3の順番で処理がある場合、まずP1に機会が与えられ、完了するとP2が実行される。P2 が終了すると、P3 が実行されます。P1、P2、P3の3つのプロセスがあると仮定して、CPUバースト時間(ミリ秒)は以下のようになります。
図02:FCFSスケジューリングの例
以上により、P1が実行されます。この後、プロセスP2が3ms実行され、残りのプロセスP3が実行される。 P1の待ち時間は0である。プロセスP2は24ms、プロセスP3は27msの待機が必要です。P2、P3、P1の順に工程が到着した場合、P2が先に終了します。次にP3が終了し、最後にP1が終了します。
オペレーティングシステムにおけるプリエンプティブ・スケジューリングとノンプリエンプティブ・スケジューリング | |
プリエンプティブ・スケジューリングとは、あるプロセスを実行中に他のプロセスから割り込ませることができるプロセス・スケジューリング・メカニズムである。 | 強制スケジューリングとは、前のプロセスが終了してから実行を開始するプロセススケジューリング機構である。 |
プロセスの中断 | |
プリエンプティブスケジューリングでは、プロセスが中断されることがあります。 | 非強制スケジューリングでは、プロセスが中断されることがあります。 |
CPU使用率 | |
プリエンプティブスケジューリングでは、ノンプリエンプティブスケジューリングよりもCPU使用率が高くなります。 | ノンプリエンプティブスケジューリングでは、プリエンプティブスケジューリングと比較して、CPU使用率を最小にすることができます。 |
柔軟性 | |
先取りスケジューリングは柔軟に対応します。 | 強制ではないスケジューリングは融通が利かない。 |
コンピュータの中では複数のプロセスが動いています。各プロセスが実行されると、そのプロセスに対してCPUが割り当てられる。時には、現在のプロセスの実行を停止し、他のプロセスを優先させる必要があります。プロセススケジューリング機構には、プリエンプティブとノンプリエンプティブがある。プリエンプティブスケジューリングとは、あるプロセスが実行中に他のプロセスから割り込まれる可能性があるプロセススケジューリングの仕組みのことで、この仕組みを利用することで、あるプロセスが実行中に他のプロセスから割り込まれることを防ぐことができる。非強制スケジューリングとは、前のプロセスが終了してから実行を開始するスケジューリング機構である。これが、OSにおけるプリエンプティブ・スケジューリングとノンプリエンプティブ・スケジューリングの違いである。
本記事のPDF版をダウンロードし、引用元に従ってオフラインで使用することができます。PDF版のダウンロードはこちら:オペレーティングシステムにおけるプリエンプティブ・スケジューリングとノンプリエンプティブ・スケジューリングの違いについて