以前の版
2022-05-24 22:15 時点における版
---
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()を実行しても, 指定されたタスクはすぐには消されず,
優先度の高いタスクの処理が終わってから削除処理が行われます.

# リスト構造
# タスク状態の切り替え方法