初期化タスクの流れ
Task B
優先度:低
(Priority: Low) Task A
優先度:中
(Priority: Middle) 初期化タスク
initialization task 優先度:高
(Priority: High)
cre_tsk A cre_tsk B
sta_tsk B
休止状態
ユーザが作成したタスクを実行するには、まずタス クを起動し、READY(実行可能)状態にします。具 体的には、起動したい対象タスクに対してsta_tskを 発行し、DORMANT(休止)状態のタスクを
READY状態にします。そして、READY状態に
なったタスクは、RTOSによりスケジューリングされ、ディスパッチとプリエンプトを行います。
実行中(RUN状態)のタスクを終了、つまり
DORMANT状態にするには実行中のタスクの中
でext_tskを発行します。次はタスクを強制終了させる場合です。タスク実行 中に異常が発生し、タスクの実行を中断しなければ ならないとき、ter_tskを発行して、他のタスクを強
{
sta_tsk(TaskA); /* タスク起動 */
ext_tsk(Initial); /* タスクスリープ */
}
※エラー処理は入っていません。
Task A 優先度:低
(Priority: Middle) 初期化タスク
initialization task 優先度:高
(Priority: High)
休止状態
(DORMANT)
sta_tsk A
ext_tsk
実行状態
(RUN)
休止状態 (DORMANT)
実行状態
(RUN)
実行可能状態
(READY)
タスク管理機能
エラーや特定のイベント発生に従って、あら かじめ決めておいたタスクの実行順序を変更し たい場合、次の2つの方法があります。
chg_priは、対象タスクに対して、システム
起動時に指定されているタスクの優先度を一 時的に変更するとき発行します。変更された優 先度は、そのタスクが終了するまで有効となり ます。rot_rdqシステムコールを発行すると、指定
された優先度のタスクのレディキューを回転さ せることができます。レディキューが回転すると、先頭のタスクが最後尾につなぎ変えられます。
また、このシステムコールで、自タスクの優先 度を指定した場合には、自タスク自身がレディ キューの最後尾につながれます。
①
②
③ 高
R E A D Y
R E A D Y
優 先 度
実 実行 中行 実 可 行 能 可 能
F C F S
実 行 可 能
実 行 可 能
待 ち , 休 止 状 態
待 ち , 休 止 状 態
低
← 実 行 可 能 状 態 で 最 高 優 先 度 の タ ス ク
指定したタスク(他タスク)の現在の優先度とタスク状態を知りたい場合には、ref_tskを使用します。このシステム コールを発行すると、指定タスクの優先度とタスク状態がリターンパラメータとして返却されます。