個人理解,核心級執行緒和程序是一樣的,前者與posix執行緒(pthread)有很大的區別。因此,核心的程序排程策略和系統呼叫也適用於核心級執行緒。
排程策略有三種:
1.sched_normal 非實時排程策略,預設情況下是100~139,由nice值決定;
2.sched_fifo實時排程策略,先到先服務。一旦占用cpu則一直執行。一直執行直到有更高優先順序任務到達或自己放棄
3.sched_rr實時排程策略,時間片輪轉。當程序的時間片用完,系統將重新分配時間片,並置於就緒佇列尾。同樣可以被高優先順序搶占。
兩種實時優先順序範圍在0至max_rt_prio-1之間,預設為0到99。
nice()
設定程序的nice值
sched_setscheduler()
設定程序的排程策略
sched_getscheduler()
獲取程序的排程策略
sched_setparam()
設定程序的實時優先順序
sched_getparam()
獲取程序的實時優先順序
sched_get_priority_max()
獲取實時優先順序的最大值
sched_get_priority_min()
獲取實時優先順序的最小值
sched_rr_get_interval()
獲取程序的時間片值
sched_setaffinity()
設定程序的處理器的親和力
sched_getaffinity()
獲取程序的處理器的親和力
sched_yield()
暫時讓出處理器
設定時需要用到struct sched_param這個結構。
以下為我寫的核心執行緒中的部分**:
structsched_param param;
param.sched_priority = 99
; sched_setscheduler(current, sched_fifo, ¶m)//
出錯時返回-1
執行緒優先順序的設定
執行緒的優先順序 1 10,10為最高端別,1為最低級別,5為預設級別 thread.min priority 最小優先順序 thread.max priority 最高優先順序 thread.norm priority 預設優先順序 設定優先順序 public class jointhread2 ...
cortex M核心優先順序設定
cortex m核心中 每個中斷都有乙個8位的優先順序設定暫存器 這個8位的暫存器可以分為搶占優先順序和子優先順序兩個部分 通過設定優先順序組設定 搶占優先順序和子優先順序有什麼用?舉例說明 有兩個中斷a b a的搶占優先順序比b的高 當b發生中斷,正在執行b的中斷服務函式時 a發生了中斷,這個時候...
Linux執行緒優先順序設定
本程式會讓系統失去i o響應,不建議去執行!include include include include include include void thr fun void arg if policy sched fifo else if policy sched other else if po...