linux核心的三種排程策略:
rr和fifo屬於實時任務,建立優先順序大於0(1-99),按照可搶占優先順序排程演算法進行,就緒態的實時任務立即搶占非實時任務
主要是由下列2個函式可以獲取執行緒設定的最高端和最低優先順序
int sched_get_priority_max(int policy); //獲取實時優先順序的最大值
int sched_get_priority_min(int policy); //獲取實時優先順序的最大值
sched_other它不支援優先順序使用,sched_fifo/sched_rr支援優先順序使用,它們分別是1和99,數值越大優先順序越高
實時排程策略(sched_fifo/sched_rr) 優先順序最大值為99
普通排程策略(sched_normal/sched_batch/sched_idle),始終返回0,即普通任務排程的函式,沒有效果
裝置與獲取優先順序的兩個主要函式:
int pthread_attr_setschedparam(pthread_attr_t *attr,const struct sched_param *param);//建立執行緒優先順序
int pthread_attr_getschedparam(pthread_attr_t *attr,const struct sched_param *param);//獲取執行緒優先順序
param.sched_priority=51;//設定優先順序
當系統建立執行緒時,預設執行緒是sched_other,改變排程策略,可以通過以下的函式:
int pthread_attr_setschedpolicy(pthread_attr_t *attr,int policy);//設定執行緒排程策略
struct sched_param
#include #include #include #include static int get_thread_policy(pthread_attr_t *attr)
return plicy;
}static void show_thread_priority(pthread_attr_t *attr,int policy)
static int get_thread_priority(pthread_attr_t *attr)
static void set_thread_policy(pthread_attr_t *attr,int policy)
int main()
#include #include #include #include void threadfunc1()
printf("threadfunc1.\n");
}printf("pthreadfunc1 exit.\n");
}void threadfunc2()
printf("threadfunc2.\n");
}printf("pthreadfunc2 exit.\n");
}void threadfunc3()
printf("threadfunc3.\n");
}printf("pthreadfunc3 exit.\n");
}int main()
Linux 程序排程與優先順序
靜態優先順序,取值100 139,對非實時程序有效,通過nice系統呼叫來進行修改 rt priority 實時優先順序,取值0 99,只對實時程序有效 normal prio 歸一化優先順序,其值取決於靜態優先順序和排程策略 prio 動態優先順序,取值0 139,排程器最終使用 rt prior...
linux優先順序排程策略1
linux核心的三種排程策略 1,sched other 分時排程策略,2,sched fifo實時排程策略,先到先服務。一旦占用cpu則一直執行。一直執行直到有更高優先順序任務到達或自己放棄 3,sched rr實時排程策略,時間片輪轉。當程序的時間片用完,系統將重新分配時間片,並置於就緒佇列尾。...
Linux下執行緒的排程策略與優先順序
linux核心的三種排程策略 1,sched other 分時排程策略,2,sched fifo實時排程策略,先到先服務。一旦占用cpu則一直執行。一直執行直到有更高優先順序任務到達或自己放棄 3,sched rr實時排程策略,時間片輪轉。當程序的時間片用完,系統將重新分配時間片,並置於就緒佇列尾。...