オペレーティングシステム(全131問中4問目)

ノンプリエンプティブ方式のタスクの状態遷移に関する記述として,適切なものはどれか。

出典:令和6年春期 問16

  • OSは実行中のタスクの優先度を他のタスクよりも上げることによって,実行中のタスクが終了するまでタスクが切り替えられるのを防ぐ。
  • 実行中のタスクが自らの中断をOSに要求することによってだけ,OSは実行中のタスクを中断し,動作可能な他のタスクを実行中に切り替えることができる。
  • 実行中のタスクが無限ループに陥っていることをOSが検知した場合,OSは実行中のタスクを終了させ,動作可能な他のタスクを実行中に切り替える。
  • 実行中のタスクより優先度が高い動作可能なタスクが実行待ち行列に追加された場合,OSは実行中のタスクを中断し,優先度が高い動作可能なタスクを実行中に切り替える。
正解 問題へ
分野:テクノロジ系
中分類:ソフトウェア
小分類:オペレーティングシステム
解説
ノンプリエンプティブとは、マルチタスクOS上で実行されているタスクの切替えをプログラム自身に任せ、プログラムがCPUを自発的に開放したタイミングで他のタスクへの切替えを行うマルチタスク制御方式のことをいいます。OSがCPUを管理しないので、1つのプログラムを実行している間は、その他のプログラムの実行は制限されます。

ノンプリエンプティブに対して、OSがCPUの割当てを管理し、状況の変化に応じてタスクの切替えを行う考え方は「プリエンプティブ」なタスクスケジューリングといいます。
  • ノンプリエンプティブ方式では、何もしなくても実行中のタスクが終了するまでタスクの切替えは行われないため、優先度を上げる必要はありません。ノンプリエンプティブ方式において優先度を上げるのは、次に実行するタスクを制御するためです(静的優先度順方式)。
  • 正しい。ノンプリエンプティブ方式では、実行中のタスクが終了や中断要求などで自発的にOSに制御を返したときに限り、他のタスクへの切替えが行われます。
  • ノンプリエンプティブ方式では、OSがCPU資源の管理を行わず、CPUの解放がプログラムの実装に依存しているため、実行中のタスクが無限ループに陥ってもOSがタスクの切替えを行うことはありません。無限ループになればそのままシステム停止状態になります。このため、ノンプリエンプティブ方式ではタスク側でプログラムを中断するなどの対処を行う必要があります。
  • ノンプリエンプティブ方式では、優先度が高いタスクが実行可能状態となったときでもタスクの切替えは行われません。記述はプリエンプティブ方式のひとつである動的優先度順方式のタスクスケジューリングです。

Pagetop