コンピュータ

多重待ち行列方式 | タスクスケジューリング方式

2019年9月22日

タスクスケジューリング方式とは

タスクとは、コンピュータが処理する単位です。例えばコンピュータのアプリケーションアイコンをクリックすると、クリックしたアプリケーションを開くようにコンピュータに命令します。このような命令により発生する処理の単位をタスクといいます。

コンピュータに対する命令は一つとは限りません。コンピュータに複数の命令が依頼されることはよくあることです。しかし、処理を実行する「CPU」は複数のことを同時に処理できるわけではありません。

そのため、CPU」にどのタスクを処理させるか、タスクの実行順序を定める必要があります。これをタスクスケジューリングといいます。

タスクスケジューリングには、以下の方式があります。

名前説明
到着順方式実行可能状態になった順番に処理する方式
優先度順方式タスクに優先度を設定し、優先度順に処理する方式
動的優先度順方式基本は優先度順方式と同じだが、待ち時間の長さに応じて優先度を徐々に上げていく方式
ラウンドロビン方式CPUを使用する時間を定め、その時間内に処理が終わらない場合は、次のタスクに使用権が与えられる方式
多重待ち行列方式ラウンドロビン方式に優先順位を加味させた方式
処理時間順方式タスクの処理時間が短いものから処理する方式
イベントドリブン方式マウス操作によるイベントでCPUの使用権を切り替える方式

多重待ち行列方式ってなに?

多重待ち行列方式とは、ラウンドロビン方式に優先度を加味させた方式です。

タスクには優先度が付与され、優先度の高いタスクから処理が実行されます。CPUを使用できる時間(タイムクォンタム)を定め、その時間内に処理が終わらない場合は、次のタスクにCPUの使用権が与えられる方式です。

規定時間内に処理が終わらなかった実行中のタスクは、処理を中断し「優先度」を下げて待ち行列の最後に回れます。

タスクは優先度順に処理される

実行可能状態になったタスクには「優先度」が付与されており、優先度の高い順に処理されます。

多重待ち行列方式手順1

 

規定時間内に処理が完了した場合は、次のタスクが実行されます。

多重待ち行列方式手順2

規定時間内に処理が終了しなかった場合は、優先度を下げて下位の行列の末尾に回される

規定時間内に処理が終わらなかった場合は、優先度を下げて下位の待ち行列の末尾に回されます

以下の例では、優先度「高」の「タスクB」が規定時間内に処理が終わらなかった為、処理を中断し優先度を「中」に下げ、優先度中の待ち行列の末尾に回されています。

多重待ち行列方式手順3

helpful