內(nèi)核線(xiàn)程優(yōu)先級(jí)設(shè)置的方法介紹
個(gè)人理解,內(nèi)核級(jí)線(xiàn)程和進(jìn)程是一樣的,前者與POSIX線(xiàn)程(pthread)有很大的區(qū)別。因此,內(nèi)核的進(jìn)程調(diào)度策略和系統(tǒng)調(diào)用也適用于內(nèi)核級(jí)線(xiàn)程。
調(diào)度策略有三種:
1.SCHED_NORMAL 非實(shí)時(shí)調(diào)度策略,默認(rèn)情況下是100~139,由nice值決定;
2.SCHED_FIFO實(shí)時(shí)調(diào)度策略,先到先服務(wù)。一旦占用cpu則一直運(yùn)行。一直運(yùn)行直到有更高優(yōu)先級(jí)任務(wù)到達(dá)或自己放棄
3.SCHED_RR實(shí)時(shí)調(diào)度策略,時(shí)間片輪轉(zhuǎn)。當(dāng)進(jìn)程的時(shí)間片用完,系統(tǒng)將重新分配時(shí)間片,并置于就緒隊(duì)列尾。同樣可以被高優(yōu)先級(jí)搶占。
兩種實(shí)時(shí)優(yōu)先級(jí)范圍在0至MAX_RT_PRIO-1之間,默認(rèn)為0到99。
相關(guān)的系統(tǒng)調(diào)用(來(lái)自于LKD,不同內(nèi)核可能有所不同):
| nice() | 設(shè)置進(jìn)程的nice值 |
| sched_setscheduler() | 設(shè)置進(jìn)程的調(diào)度策略 |
| sched_getscheduler() | 獲取進(jìn)程的調(diào)度策略 |
| sched_setparam() | 設(shè)置進(jìn)程的實(shí)時(shí)優(yōu)先級(jí) |
| sched_getparam() | 獲取進(jìn)程的實(shí)時(shí)優(yōu)先級(jí) |
| sched_get_priority_max() | 獲取實(shí)時(shí)優(yōu)先級(jí)的最大值 |
| sched_get_priority_min() | 獲取實(shí)時(shí)優(yōu)先級(jí)的最小值 |
| sched_rr_get_interval() |
獲取進(jìn)程的時(shí)間片值 |
| sched_setaffinity() | 設(shè)置進(jìn)程的處理器的親和力 |
| sched_getaffinity() | 獲取進(jìn)程的處理器的親和力 |
| sched_yield() | 暫時(shí)讓出處理器 |
設(shè)置時(shí)需要用到struct sched_param這個(gè)結(jié)構(gòu)。
以下為我寫(xiě)的內(nèi)核線(xiàn)程中的部分代碼:
struct sched_param param;
param.sched_priority = 99;
sched_setscheduler(current, SCHED_FIFO, ¶m)//出錯(cuò)時(shí)返回-1
相關(guān)文章
C++中動(dòng)態(tài)綁定和內(nèi)存管理的實(shí)現(xiàn)
本文主要介紹了C++中動(dòng)態(tài)綁定和內(nèi)存管理的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-12-12
C++筆記-設(shè)置cout輸出數(shù)據(jù)的寬度和填充方式
這篇文章主要介紹了C++筆記-設(shè)置cout輸出數(shù)據(jù)的寬度和填充方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-11-11
詳解C++?functional庫(kù)中的仿函數(shù)使用方法
仿函數(shù)(functor)又稱(chēng)之為函數(shù)對(duì)象(function?object),實(shí)際上就是?重載了()操作符?的?struct或class。本文將詳細(xì)講解C++中仿函數(shù)的使用方法,需要的可以參考一下2022-04-04
Qt編寫(xiě)地圖實(shí)現(xiàn)實(shí)時(shí)動(dòng)態(tài)軌跡效果
實(shí)時(shí)動(dòng)態(tài)軌跡主要是需要在地圖上動(dòng)態(tài)顯示GPS的運(yùn)動(dòng)軌跡,也是編寫(xiě)地圖時(shí)一個(gè)重要的功能。本文將利用Qt實(shí)現(xiàn)這一功能,需要的可以參考一下2022-02-02
使用root權(quán)限運(yùn)行自己所編譯程序的解決方法
本篇文章介紹了,使用root權(quán)限運(yùn)行自己所編譯程序的解決方法。需要的朋友參考下2013-05-05
C++ 多線(xiàn)程編程建議之 C++ 對(duì)多線(xiàn)程/并發(fā)的支持(下)
這篇文章主要介紹的是 C++ 多線(xiàn)程編程建議之 C++ 對(duì)多線(xiàn)程/并發(fā)的支持的相關(guān)資料,承接前文 現(xiàn)代 C++ 對(duì)多線(xiàn)程/并發(fā)的支持,接下來(lái)我們看看回發(fā)生什么吧2021-10-10
用代碼和UML圖化解設(shè)計(jì)模式之橋接模式的深入分析
本篇文章是對(duì)橋接模式進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05

