Linux核心的三種排程策略:
1,SCHED_OTHER 分時排程策略,
2,SCHED_FIFO實時排程策略,先到先服務。一旦佔用cpu則一直執行。一直執行直到有更高優先順序任務到達或自己放棄
3,SCHED_RR實時排程策略,時間片輪轉。當程序的時間片用完,系統將重新分配時間片,並置於就緒佇列尾。放在佇列尾保證了所有具有相同優先順序的RR任務的排程公平 Linux執行緒優先順序設定 首先,可以透過以下兩個函式來獲得執行緒可以設定的最高和最低優先順序,函式中的策略即上述三種策略的宏定義: int sched_get_priority_max(int policy); int sched_get_priority_min(int policy); SCHED_OTHER是不支援優先順序使用的,而SCHED_FIFO和SCHED_RR支援優先順序的使用,他們分別為1和99,數值越大優先順序越高。 設定和獲取優先順序透過以下兩個函式: int pthread_attr_setschedparam(pthread_attr_t *attr, const struct sched_param *param); int pthread_attr_getschedparam(const pthread_attr_t *attr, struct sched_param *param); 例如以下程式碼建立了一個優先順序為10的執行緒: struct sched_param { int __sched_priority; //所要設定的執行緒優先順序 }; 例:建立優先順序為10的執行緒 pthread_attr_t attr; struct sched_param param; pthread_attr_init(&attr); pthread_attr_setschedpolicy(&attr, SCHED_RR); param.sched_priority = 10; pthread_attr_setschedparam(&attr, ¶m); pthread_create(xxx , &attr , xxx , xxx); pthread_attr_destroy(&attr);
Linux核心的三種排程策略:
1,SCHED_OTHER 分時排程策略,
2,SCHED_FIFO實時排程策略,先到先服務。一旦佔用cpu則一直執行。一直執行直到有更高優先順序任務到達或自己放棄
3,SCHED_RR實時排程策略,時間片輪轉。當程序的時間片用完,系統將重新分配時間片,並置於就緒佇列尾。放在佇列尾保證了所有具有相同優先順序的RR任務的排程公平 Linux執行緒優先順序設定 首先,可以透過以下兩個函式來獲得執行緒可以設定的最高和最低優先順序,函式中的策略即上述三種策略的宏定義: int sched_get_priority_max(int policy); int sched_get_priority_min(int policy); SCHED_OTHER是不支援優先順序使用的,而SCHED_FIFO和SCHED_RR支援優先順序的使用,他們分別為1和99,數值越大優先順序越高。 設定和獲取優先順序透過以下兩個函式: int pthread_attr_setschedparam(pthread_attr_t *attr, const struct sched_param *param); int pthread_attr_getschedparam(const pthread_attr_t *attr, struct sched_param *param); 例如以下程式碼建立了一個優先順序為10的執行緒: struct sched_param { int __sched_priority; //所要設定的執行緒優先順序 }; 例:建立優先順序為10的執行緒 pthread_attr_t attr; struct sched_param param; pthread_attr_init(&attr); pthread_attr_setschedpolicy(&attr, SCHED_RR); param.sched_priority = 10; pthread_attr_setschedparam(&attr, ¶m); pthread_create(xxx , &attr , xxx , xxx); pthread_attr_destroy(&attr);