2014-03-04 38 views
4

我是Linux內核的新手,現在我正在研究Linux內核中的進程調度問題。有三種類型的優先級在Linux中:Linux內核中使用的三個優先級之間有什麼區別?

  1. 靜態優先級
  2. 動態優先級
  3. 實時優先

現在我已經明白的是:

  • 靜優先級和動態優先級僅限於傳統進程和它們只能從100到139的價值。
  • 靜態優先級用於確定進程的基本時間片
  • 動態優先級用於選擇接下來要執行的進程。

  • 實時優先級僅用於實時定義處理和它的值的範圍從0到99

現在我的問題是:

  1. 糾正我,如果我錯了並請告訴我爲什麼我們在Linux中使用 三種類型的優先級,以及這些優先級之間有哪些差異 ?
  2. 過程是根據優先級區分爲實時還是常規,如果優先級在100到139之間然後進程是傳統進程否則實時 進程?
  3. Linux中的優先級如何改變,我的意思是,我們知道在執行過程中進程的優先級不會保持不變。

回答

3

免責聲明:下面是在Linux中調度(我不知道有關Windows或其他操作系統)。線程和進程在這裏可以互換使用,但它們之間存在差異。

優先&差異

1.Static優先:這些是默認的優先級(值0爲常規方法又名非實時處理,即當不使用實時調度)而創建一組新線程。您可以通過改變他們:

`pthread_setschedparam(pthread_t thread, int policy, const struct sched_param *param);` 

其中,sched_pa​​ram包含的優先級:

struct sched_param 
{ 
    int sched_priority;  /* Scheduling priority */ 
}; 

2動態優先級:當線程開始捱餓,因爲更高優先級的線程被調度的時候,有成爲需要使用various mechanism s來提高此線程的優先級。這種升高/降低(是的,這種情況也是如此)優先級被稱爲動態優先級,因爲它不斷變化。在Linux中,即使胖子也可以玩。

3.Real時間優先:該進入僅當線程(進程)實時策略(SCHED_FIFO,SCHED_RR)中的一個預定的下圖象和具有範圍1(低)一個sched_priority值99(高)。與非實時過程的靜態/動態優先級相比,這是最高的。

的更多信息:現在http://man7.org/linux/man-pages/man3/pthread_getschedparam.3.html

,您的問題:

糾正我,如果我錯了,也請告訴我,爲什麼我們使用三種類型的優先級在Linux中,什麼是 這些優先級之間的差異?

因此,對於非實時調度策略,每一道工序都有一些靜態優先級更高的優先級給予線程腳踏啓動,後來爲了避免任何不公正,優先級被提升/降低,這成爲動態優先。

是過程是有區別的實時或傳統的優先事項的基礎就是,如果優先級爲100 139 之間則工藝是常規流程,否則實時 過程嗎?

不是真的,它取決於調度機制。

Linux中的優先級如何改變,我的意思是,我們知道在執行 時,進程的優先級不會保持不變。

這就是當動態進入圖片時。閱讀給定鏈接中的「nice value」。

相關問題