一種進(jìn)程調(diào)度優(yōu)化方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及進(jìn)程調(diào)度技術(shù)領(lǐng)域,特別是涉及一種進(jìn)程調(diào)度優(yōu)化方法。
【背景技術(shù)】
[0002]目前,一個(gè)完整的操作系統(tǒng)內(nèi)核由五個(gè)部分構(gòu)成:進(jìn)度調(diào)度、內(nèi)存管理、文件系統(tǒng)、網(wǎng)絡(luò)接口以及通信機(jī)制。進(jìn)程調(diào)度部分負(fù)責(zé)對(duì)CPU資源的分配,調(diào)度算法的優(yōu)劣直接影響到操作系統(tǒng)的整體性能。操作系統(tǒng)為了換取底層設(shè)備的內(nèi)存、10設(shè)備等物理資源的接口以及所模擬的硬件環(huán)境,客戶(hù)機(jī)操作系統(tǒng)需要進(jìn)行二進(jìn)制的轉(zhuǎn)換,這樣必然增加了系統(tǒng)的復(fù)雜性。
[0003]linux操作系統(tǒng)具有默認(rèn)的調(diào)度策略和優(yōu)先級(jí),用戶(hù)在啟動(dòng)操作系統(tǒng)調(diào)度機(jī)時(shí),操作系統(tǒng)只能采用默認(rèn)的調(diào)度策略和優(yōu)先級(jí),并不能根據(jù)實(shí)際需要來(lái)選擇不同的調(diào)度策略,這樣獲取底層物理資源的速度很慢,進(jìn)程調(diào)度的效率很低。
【發(fā)明內(nèi)容】
[0004]本發(fā)明的目的是提供一種進(jìn)程調(diào)度優(yōu)化方法,以實(shí)現(xiàn)操作系統(tǒng)能夠根據(jù)實(shí)際需要,更快地獲取底層物理資源,提高進(jìn)程調(diào)度的效率。
[0005]為解決上述技術(shù)問(wèn)題,本發(fā)明提供一種進(jìn)程調(diào)度優(yōu)化方法,該方法包括:
[0006]在linux操作系統(tǒng)中建立一套自動(dòng)化腳本;
[0007]利用所述自動(dòng)化腳本的傳入?yún)?shù)設(shè)置操作系統(tǒng)監(jiān)控器的調(diào)度策略和運(yùn)行級(jí)別;
[0008]利用所述傳入?yún)?shù)調(diào)節(jié)linux內(nèi)核的進(jìn)程的調(diào)度策略。
[0009]優(yōu)選的,所述利用所述自動(dòng)化腳本的傳入?yún)?shù)設(shè)置操作系統(tǒng)監(jiān)控器的調(diào)度策略和運(yùn)行級(jí)別,包括:
[0010]將實(shí)時(shí)性的任務(wù)設(shè)置為實(shí)時(shí)進(jìn)程的調(diào)度策略,選用SCHED_FIF0調(diào)度策略或者SCHED_RR調(diào)度策略;
[0011]將非實(shí)時(shí)性的普通任務(wù)設(shè)置為默認(rèn)的調(diào)度策略,選用SCHED_FIF0調(diào)度策略;
[0012]將交互性不強(qiáng)的批處理任務(wù)設(shè)置為SCHED_BATCH調(diào)度策略。
[0013]優(yōu)選的,所述交互性不強(qiáng)的批處理任務(wù)包括作業(yè)密集型的批處理任務(wù)或者響應(yīng)時(shí)間要求低的批處理任務(wù)。
[0014]優(yōu)選的,所述在linux操作系統(tǒng)中建立一套自動(dòng)化腳本,包括:
[0015]在linux操作系統(tǒng)中,通過(guò)不同的系統(tǒng)調(diào)用函數(shù)創(chuàng)建新的進(jìn)程;
[0016]在創(chuàng)建新的進(jìn)程的過(guò)程中,通過(guò)不同的選項(xiàng)參數(shù)來(lái)確定進(jìn)程所需資源的屬性;
[0017]將創(chuàng)建新的進(jìn)程的過(guò)程制作成一套自動(dòng)化腳本,所述選項(xiàng)參數(shù)為所述自動(dòng)化腳本的傳入?yún)?shù)。
[0018]優(yōu)選的,所述通過(guò)不同的系統(tǒng)調(diào)用函數(shù)創(chuàng)建新的進(jìn)程,包括:
[0019]在用戶(hù)空間通過(guò)fork函數(shù)族的系統(tǒng)調(diào)用來(lái)創(chuàng)建一個(gè)新的進(jìn)程;所述fork函數(shù)族中包括fork()函數(shù)、clone()函數(shù)和vfork()函數(shù);
[0020]在內(nèi)核空間通過(guò)調(diào)用kernel_thread()函數(shù)來(lái)創(chuàng)建一個(gè)內(nèi)核進(jìn)程。
[0021 ] 優(yōu)選的,所述參數(shù)選項(xiàng)中包括CL0NE_FILES參數(shù)和CL0NE_SIGHAND參數(shù),CL0NE_FILES參數(shù)表示子進(jìn)程共享相同的文件描述符合信號(hào)處理表,CL0NE_SIGHAND參數(shù)表示子進(jìn)程和父進(jìn)程共享相同的文件描符合信號(hào)處理表。
[0022]優(yōu)選的,在創(chuàng)建新的進(jìn)程的過(guò)程中,通過(guò)不同的選項(xiàng)參數(shù)來(lái)確定進(jìn)程所需資源的屬性之后,還包括:
[0023]若調(diào)用的新的進(jìn)程處于TASK_RUNNING狀態(tài),則子進(jìn)程默認(rèn)處于TASK_ST0PPED狀態(tài);
[0024]若選項(xiàng)參數(shù)選用CL0NE_ST0PPED選項(xiàng),則子進(jìn)程的初始狀態(tài)將是TASK_ST0PPED狀
??τ ο
[0025]優(yōu)選的,所述新的進(jìn)程在linux操作系統(tǒng)中有五個(gè)狀態(tài):TASK_RUNNING、TASK_INTERRUPTIBEL、TASKJJNINTERRUPTIBLE、TASK_ST0PPED 和 TASK_Z0MBILE ;所述 TASK_INTERRUPTIBLE、TASK_UNINTERRUPTIBLE、TASK_STOPPED 和 TASK_Z0MBIE 為非 TASK_RUNNING狀態(tài)。
[0026]本發(fā)明所提供的一種進(jìn)程調(diào)度優(yōu)化方法,在linux操作系統(tǒng)中建立一套自動(dòng)化腳本;利用所述自動(dòng)化腳本的傳入?yún)?shù)設(shè)置操作系統(tǒng)監(jiān)控器的調(diào)度策略和運(yùn)行級(jí)別;利用所述傳入?yún)?shù)調(diào)節(jié)linux內(nèi)核的進(jìn)程的調(diào)度策略??梢?jiàn),該方法通過(guò)自動(dòng)化腳本,用戶(hù)可以調(diào)節(jié)參數(shù),通過(guò)參數(shù)來(lái)調(diào)節(jié)linux內(nèi)核的進(jìn)程的調(diào)度策略,用戶(hù)可以根據(jù)自己的需要,設(shè)置所啟動(dòng)機(jī)器監(jiān)控器調(diào)度的策略和運(yùn)行級(jí)別,使之能根據(jù)作業(yè)的需要占有物理處理器,如此在操作系統(tǒng)啟動(dòng)運(yùn)行期間根據(jù)自動(dòng)化腳本傳入的參數(shù),調(diào)用進(jìn)程的不同調(diào)度策略,實(shí)現(xiàn)操作系統(tǒng)能夠根據(jù)實(shí)際需要,更快地獲取底層物理資源,提高進(jìn)程調(diào)度的效率。
【附圖說(shuō)明】
[0027]為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)提供的附圖獲得其他的附圖。
[0028]圖1為本發(fā)明所提供的一種進(jìn)程調(diào)度優(yōu)化方法的流程圖;
[0029]圖2為操作系統(tǒng)調(diào)度優(yōu)化的處理流程圖。
【具體實(shí)施方式】
[0030]本發(fā)明的核心是提供一種進(jìn)程調(diào)度優(yōu)化方法,以實(shí)現(xiàn)操作系統(tǒng)能夠根據(jù)實(shí)際需要,更快地獲取底層物理資源,提高進(jìn)程調(diào)度的效率。
[0031]為了使本技術(shù)領(lǐng)域的人員更好地理解本發(fā)明方案,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0032]請(qǐng)參考圖1,圖1為本發(fā)明所提供的一種進(jìn)程調(diào)度優(yōu)化方法的流程圖,該方法包括:
[0033]Sll:在linux操作系統(tǒng)中建立一套自動(dòng)化腳本;
[0034]其中,在linux操作系統(tǒng)中建立一套自動(dòng)化腳本的過(guò)程具體為:在linux操作系統(tǒng)中,通過(guò)不同的系統(tǒng)調(diào)用函數(shù)創(chuàng)建新的進(jìn)程;在創(chuàng)建新的進(jìn)程的過(guò)程中,通過(guò)不同的選項(xiàng)參數(shù)來(lái)確定進(jìn)程所需資源的屬性;將創(chuàng)建新的進(jìn)程的過(guò)程制作成一套自動(dòng)化腳本,選項(xiàng)參數(shù)為自動(dòng)化腳本的傳入?yún)?shù)。
[0035]S12:利用自動(dòng)化腳本的傳入?yún)?shù)設(shè)置操作系統(tǒng)監(jiān)控器的調(diào)度策略和運(yùn)行級(jí)別;
[0036]其中,利用自動(dòng)化腳本的傳入?yún)?shù)設(shè)置操作系統(tǒng)監(jiān)控器的調(diào)度策略和運(yùn)行級(jí)別的過(guò)程具體為:將實(shí)時(shí)性的任務(wù)設(shè)置為實(shí)時(shí)進(jìn)程的調(diào)度策略,選用SCHED_FIF0調(diào)度策略或者SCHED_RR調(diào)度策略;將非實(shí)時(shí)性的普通任務(wù)設(shè)置為默認(rèn)的調(diào)度策略,選用SCHED_FIF0調(diào)度策略;將交互性不強(qiáng)的批處理任務(wù)設(shè)置為SCHED_BATCH調(diào)度策略。其中,交互性不強(qiáng)的批處理任務(wù)包括作業(yè)密集型的批處理任務(wù)或者響應(yīng)時(shí)間要求低的批處理任務(wù)。
[0037]S13:利用傳入?yún)?shù)調(diào)節(jié)linux內(nèi)核的進(jìn)程的調(diào)度策略。
[0038]可見(jiàn),該方法通過(guò)自動(dòng)化腳本,用戶(hù)可以調(diào)節(jié)參數(shù),通過(guò)參數(shù)來(lái)調(diào)節(jié)linux內(nèi)核的進(jìn)程的調(diào)度策略,用戶(hù)可以根據(jù)自己的需要,設(shè)置所啟動(dòng)機(jī)器監(jiān)控器調(diào)度的策略和運(yùn)行級(jí)另IJ,使之能根據(jù)作業(yè)的需要占有物理處理器,如此在操作系統(tǒng)啟動(dòng)運(yùn)行期間根據(jù)自動(dòng)化腳本傳入的參數(shù),調(diào)用進(jìn)程的不同調(diào)度策略,實(shí)現(xiàn)操作系統(tǒng)能夠根據(jù)實(shí)際需要,更快地獲取底層物理資源,提高進(jìn)程調(diào)度的效率。
[0039]具體的,在步驟S11中,通過(guò)不同的系統(tǒng)調(diào)用函數(shù)創(chuàng)建新的進(jìn)程具體為:在用戶(hù)空間通過(guò)fork函數(shù)族的系統(tǒng)調(diào)用來(lái)創(chuàng)建一個(gè)新的進(jìn)程;fork函數(shù)族中包括fork()函數(shù)、clone ()函數(shù)和vfork()函數(shù);在內(nèi)核空間通過(guò)調(diào)用kernel_thread()函數(shù)來(lái)創(chuàng)建一個(gè)內(nèi)核進(jìn)程。
[0040]其中,參數(shù)選項(xiàng)中包括CL0NE_FILES參數(shù)和CL0NE_SIGHAND參數(shù),CL0NE_FILES參數(shù)表示子進(jìn)程共享相同的文件描述符合信號(hào)處理表,CL0NE_SIGHAND參數(shù)表示子進(jìn)程和父進(jìn)程共享相同的文件描符合信號(hào)處理表。
[0041]其中,在創(chuàng)建新的進(jìn)程的過(guò)程中,通過(guò)不同的選項(xiàng)參數(shù)來(lái)確定進(jìn)程所需資源的屬性之后,若調(diào)用的新的進(jìn)程處于TASK_RUNNING狀態(tài),則子進(jìn)程默認(rèn)處于TASK_ST0PPED狀態(tài);若選項(xiàng)參數(shù)選用CL0NE_ST0PPED選項(xiàng),則子進(jìn)程的初始狀態(tài)將是TASK_ST0PPED狀態(tài)。
[0042]其中,新的進(jìn)程在linux操作系統(tǒng)中有五個(gè)狀態(tài):TASK_RUNNING、TASK_INTERRUPTIBEL、 TASK_UNINTERRUPTIBLE、 TASK_ST0PPED 和 TASK_Z0MBILE ;TASK_INTERRUPTIBLE、TASKJJNINTERRUPTIBLE、TASK_ST0PPED 和 TASK_Z0MBIE 為非 TASK_RUNNING狀態(tài)。
[0043]該方法設(shè)計(jì)與實(shí)現(xiàn)了一套linux操作系統(tǒng)的進(jìn)程調(diào)度的優(yōu)化方案,實(shí)現(xiàn)操作系統(tǒng)能夠根據(jù)實(shí)際需要,更多、更快的獲取底層物理資源。主要是根據(jù)當(dāng)前系統(tǒng)的實(shí)際需要,編寫(xiě)一套自動(dòng)化腳本,在操作系統(tǒng)啟動(dòng)運(yùn)行期間根據(jù)自動(dòng)化腳本傳入的參數(shù),調(diào)用進(jìn)程的不同調(diào)度策略。通過(guò)自動(dòng)化腳本,用戶(hù)可以調(diào)節(jié)參數(shù),通過(guò)參數(shù)來(lái)調(diào)節(jié)linux內(nèi)核的進(jìn)程的調(diào)度策略。并且,用戶(hù)可以根據(jù)自己的需要,設(shè)置所啟動(dòng)機(jī)器監(jiān)控器調(diào)度的策略和運(yùn)行級(jí)別,使之能根據(jù)作業(yè)的需要占有物理處理器,比如對(duì)于實(shí)時(shí)性的任務(wù),可以設(shè)置為實(shí)時(shí)進(jìn)程的調(diào)度策略,選用SCHED_FIF