嵌入式linux內(nèi)核開發(fā)教程之深入分析linux內(nèi)核源碼-進程調(diào)度

嵌入式linux內(nèi)核開發(fā)教程之深入分析linux內(nèi)核源碼-進程調(diào)度

ID:27438757

大?。?.64 MB

頁數(shù):22頁

時間:2018-12-02

嵌入式linux內(nèi)核開發(fā)教程之深入分析linux內(nèi)核源碼-進程調(diào)度_第1頁
嵌入式linux內(nèi)核開發(fā)教程之深入分析linux內(nèi)核源碼-進程調(diào)度_第2頁
嵌入式linux內(nèi)核開發(fā)教程之深入分析linux內(nèi)核源碼-進程調(diào)度_第3頁
嵌入式linux內(nèi)核開發(fā)教程之深入分析linux內(nèi)核源碼-進程調(diào)度_第4頁
嵌入式linux內(nèi)核開發(fā)教程之深入分析linux內(nèi)核源碼-進程調(diào)度_第5頁
資源描述:

《嵌入式linux內(nèi)核開發(fā)教程之深入分析linux內(nèi)核源碼-進程調(diào)度》由會員上傳分享,免費在線閱讀,更多相關內(nèi)容在教育資源-天天文庫。

1、嵌入式Linux開發(fā)教程之Linux內(nèi)核-進程調(diào)度(2)Linux的調(diào)度程序-Schedule()3.1基本原理1.時間片輪轉(zhuǎn)調(diào)度算法2.優(yōu)先權調(diào)度算法3.多級反饋隊列調(diào)度4.實時調(diào)度3.2Linux進程調(diào)度時機三個函數(shù)是如何協(xié)調(diào)工作的3.3進程調(diào)度的依據(jù)3.4進程可運行程度的衡量3.1基本原理調(diào)度的實質(zhì)就是資源的分配。系統(tǒng)通過不同的調(diào)度算法(SchedulingAlgorithm)來實現(xiàn)這種資源的分配。通常來說,選擇什么樣的調(diào)度算法取決于的資源分配的策略(SchedulingPolicy),在這里只說明與Linux調(diào)度相關的幾種算法及這些算法的原理。一個好的調(diào)度算法應

2、當考慮以下幾個方面:(1)公平:保證每個進程得到合理的CPU時間。(2)高效:使CPU保持忙碌狀態(tài),即總是有進程在CPU上運行嵌入式Linux內(nèi)核開發(fā)教程之Linux的調(diào)度程序-Schedule()(3)響應時間:使交互用戶的響應時間盡可能短。(4)周轉(zhuǎn)時間:使批處理用戶等待輸出的時間盡可能短。(5)吞吐量:使單位時間內(nèi)處理的進程數(shù)量盡可能多。很顯然,這5個目標不可能同時達到,所以,不同的操作系統(tǒng)會在這幾個方面中作出相應的取舍,從而確定自己的調(diào)度算法,例如UNIX采用動態(tài)優(yōu)先數(shù)調(diào)度、BSD采用多級反饋隊列調(diào)度、Windows采用搶先多任務調(diào)度等等。嵌入式Linux內(nèi)核開

3、發(fā)教程下面來了解一下主要的調(diào)度算法及其基本原理:1.時間片輪轉(zhuǎn)調(diào)度算法時間片(TimeSlice)就是分配給進程運行的一段時間。在通常的輪轉(zhuǎn)法中,系統(tǒng)將所有的可運行(即就緒)進程按先來先服務的原則,排成一個隊列,每次調(diào)度時把CPU分配給隊首進程,并令其執(zhí)行一個時間片。當執(zhí)行的時間片用完時,系統(tǒng)發(fā)出信號,通知調(diào)度程序,調(diào)度程序便據(jù)此信號來停止該進程的執(zhí)行,并將它送到運行隊列的末尾,等待下一次執(zhí)行;然后,把處理機分配給就緒隊列中新的隊首進程,同時也讓它執(zhí)行一個時間片。這樣就可以保證運行隊列中的所有進程,在一個給定的時間內(nèi),均能獲得一時間片的處理機執(zhí)行時間。嵌入式Linux內(nèi)

4、核開發(fā)教程之1.時間片輪轉(zhuǎn)調(diào)度算法為了照顧到緊迫型進程在進入系統(tǒng)后便能獲得優(yōu)先處理,引入了最高優(yōu)先權調(diào)度算法。當將該算法用于進程調(diào)度時,系統(tǒng)將把處理機分配給運行隊列中優(yōu)先權最高的進程,這時,又可進一步把該算法分成兩種方式:(1)非搶占式優(yōu)先權算法(又稱不可剝奪調(diào)度:NonpreemptiveScheduling)在這種方式下,系統(tǒng)一旦將處理機(CPU)分配給運行隊列中優(yōu)先權最高的進程后,該進程便一直執(zhí)行下去,直至完成;或因發(fā)生某事件使該進程放棄處理機時,系統(tǒng)方可將處理機分配給另一個優(yōu)先權高的進程。這種調(diào)度算法主要用于批處理系統(tǒng)中,也可用于某些對實時性要求不嚴的實時系統(tǒng)中

5、。嵌入式Linux內(nèi)核開發(fā)教程之2.優(yōu)先權調(diào)度算法(2)搶占式優(yōu)先權調(diào)度算法(又稱可剝奪調(diào)度:PreemptiveScheduling)該算法的本質(zhì)就是系統(tǒng)中當前運行的進程永遠是可運行進程中優(yōu)先權最高的那個。在采用這種調(diào)度算法時,每當出現(xiàn)一新的可運行進程,就將它和當前運行進程進行優(yōu)先權比較,如果高于當前進程,將觸發(fā)進程調(diào)度。這種方式的優(yōu)先權調(diào)度算法,能更好的滿足緊迫進程的要求,故而常用于要求比較嚴格的實時系統(tǒng)中,以及對性能要求較高的批處理和分時系統(tǒng)中。Linux也采用這種調(diào)度算法。嵌入式Linux內(nèi)核開發(fā)教程這是時下最時髦的一種調(diào)度算法。其本質(zhì)是:綜合了時間片輪轉(zhuǎn)調(diào)度和

6、搶占式優(yōu)先權調(diào)度的優(yōu)點,即:優(yōu)先權高的進程先運行給定的時間片,相同優(yōu)先權的進程輪流運行給定的時間片。嵌入式Linux內(nèi)核開發(fā)教程之3.多級反饋隊列調(diào)度最后我們來看一下實時系統(tǒng)中的調(diào)度。什么叫實時系統(tǒng),就是系統(tǒng)對外部事件有求必應、盡快響應。在實時系統(tǒng)中,廣泛采用搶占調(diào)度方式,特別是對于那些要求嚴格的實時系統(tǒng)。因為這種調(diào)度方式既具有較大的靈活性,又能獲得很小的調(diào)度延遲;但是這種調(diào)度方式也比較復雜。嵌入式Linux內(nèi)核開發(fā)教程之4.實時調(diào)度Linux的調(diào)度程序是一個叫Schedule()的函數(shù),這個函數(shù)被調(diào)用的頻率很高,由它來決定是否要進行進程的切換,如果要切換的話,切換到哪

7、個進程等等。我們先來看在什么情況下要執(zhí)行調(diào)度程序,我們把這種情況叫做調(diào)度時機。Linux調(diào)度時機主要有:1、進程狀態(tài)轉(zhuǎn)換的時刻:進程終止、進程睡眠;2、當前進程的時間片用完時(current->counter=0);3、設備驅(qū)動程序主動調(diào)用schedule;嵌入式Linux內(nèi)核開發(fā)教程之3.2Linux進程調(diào)度時機4、進程從中斷、異常及系統(tǒng)調(diào)用返回到用戶態(tài)時;時機1,進程要調(diào)用sleep()或exit()等函數(shù)進行狀態(tài)轉(zhuǎn)換,這些函數(shù)會主動調(diào)用調(diào)度程序進行進程調(diào)度;時機2,由于進程的時間片是由時鐘中斷來更新的,因此,這種情況和時機4是一樣的

當前文檔最多預覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學公式或PPT動畫的文件,查看預覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。