linux 實時線程優先級實質

今天查看了linux下的實時線程,FIFO和RR策略的調度,遇到一個問題:

     priority越大優先級越高呢?還是越小越高呢?

     回答這個問題要明白一個問題,首先,linux2.6內核將任務優先級進行了一個劃分:

    0——99  實時進程 

   100——139   非實時進程

    現在,這個劃分是起決定作用的,而且一定是數值越小,優先級越高。

    但是,有時候從網上會看到 優先級數值越大,優先級越高?這又是怎麼回事?難道有一種說法錯了嗎?

   實際的原因是這樣的,對於一個實時進程,他有兩個參數來表明優先級——prio 和 rt_priority,

   prio纔是調度所用的最終優先級數值,這個值越小,優先級越高;

   而rt_priority 被稱作實時進程優先級,他要經過轉化——prio=MAX_RT_PRIO - 1- p->rt_priority; 

   MAX_RT_PRIO = 99;這樣意味着rt_priority值越大,優先級越高;

   而內核提供的修改優先級的函數,是修改rt_priority的值,所以越大,優先級越高

   所以用戶在使用實時進程或線程,在修改優先級時,就會有“優先級值越大,優先級越高的說法”,也是對的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章