3

RTOS (uCOS II) は初めてで、uCOS の著者が書いた本を読んで学習しています。私には疑問があり、それに対する答えを見つけることができません。

uCOS では、スケジューリング アルゴリズムに従って、最も優先度の高いタスクに CPU が割り当てられます。したがって、2 つのタスクを作成して uCOS アプリケーションを作成するとします。1 つは優先度が高く (例では Prio = 1)、もう 1 つは優先度が低い (例では Prio = 9)。たとえば、最も優先度の高いタスクがイベントを待っている場合、スケジューラは次に優先度の高いタスクの実行を開始する必要がありますか? それが正しい場合、コードのどの部分で優先度が高く、優先度が低くなりますか?

アーキテクチャに依存する 3 つのコードは次のとおりです。 1. 割り込みレベルのコンテキスト スイッチ 2. 最も優先度の高いタスクの実行準備完了 3. タスク レベルのコンテキスト スイッチ

ケース 1 では、割り込みを処理した後、スケジューラは最も優先度の高いタスクに戻ります。ケース 2 では、OSStart() によって OS を起動するときに呼び出されます ケース 3 では、より優先度の高いタスクの準備が整い、タイマー割り込みによって呼び出されます

さて、優先度の高いタスクが待機中の場合、スケジューラーは優先度の低いタスクに CPU を正確に、またはどのように割り当てるのでしょうか??

ありがとう

4

3 に答える 3

0

割り込みレベルのコンテキスト スイッチはプリエンプティブに使用されます。たとえば、実行中の優先度の低いタスクがあり、優先度の高いタスクを実行する必要があります (OSTimeDly タイムアウトなど)。この状況では、割り込みレベルのコンテキスト スイッチは優先度の低いタスクを一時停止してから切り替えます。優先度の高いものに。

高優先度から低優先度への切り替えには、OS_Sched を呼び出して CPU リソースを放棄する必要があります。

于 2017-03-04T00:18:21.723 に答える