(toppers-users 548) Re: 基本的な事ですが?

SHUKUGUCHI Masahiro ms89019 @ mms.co.jp
2002年 9月 12日 (木) 12:13:15 JST


宿口と申します。

基本的に松川さんのご解説で間違いありませんが、追記します。

1.スケジューリングポリシーについて
ITRONのスケジューリングポリシーは「優先度ベースのプリエンプティブな
スケジューリング」です。具体的には、その時点で最も優先度の高いREADY
状態のタスクがRUNNING状態になるのが原則です。

待ちが解除される事象が発生すると、上記ポリシーに従ったスケジューリ
ングが実行されますので、rcv_mbx()で待っていたタスクの待ちが解除され
ると、待っていたタスクの優先度がREADY状態のタスクで最も高ければ、
そのタスクがRUNNING状態に遷移します。

この動きは、松川さんのご解説の通りです。


2.同一優先度のタスクが待っていた場合。

> [Case2] このメールボックスへのrcv_mbxで待ち状態の
> タスク(TASK-B)がTASK-Aより優先度が低い場合、
> TASK-Bは待ち解除され実行可能状態(READY)になり
> ますが、TASK-Aのほうが優先度が高いため、引き続き、
> TASK-Aは実行状態(RUNNING)のままです。

上記ケースで、TASK-AとTASK-Bの優先度が同一の場合でも、タスクスイッチ
は起こりません。これは、同一優先度ならばFCFS(First-Come First-Service)
(要は早いモン勝ち)の原則があり、これが適用されるためです。