一種進程調度方法
【技術領域】
[0001]本發(fā)明涉及l(fā)inux進程調度技術領域,特別是涉及一種進程調度方法。
【背景技術】
[0002]目前,隨著linux操作系統(tǒng)的發(fā)展,系統(tǒng)的應用范圍越來越廣,從大型服務器到便攜式嵌入式設備,都對Linux操作系統(tǒng)的進程調度提出了不同的需求。對于不同的應用場景,其進程調度的需求是不同的。在大型服務器上更強調任務的公平性,而在桌面環(huán)境下則更追求交互任務的優(yōu)先響應。
[0003]BFS是一個進程調度器,是專門為linux桌面環(huán)境所設計的內核調度器,已有的BFS調度器采用的進程調度方法是采用給進程分配不同的優(yōu)先級組,從高到低調度不同的優(yōu)先級組,組內則按照進程的deadline調度。已有的BFS調度器將進程分為4個大類,即realtime、SCHED_IS0、SCHED_N0RMAL 和 SCHED_IDELPR0,并將所有進程分配了 103 個優(yōu)先級。但是采用現(xiàn)有的BFS調度器進行進程調度,優(yōu)先級越多,低優(yōu)先級進程等待調度的時間就越長,而且BFS調度器分配給進程的時間片有些不合理,每個進程的時間片是由優(yōu)先級預先分配好的,不能實時調整,這樣都導致系統(tǒng)的整體響應速度很低。
【發(fā)明內容】
[0004]本發(fā)明的目的是提供一種進程調度方法,以實現(xiàn)提高系統(tǒng)的整體響應速度。
[0005]為解決上述技術問題,本發(fā)明提供一種進程調度方法,該方法包括:
[0006]將linux系統(tǒng)內的所有進程任務分為多個優(yōu)先級;其中,實時進程任務的優(yōu)先級高于交互進程任務的優(yōu)先級,交互進程任務的優(yōu)先級高于普通進程任務的優(yōu)先級;
[0007]將每一個優(yōu)先級里面的所有進程任務作為一個進程任務組,對每個優(yōu)先級里面的進程任務組設定組時間片,進行組間調度;
[0008]若進程任務組的組時間片用完,將組內剩余進程任務加入到比當前優(yōu)先級低一級的優(yōu)先級里面的進程任務組中。
[0009]優(yōu)選的,所述對每個優(yōu)先級里面的進程任務組設定組時間片,進行組間調度之后,還包括:
[0010]每個進程任務組的進程任務按照默認時間片進行組內調度,按照默認時間片進行調度完成之后,再按照deadline調度方式對進程任務組進行組內調度。
[0011]優(yōu)選的,所述默認時間片=組間時間片/組內進程數(shù)。
[0012]優(yōu)選的,每一個優(yōu)先級對應相應的一組進程任務組。
[0013]優(yōu)選的,所述將linux系統(tǒng)內的所有進程任務分為多個優(yōu)先級,包括:
[0014]將linux系統(tǒng)內所有進程任務分為三個大類,所述三個大類為SCHED_REALHME、SCHED_10 和 SCHED_N0RMAL ;其中,SCHED_REALHME 映射有 50 個優(yōu)先級,SCHED_10 映射有 1個優(yōu)先級,SCHED_N0RMAL映射有一個優(yōu)先級,所述三個大類包括53個優(yōu)先級。
[0015]優(yōu)選的,所述SCHED_REALHME對應實時進程任務,SCHED_REALTIME的優(yōu)先級最高;所述SCHED_1對應交互進程任務,SCHED_1的優(yōu)先級排第二 ;所述SCHED_NORMAL對應普通進程任務,SCHED_NORMAL的優(yōu)先級最低。
[0016]優(yōu)選的,每個優(yōu)先級有一個隊列queue,隊列queue用于存儲對應優(yōu)先級的進程任務,所有的隊列queue的狀態(tài)映射到一個位圖文件bitmap上;其中,所述隊列queue為所述進程任務組。
[0017]優(yōu)選的,若所述隊列queue中存在可被調度的進程,所述隊列queue對應的位圖文件bitmap上的位設置為1。
[0018]本發(fā)明所提供的一種進程調度方法,將linux系統(tǒng)內的所有進程任務分為多個優(yōu)先級;其中,實時進程任務的優(yōu)先級尚于交互進程任務的優(yōu)先級,交互進程任務的優(yōu)先級尚于普通進程任務的優(yōu)先級;每一個優(yōu)先級里面的所有進程任務作為一個進程任務組,對每個優(yōu)先級里面的進程任務組設定組時間片,進行組間調度;若進程任務組的組時間片用完,將組內剩余進程任務加入到比當前優(yōu)先級低一級的優(yōu)先級里面的進程任務組中??梢?,將系統(tǒng)內進程分為多個優(yōu)先級,實時進程任務的優(yōu)先級 > 交互進程任務的優(yōu)先級 > 普通進程任務的優(yōu)先級,不同優(yōu)先級的任務分組,各組設定組時間片,進行組間調度,若組時間片用完則將組內剩余任務加入到低一個優(yōu)先級的組中。在調度的過程中,是從高優(yōu)先級到低優(yōu)先級遍歷進行,優(yōu)先調度高優(yōu)先級的組,并設定組時間片,若組中的進程用完該組時間片后,仍有進程未運行完,則將剩余進程加入到下一優(yōu)先級組中,從而讓低優(yōu)先級的組可以與高優(yōu)先級的組競爭,增加了公平性,如此考慮了 linux系統(tǒng)桌面環(huán)境下進程調度時,優(yōu)先滿足交互式任務,減少了優(yōu)先級的數(shù)目,從而減少低優(yōu)先級分組的等待時間,增加公平性,即組間調度中低優(yōu)先級隊列有機會和高優(yōu)先級隊列競爭,增加了公平性,所以該方法保證交互式任務優(yōu)先響應,同時又增加了公平性,提高了系統(tǒng)的整體響應速度。
【附圖說明】
[0019]為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術中的技術方案,下面將對實施例或現(xiàn)有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據提供的附圖獲得其他的附圖。
[0020]圖1為本發(fā)明所提供的一種進程調度方法的流程圖;
[0021]圖2為任務進程優(yōu)先級與隊列queue對應關系圖;
[0022]圖3為組間調度示意圖;
[0023]圖4為組內調度示意圖。
【具體實施方式】
[0024]本發(fā)明的核心是提供一種進程調度方法,以實現(xiàn)提高系統(tǒng)的整體響應速度。
[0025]為了使本技術領域的人員更好地理解本發(fā)明方案,下面將結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領域普通技術人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
[0026]請參考圖1,圖1為本發(fā)明所提供的一種進程調度方法的流程圖,該方法應用于BFS調度器,該方法包括:
[0027]S11:將linux系統(tǒng)內的所有進程任務分為多個優(yōu)先級;其中,實時進程任務的優(yōu)先級高于交互進程任務的優(yōu)先級,交互進程任務的優(yōu)先級高于普通進程任務的優(yōu)先級;
[0028]其中,進程任務組將linux系統(tǒng)內的所有進程任務分為多個優(yōu)先級的過程為將linux系統(tǒng)內所有進程任務分為三個大類,進程任務組三個大類為SCHED_REALHME、SCHED_10 和 SCHED_N0RMAL ;其中,SCHED_REALHME 映射有 50 個優(yōu)先級,SCHED_10 映射有 1個優(yōu)先級,SCHED_N0RMAL映射有一個優(yōu)先級,進程任務組三個大類包括53個優(yōu)先級。系統(tǒng)內進程分為多個優(yōu)先級,實時進程任務的優(yōu)先級 > 交互進程任務的優(yōu)先級 > 普通進程任務的優(yōu)先級;
[0029]其中,進程任務組SCHED_REALHME對應實時進程任務,SCHED_REALTIME的優(yōu)先級最高;進程任務組SCHED_10對應交互進程任務,SCHED_10的優(yōu)先級排第二 ;進程任務組SCHED_N0RMAL對應普通進程任務,SCHED_N0RMAL的優(yōu)先級最低。
[0030]S12:將每一個優(yōu)先級里面的所有進程任務作為一個進程任務組,對每個優(yōu)先級里面的進程任務組設定組時間片,進行組間調度;
[0031]其中,每一個優(yōu)先級對應相應的一組進程任務組。組間調度時,設定組時間片,對于超時的進程降到下一個優(yōu)先級。
[0032]其中,對每個優(yōu)先級里面的進程任務組設定組時間片,進行組間調度之后,每個進程任務組的進程任務按照默認時間片進行組內調度,按照默認時間片進行調度完成之后,再按照截止時間調度方式即deadline調度方式對進程任務組進行組內調度。進程任務組默認時間片=組間時間片/組內進程數(shù),組內進程數(shù)即為組內進程任務的數(shù)目。組內調度時,優(yōu)先米用公平調度,然后米用deadline調度。
[0033]其中,每個優(yōu)先級有一個隊列queue,隊列queue用于存儲對應優(yōu)先級的進程任務,所有的隊列queue的狀態(tài)映射到一個位圖文件bitmap上;其中,隊列queue為進程任務組,隊列queue指代的就是進程任務組。若隊列queue中存在可被調度的進程,隊列queue對應的位圖文件bitmap上的位設置為1。
[0034]S13:若進程任務組的組時間片用完,將組內剩余進程任務加入到比當前優(yōu)先級低一級的優(yōu)先級里面的進程任務組中。
[0035]具體的,S11至S13的執(zhí)行者均為BFS調度器。以上方法針對桌面環(huán)境的進程調度,將進程分為3個大類,共53個優(yōu)先級,不同的優(yōu)先級對應不同的隊列queue,所有的queue的狀態(tài)映射到位圖bitmap上對應的位。
[0036]BFS調度器從高優(yōu)先級到低優(yōu)先級遍歷bitmap,優(yōu)先調度高優(yōu)先級的組,并設定組時間片。若組中的進程用完該組時間片后,仍有進程未運行完,則將剩余進程加入到下一優(yōu)先級組中,從而讓低優(yōu)先級的組可以與高優(yōu)先級的組競爭,增加了公平性。
[0037]而組內則優(yōu)先采用公平調度,其次采用deadline調度。即組內進程默認平分組時間片,當進程的deadline即截止時間小于默認時間片時,優(yōu)先調度deadline最小的進程,從而在兼顧進程公平性的同時優(yōu)先保證deadline進程調度。
[0038]具體的,BFS調度器首先將系統(tǒng)內進程即進程任務分為多個優(yōu)先級