1. 程式人生 > >非實時程序、實時程序、靜態優先順序、動態優先順序、實時優先順序

非實時程序、實時程序、靜態優先順序、動態優先順序、實時優先順序

每個實時程序都有一與其相關的實時優先順序,取值範圍0-MAX_RT_PRIO-1。
其大小可以通過sched_setscheduler()和sched_setparam()來改變。
實時程序被一個程序替換,可能的情況有:

  1. 程序被擁有更高優先順序的程序搶佔。
  2. 程序發生阻塞進入睡眠狀態。
  3. 程序被終止(狀態為TASK_STOPPED OR TASK_TRACED)或者被殺死(EXIT_DEAD OR EXIT_ZOMBIE)。
  4. 程序通過呼叫sched_yield()自願放棄處理器。
  5. 程序是輪迴實時(SCHED_RR)且其時間片執行完畢。

當在SCHED_RR時呼叫nice()和set_priority()函式並不影響實時優先順序,只會影響靜態優先順序(從而影響基時間片)。