操作系统调度策略
操作系統(tǒng)調(diào)度是為了再有限的資源下,通過對多個程序執(zhí)行過程的國立,盡可能滿足系統(tǒng)和應(yīng)用的 指標(biāo),如等待響應(yīng)時間,完成時間,系統(tǒng)得資源利用率、吞吐量、功耗等。
設(shè)計一個令用戶滿意的調(diào)度器絕非易事,主要有以下挑戰(zhàn):
- 調(diào)度指標(biāo)多樣性。不同場景下的調(diào)度指標(biāo)的選取有所不同,用戶在切換應(yīng)用場景時,新舊場景的調(diào)度指標(biāo)不一定適用。
- 調(diào)度可參考的信息有限。調(diào)度器沒有“上帝視角”,且應(yīng)用場景可能動態(tài)變換,調(diào)度器只能通過有限的信息做出調(diào)度決策。
- 任務(wù)間的復(fù)雜交互。同一程序的任務(wù)間可能會有相互關(guān)聯(lián)的邏輯,需要相互依賴,調(diào)度器不能夠獨立地調(diào)度這些任務(wù)。
- 許多地方存在權(quán)衡。調(diào)度器的設(shè)計實現(xiàn)與系統(tǒng)的設(shè)計實現(xiàn)一樣,存在多種權(quán)衡。
單核調(diào)度策略
1.經(jīng)典調(diào)度
1)先到先得(FIFO)
特點:簡單直觀,但在長短任務(wù)混合的場景下對短任務(wù)不友好,對I/O密集型任務(wù)不友好
2)最短任務(wù)優(yōu)先(SJF)
在調(diào)度時會選擇運(yùn)行時間最短的任務(wù)執(zhí)行
特點:必須與之任務(wù)的運(yùn)行時間,嚴(yán)重依賴于任務(wù)到達(dá)時間點
3)最短完成時間任務(wù)優(yōu)先(STCF)
搶占式版本的SJF,在任務(wù)到達(dá)系統(tǒng)時回進(jìn)行調(diào)度,有可能會終端當(dāng)前正在執(zhí)行的任務(wù),轉(zhuǎn)而執(zhí)行其他任務(wù),即搶占式調(diào)度
特點:長任務(wù)饑餓,STCF策略傾向于完成時間較短的任務(wù),長任務(wù)可能會無法占用CPU資源,一直處于饑餓狀態(tài)。
4)時間片輪轉(zhuǎn)(RR)
為了定時相應(yīng)用戶,需要為任務(wù)設(shè)置時間片,限定任務(wù)每次執(zhí)行的時間,當(dāng)前任務(wù)執(zhí)行完時間片后,就切換到運(yùn)行隊列中的下一個任務(wù)。
特點:RR策略的關(guān)鍵點在于時間片的大小,在任務(wù)運(yùn)行時間相似的場景下平均周轉(zhuǎn)時間高。
2.優(yōu)先級調(diào)度
1)多級隊列(MLQ)
每個人物會被分配預(yù)先設(shè)置好的優(yōu)先級,每個優(yōu)先級對應(yīng)一個隊列,任務(wù)會被存儲在對應(yīng)的優(yōu)先級隊列中。
特點:MLQ策略是一個靜態(tài)優(yōu)先級調(diào)度策略,但會出現(xiàn)低優(yōu)先級任務(wù)饑餓的問題。
2)多級反饋隊列(MLFQ)
在多級隊列的基礎(chǔ)上增加了動態(tài)設(shè)置任務(wù)優(yōu)先級的策略。
MLFQ維護(hù)多個優(yōu)先級隊列,任務(wù)根據(jù)優(yōu)先級存于不同隊列中,高優(yōu)先級任務(wù)先于低優(yōu)先級任務(wù)執(zhí)行,處于相同優(yōu)先級的任務(wù)則采用RR策略執(zhí)行。MLFQ策略會先對任務(wù)的運(yùn)行時間進(jìn)行評估,預(yù)計運(yùn)行時間較短的任務(wù)會放入優(yōu)先級較高的隊列中。
特點:低優(yōu)先級的任務(wù)采用更長的時間片,定時地將所有任務(wù)的優(yōu)先級提升至最高。
3.公平共享調(diào)度
這類調(diào)度會量化任務(wù)對系統(tǒng)資源的占有比例,實現(xiàn)對資源的公平調(diào)度。
1)彩票調(diào)度
根據(jù)每個任務(wù)所占有的份額成比例地分配CPU時間,在每次調(diào)度時,會根據(jù)隨機(jī)數(shù)確定任務(wù)是否被調(diào)度。任務(wù)所占的份額越大,隨機(jī)數(shù)就越有可能落在它的份額之內(nèi),即越有可能會被調(diào)度。
隨機(jī)數(shù)帶來的問題:彩票調(diào)度通過使用隨機(jī)的方式實現(xiàn)一個簡單而又近似公平共享的調(diào)度器,但是,隨機(jī)數(shù)會導(dǎo)致某一任務(wù)占有CPU時間的比例,需要在該任務(wù)經(jīng)歷多次調(diào)度后,才能趨近于該任務(wù)的份額在所有任務(wù)總份額中的比例。
基于彩票的優(yōu)化方法:
- 彩票轉(zhuǎn)讓
- 彩票貨幣
?????? 通過添加一層彩票貨幣的抽象,讓任務(wù)組更加靈活地修改自己持有的份額,避免影響從屬于它們的任務(wù)。
- 彩票通脹
?????? 給任務(wù)一定自由度,允許任務(wù)根據(jù)當(dāng)前對CPU資源的需求決定自己的份額。
2)步幅調(diào)度
步幅調(diào)度通過設(shè)置虛擬時間的方式,讓任務(wù)在每次調(diào)度時增加一定的虛擬時間,即步幅。經(jīng)歷虛擬時間相同的任務(wù),它們使用的CPU時間之比就是步幅的倒數(shù)之比。即任務(wù)的份額之比對應(yīng)于任務(wù)的步幅的倒數(shù)之比。
4.實時調(diào)度
實時操作系統(tǒng)是指需要實時處理任務(wù)請求的操作系統(tǒng)。
分類:
1)根據(jù)任務(wù)超過截止時間所造成的后果分類:
- 硬實時任務(wù)
?? 該類任務(wù)必須在截止時間之前完成,否則系統(tǒng)無法承擔(dān)任務(wù)處理超過截止時間的后果
- 軟實時任務(wù)
該類任務(wù)允許偶爾超過截止時間完成,其后果可以接受的。
2)根據(jù)被觸發(fā)的時間分類:
- 周期任務(wù)
指到達(dá)系統(tǒng)時間遵循一定周期的任務(wù)
- 偶發(fā)任務(wù)
指不會周期性地到達(dá)系統(tǒng)的任務(wù),且還要滿足連續(xù)兩個相同偶發(fā)任務(wù)到達(dá)系統(tǒng)的時間間隔有最小值,即系統(tǒng)不會在同一時刻處理兩個相同的偶發(fā)任務(wù)。
- 非周期任務(wù)
指到達(dá)系統(tǒng)時間隨機(jī)的任務(wù)。相比于偶發(fā)任務(wù),非周期任務(wù)沒有了相同任務(wù)間最小時間間隔的限制。
1)速率調(diào)度(RM)
是一個用于調(diào)度周期任務(wù)的靜態(tài)優(yōu)先級實時調(diào)度策略。
該調(diào)度策略需要預(yù)知任務(wù)的周期T,并且根據(jù)周期靜態(tài)地為每個任務(wù)分配優(yōu)先級,任務(wù)的周期越短,意味著其截止時間要求越迫切,其優(yōu)先級越高。
2)最早截止時間優(yōu)先(EDF)
任務(wù)的截止時間越近則優(yōu)先級越高·
5.其他調(diào)度
借用虛擬時間(BVT)
BVT策略允許其“向自己的未來借用一定虛擬時間”。即BVT策略允許人物在短時間內(nèi)將自己的pass值降低,以達(dá)到被優(yōu)先調(diào)用的目的。
多核調(diào)度策略
在多核系統(tǒng)中,任務(wù)會同時在多個CPU核心上并行執(zhí)行,相比于單核調(diào)度策略,多核調(diào)度策略需要考慮的因素更加復(fù)雜。
1.負(fù)載分擔(dān)
2.協(xié)同調(diào)度
協(xié)同調(diào)度的目的在于盡可能讓一組任務(wù)并行執(zhí)行,避免調(diào)度器同時調(diào)度有依賴關(guān)系的兩組任務(wù),同時避免關(guān)聯(lián)任務(wù)執(zhí)行效率低的問題。
3.兩級調(diào)度
為了減少開銷,每個任務(wù)盡可能只在一個CPU核心上進(jìn)行調(diào)度。將任務(wù)綁定到特定的CPU核心上進(jìn)行調(diào)度執(zhí)行,避免了任務(wù)在多核間切換。
為每個CPU核心都引入一個本地調(diào)度器,并用它管理對應(yīng)核心上執(zhí)行的任務(wù)。改調(diào)度策略使用全局調(diào)度器和本地調(diào)度器,構(gòu)成了層級化結(jié)構(gòu)。
4.負(fù)載追蹤與負(fù)載均衡
負(fù)載均衡是通過追蹤每個CPU核心當(dāng)前的負(fù)載情況,將處于高負(fù)載的CPU核心管理的任務(wù)遷移到低負(fù)載的CPU核心上,盡可能地保證每個核心的負(fù)載大致相同。
總結(jié)
- 上一篇: Servlet的生命周期和线程安全问题
- 下一篇: 英飞凌的模拟硅麦