タスクスケジューリング方式とは
タスクとは、コンピュータが処理する単位です。例えばコンピュータのアプリケーションアイコンをクリックすると、クリックしたアプリケーションを開くようにコンピュータに命令します。このような命令により行われる処理の単位をタスクといいます。
コンピュータに対する命令は一つとは限りません。複数の操作を同時に行い、コンピュータに複数の命令が依頼されることがあります。しかし、処理を実行する「CPU」は複数のことを同時に処理できるわけではありません。
そのため、「CPU」にどのタスクを処理させるか、タスクの実行順序を定める必要があります。これをタスクスケジューリングといいます。
スポンサーリンク
タスクスケジューリングには、以下の方式があります。
名前 | 説明 |
到着順方式 | 実行可能状態になった順番に処理する方式 |
優先度順方式 | タスクに優先度を設定し、優先度順に処理する方式 |
動的優先度順方式 | 基本は優先度順方式と同じだが、待ち時間の長さに応じて優先度を徐々に上げていく方式 |
ラウンドロビン方式 | CPUを使用する時間を定め、その時間内に処理が終わらない場合は、次のタスクに使用権が与えられる方式 |
多重待ち行列方式 | ラウンドロビン方式に優先順位を加味させた方式 |
処理時間順方式 | タスクの処理時間が短いものから処理する方式 |
イベントドリブン方式 | マウス操作によるイベントでCPUの使用権を切り替える方式 |
優先度順方式ってなに?
優先度順方式とは、タスクに優先度を設定し、その優先度の高いものから順番に実行していく方式です。実行中のタスクがある場合でも、実行中のタスクより優先度の高いタスクが追加されると「CPU」の使用権が優先度の高いタスクに奪われます。これをプリエンプションといいます。
優先度順方式の流れ
優先度順方式の流れを図解で解説していきます。
「タスクA」が「CPU」で実行中、「タスクB」「タスクC」が順番待ちであり、各タスクの優先度は以下の通りとします。
- タスクA:優先度「中」
- タスクB:優先度「低」
- タスクC:優先度「低」
実行中のタスクより"優先度の高い"タスクが追加されると、優先度の高いタスクが優先される
優先度「中」の「タスクA」実行中の時に、優先度「高」の「タスクD」が追加されると、実行中の「タスクA」は処理を中断し、優先度の高い「タスクD」が実行されます。
中断した「タスクA」は待機状態に切り替わります。
優先度の高いタスクがすべて終了すると、中断していたタスクが再実行される
優先度「高」の「タスクD」の処理が終了すると、先ほど中断していた「タスクA」が再実行されます。
このように優先度順方式は、タスクの優先度が高い順番に実行していきます。そのため優先度の低いタスクは、なかなか実行されないというデメリットもあります。