詳解Linux進(jìn)程調(diào)度策略
本文通過(guò)Linux進(jìn)程調(diào)度的5類方式詳細(xì)分析了策略以及實(shí)現(xiàn)過(guò)程中的詳細(xì)講解。
1、Linux 下進(jìn)程分為5種類別,分別是停止類、截止類、實(shí)時(shí)類、公平類、空閑類,
每種類別都有一個(gè)運(yùn)行隊(duì)列,每次調(diào)度時(shí),就是先按照類別優(yōu)先級(jí)排序,再按照每個(gè)類別內(nèi)的最高優(yōu)先級(jí)任務(wù)調(diào)度運(yùn)行。
文件:core.c (linux-4.6\kernel\sched)
解讀:先看下面的for循環(huán),可以看到實(shí)現(xiàn)思路是,遍歷每種類別,選擇下一個(gè)可運(yùn)行的任務(wù)。由于大部分任務(wù)都屬于公平隊(duì)列,所以,絕大部分情況下,都在公平隊(duì)列中進(jìn)行選擇,所以,內(nèi)核開發(fā)者在上面的代碼中加了likely()提高性能。
2、調(diào)度程序schedule()的調(diào)用次序。
schedule() --- > __schedule () --- > pick_next_task()
文件:core.c (linux-4.6\kernel\sched)
。。。。。。(中間有省略)
相關(guān)文章
Linux通用java程序啟動(dòng)腳本代碼實(shí)例
這篇文章主要介紹了Linux通用java程序啟動(dòng)腳本代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-05-05centos7(redhat7)如何卸載自帶yum并且安裝國(guó)內(nèi)yum源的方法
本篇文章主要介紹了centos7(redhat7)如何卸載自帶yum并且安裝國(guó)內(nèi)yum源的方法,具有一定的參考價(jià)值,有興趣的可以了解一下2017-08-08centos 5.1下的安全設(shè)置(適合所有的linux版本)
因?yàn)閞oot用戶對(duì)系統(tǒng)具有全權(quán)的操作權(quán)限,為了避免一些失誤的操作,建議在一般情況下,以一般用戶登錄系統(tǒng),必要的時(shí)候需要root操作權(quán)限時(shí),再通過(guò)“su -”命令來(lái)登錄為root用戶進(jìn)行操作。2010-03-03Centos5.4+Nginx-0.8.50+UWSGI-0.9.6.2+Django-1.2.3搭建高性能WEB服務(wù)器
這篇文章主要介紹了Centos5.4+Nginx-0.8.50+UWSGI-0.9.6.2+Django-1.2.3搭建高性能WEB服務(wù)器的相關(guān)資料,需要的朋友可以參考下2016-02-02Linux下通過(guò)sed命令對(duì)kv方式的配置文件進(jìn)行修改
sed是unix下的面向字符流的編輯器,即stream editor, 它是面向行的,以行為單位進(jìn)行處理,同時(shí),sed是非交互式的,一旦執(zhí)行便要處理完整個(gè)文件。這篇文章主要介紹了Linux下通過(guò)sed命令對(duì)kv方式的配置文件進(jìn)行修改,需要的朋友可以參考下2018-11-11