コンピュータ

優先度順方式 | タスクスケジューリング方式

2019年9月16日

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

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

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

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

スポンサーリンク

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

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

優先度順方式ってなに?

優先度順方式とは、タスクに優先度を設定し、その優先度の高いものから順番に実行していく方式です。実行中のタスクがある場合でも、実行中のタスクより優先度の高いタスクが追加されると「CPU」の使用権が優先度の高いタスクに奪われます。これをプリエンプションといいます。

中断されたタスクはどうなるの?
優先度の高いタスクの処理が終わり次第、再実行されます。

優先度順方式の流れ

優先度順方式の流れを図解で解説していきます。

「タスクA」が「CPU」で実行中、「タスクB」「タスクC」が順番待ちであり、各タスクの優先度は以下の通りとします。

  • タスクA:優先度「中」
  • タスクB:優先度「低」
  • タスクC:優先度「低」

優先度順方式の流れ1

実行中のタスクより"優先度の高い"タスクが追加されると、優先度の高いタスクが優先される

優先度「中」の「タスクA」実行中の時に、優先度「高」の「タスクD」が追加されると、実行中の「タスクA」は処理を中断し、優先度の高い「タスクD」が実行されます

優先度順方式手順2

 

中断した「タスクA」は待機状態に切り替わります

優先度順方式処理3

優先度の高いタスクがすべて終了すると、中断していたタスクが再実行される

優先度「高」の「タスクD」の処理が終了すると、先ほど中断していた「タスクA」が再実行されます。

優先度順方式手順4

 

このように優先度順方式は、タスクの優先度が高い順番に実行していきます。そのため優先度の低いタスクは、なかなか実行されないというデメリットもあります。

helpful