1. 程式人生 > >實時排程負載均衡的一個例項

實時排程負載均衡的一個例項

  在一個雙核系統中,執行著4個實時任務: rt0, rt1, rt2和rt3,它們的優先順序分別為10,15,20和25。

  其中rt2通過taskset親和到cpu1上先睡眠,其他3個任務初始執行狀態為:cpu0上執行著rt0和rt1,且rt1一直搶佔著rt0; rt3執行在cpu1上死迴圈。

     如果此時喚醒rt2會發生什麼?

     由於rt3一直在cpu1上處於執行狀態,rt2雖然被喚醒處於就緒狀態,但是由於優先順序的關係是無法得到排程的;同時,rt的負載均衡只會均衡(pull或者push)各個cpu上“次高優先順序”的任務(各個cpu上最高優先順序的實時任務一定處於執行狀態),因而rt3不會被均衡走;同時由於rt2是繫結在cpu1上,負載均衡也不會將其遷走,因而最終rt2會一直處於就緒而得不到排程。