[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
(itron-club 1663) Re:
優先度上
限プロトコルについて
- To: itron-club __at__ ertl.jp (itron-club ML)
- From: Kominami Yasuo <ykominami __at__ nifty.com>
- Date: Fri, 19 Dec 2003 11:21:03 +0900
小南と申します。
こちらでは初めての投稿になります。
On Thu, 18 Dec 2003 20:51:25 +0900
NAKAMURA Katsuyuki <milkyway __at__ ss.iij4u.or.jp> wrote:
> 中村と申します。
>
> 「uITRON4.0標準ガイドブック」(パーソナルメディア社刊)の231ページで
> 優先度上限プロトコルについて説明していますが、この説明は間違いではないでしょうか。
私は優先度上限プロトコルに関しては、μITRON4.0仕様の記述ぐらいしかしりませんので、μITRON4.0のミューテックス、優先度上限プロトコルの定義が一般的な定義と異っているかまでは分りません。
しかし私の理解する限り、上記ハンドブックの説明は、μITRON4.0仕様に沿ったものだと思います。
>
> 上記ページの説明によれば、
> 「例えば、図2-13であらかじめミューテックスの上限優先度がタスク1の優先度と同じ
> と決められていたとする。タスク3がミューテックスのロックをした場合、タスク3はタ
> スク1の優先度で実行されているため、タスク1が起動されたり、タスク2が起動されて
> も、待ち状態とはならず実行を続ける。」
> とありますが、
>
> 1) ミューテックスの上限優先度がタスク1の優先度と同じと決められているとする。
> -->> ミューテックスをロックしようとするタスクの内の優先度で最高の優先度の値では?
** Cut quoted 1 lines by the mail filter. **
「μITRON4.0仕様Ver.4.01.00 第4章 μITRON4.0仕様の機能 4.5 拡張同期・通信機能 4.5.1 ミューテックス」P174 によれば、「そのミューテックスをロックする可能性のあるタスクの中で最も高いベース優先度を持つタスクのベース優先度を、ミューテックス生成時に上限優先度として設定する」とあります。
つまりμITRON4.0では上限優先度は予め決めてあるということです。
そしてその上限優先度よりも高い優先度を持つタスクがミューテックスをロックしようとしたり、ロックして待ち状態の時にそのタスクの優先度をミューテックスの上限優先度よりも高くしようとするとエラーになるとしています。
この制限(?)の中では「ミューテックスをロックしようとするタスクの内の優先度で最高の優先度の値」も成り立っています。
> 2) タスク3がミューテックスのロックをした場合、タスク3はタスク1の優先度で実行されて
> いる
> -->> タスク3の優先度がタスク1と同じ値に引き上げられる(優先度継承)のは、
> タスク1がタスク3のロックしたミューテックスをロックしようとしたときの誤りでは
> ないでしょうか?
μITRON4.0仕様でも優先度継承プロトコルの場合には、上記動作をするように規定されています。
ただし、優先度上限プロトコルでは、ミューテックスとロックしたときに、ミューテックスの持つ上限優先度にされるとしています。
ここは優先度上限プロトコルの説明ですので、仕様には合っていると思います。
>
> 「SYNCHRONIZATION IN REAL-TIME SYSTEMS A Priority Inheritance
> Approach」 Rajkumar著のpp.26-27によれば、
>
> Definition: The priority ceiling of a semaphore is defined as the priority of the
> highest priority job that may lock this semaphore.
> 中略
> At time t0, J2 is initiated and begins execution.
> At time t1, J2 locks semaphore S2.
> At time t2, job J1 is initiated and preempts job J2.
** Cut quoted 11 lines by the mail filter. **
最初に書いたように、μITRON4.0仕様でしか知らないため、こちらの方は何とも言えません。
一般的には、優先度上限プロトコルとはミューテックスの優先度ではなく、他のタスクの優先度を"inherit"するものなのでしょうか。
-----------
小南 靖雄
ykominami __at__ nifty.com
(NBC00224 __at__ nifty.com)