核心線程優先順序設定的方法介紹

來源:互聯網
上載者:User

  個人理解,核心級線程和進程是一樣的,前者與POSIX線程(pthread)有很大的區別。因此,核心的進程調度策略和系統調用也適用於核心級線程。

  調度策略有三種:

    1.SCHED_NORMAL 非即時調度策略,預設情況下是100~139,由nice值決定;

    2.SCHED_FIFO即時調度策略,先到先服務。一旦佔用cpu則一直運行。一直運行直到有更高優先順序任務到達或自己放棄

    3.SCHED_RR即時調度策略,時間片輪轉。當進程的時間片用完,系統將重新分配時間片,共置於就緒隊列尾。同樣可以被高優先順序搶佔。

  兩種即時優先順序範圍在0至MAX_RT_PRIO-1之間,預設為0到99。

  相關的系統調用(來自於LKD,不同核心可能有所不同):

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這個結構。

  以下為我寫的核心線程中的部分代碼:
複製代碼 代碼如下:struct sched_param param;
param.sched_priority = 99;
sched_setscheduler(current, SCHED_FIFO, &param)//出錯時返回-1

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.