私はいくつかのRTOS(pSOS、VxWorks、QNX)の経験がありますが、MicroC/OS II(ucos ii)は初めてです。私はucos iiのユニークなものが、タスクの一意のIDを持つのではなく、タスクを一意に識別するための優先順位を使用し、すべてのタスクが異なる優先順位でなければならないことを知っているため、ラウンドロビンスケジューリングはサポートされていません。それほど私は理解する。MicroC/OS II(ucos ii)の優先順位を変更するとタスクIDが変更されますか?
OSTaskChangePrio()でタスクの優先度を変更しても、コードや優先度を変更したタスクの優先度(タスクID)を格納していた他のタスクで問題が発生しません。事実上優先度を変更すると、タスクの識別情報が変更されます。どのようにこれは問題ではないですか?
ただ1つの例では、他のタスクを起動するタスクを実行したときに優先度を下げたいと思うかもしれません。タスクが効果的にタスクIDを変更できるようにするということは、タスクを識別する方法としてそのタスクIDを使用することに依存できないことを意味します。また、ucos iiが優先順位反転を実行するときに、他のタスクで見られるように実際にタスクID(優先順位)を変更するかどうかは不明です。つまり、その瞬間にそのタスクID(優先度)を持つタスクがないため、そのタスクを識別するために優先度逆転が発生している間に元のタスクID(優先度)を使用しようとすると、OSコールは失敗しますか? – JonN