--- parent: TaskScheduler title: 状態リスト date: 2017-7-11 tags: 編集中 --- それぞれのタスクにはそのタスクの状態というものがあります. 今回のOSでは, このタスクの状態を状態リストを用いて判別することにします. 以下から, タスク状態の種類, 状態リストの構造, リストを用いたタスク状態の切り替え方法を詳しく見ていきます. === # タスク状態の種類 タスクの状態には以下の種類があります. * Running * Ready * PendingReady * Blocked * Suspended * WaitingTermination(Deleted) # Running プログラムが実行されている状態です. CPUのリソースを使用しています. # Ready Running状態に選ばれるのを待機している状態です. # PendingReady Ready状態になるのを一時保留にされている状態です. これは, スケジューラが停止状態のときにあるタスクをSuspended解除, Blocked解除したときに起こります. # Blocked 待たされている状態, あるいは, あるイベントを持って待たされている状態です. この状態では, 待機時間を指定することができます. 待機時間を超えるとReady状態へ遷移します. # Suspended Blocked状態と同じく待たされている状態ですが, これはTaskResume()関数を呼ばれるまで, Ready状態へ遷移しません. # WaitingTermination 削除されるのを待機している状態です. 削除関数TaskDelete()を実行しても, 指定されたタスクはすぐには消されず, 優先度の高いタスクの処理が終わってから削除処理が行われます. ![状態遷移図](CURRENT_DIR/Images/StateTransition.png) # リスト構造 # タスク状態の切り替え方法