Linux 進程調度的主要策略


1、Linux 下進程分為5種類別,分別是停止類、截止類、實時類、公平類、空閑類,

  每種類別都有一個運行隊列,每次調度時,就是先按照類別優先級排序,再按照每個類別內的最高優先級任務調度運行。

  

 

  

  文件:core.c (linux-4.6\kernel\sched)

    

    解讀:先看下面的for循環,可以看到實現思路是,遍歷每種類別,選擇下一個可運行的任務。由於大部分任務都屬於公平隊列,所以,絕大部分情況下,都在公平隊列中進行選擇,所以,內核開發者在上面的代碼中加了likely()提高性能。

 

    

    

    

    

 

    

 

    

 

2、調度程序schedule()的調用次序。

  schedule() --- > __schedule () --- > pick_next_task() 

  文件:core.c (linux-4.6\kernel\sched) 

  

 

   

  。。。。。。(中間有省略)

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM