First example: --------------------- Suppose that at a rescheduling we have the following thread in the ready queues - High Priority -> Linux thread H - Medium Priority -> Xenomai thread M in PRIMARY domain - Low Priority -> Xenomai thread L in primary domain Then, the Xenomai scheduler will select M, and M will be dispatched. Second example: -------------------------- - High Priority -> Linux thread H - Medium Priority -> Xenomai thread M in SECONDARY domain - Low Priority -> Xenomai thread L in primary domain
Then, the Xenomai scheduler will select M. but M is in secondary mode, which means the Linux kernel will be scheduled. The Linux scheduler knows H (it's a linux thread), M (it's in secondary mode), and maybe about L (if it has been created by UVMs). The Linux scheduler will choose H, and H will be scheduled.
比如例一,在Xenomai域中的低优先级的线程M(低于Linux域的线程H)会被调度。
例二,如果线程M进入Linux域后,这里比较关键,不是线程L被调度,而是在Linux域中的高优先级线程H被调度。
如果在Xenomai域中有优先级高于线程M的线程Z,那么Z则会被调度。
参考:
http://www.xenomai.org/pipermail/xenomai/2005-December/001881.html
http://www.xenomai.org/pipermail/xenomai/2005-December/001882.html