8處理機調(diào)度

15.1處理機調(diào)度概念

CPU資源的時分復(fù)用

■進程切換:CPU資源的當前占用者切換

保存當前進程在PCB中的執(zhí)行上下文(CPU狀態(tài))

恢復(fù)下一個進程的執(zhí)行上下文

■處理機調(diào)度

從就緒隊列中挑選下一個占用CPU運行的進程

從多個可用CPU中挑選就緒進程可使用的CPU資源

■調(diào)度程序:挑選就緒進程的內(nèi)核函數(shù)

調(diào)度策略

依據(jù)什么原則挑選進程/線程曙咽?

調(diào)度時機

什么時候進行調(diào)度蛔趴?

調(diào)度時機

■內(nèi)核運行調(diào)度程序的條件

進程從運行狀態(tài)切換到等待狀態(tài)

進程被終結(jié)了

■非搶占系統(tǒng)

當前進程主動放棄CPU時

■可搶占系統(tǒng)

中斷請求被服務(wù)例程響應(yīng)完成時

當前進程被搶占

進程時間片用完

進程從等待切換到就緒


精髓:

操作系統(tǒng)根據(jù)進程的執(zhí)行對三種類型的調(diào)度方案做出選擇。長程調(diào)度確定何時允許一個新進程進入系統(tǒng)例朱。中程調(diào)度是交換功能的一部分孝情,它確定何時把一個程序的部分或全部取進內(nèi)存鱼蝉,使得該程序能夠被執(zhí)行。短程調(diào)度確定哪一個就緒進程下一次被處理器執(zhí)行箫荡。

15.2調(diào)度準則

處理機資源的使用模式

■進程在CPU計算和I/O操作間交替

每次調(diào)度決定在下一個CPU計算時將哪個工作交給CPU

在時間片機制下魁亦,進程可能在結(jié)束當前CPU計算前被迫放棄CPU(對進程執(zhí)行不利)

比較調(diào)度算法的準則

■CPU使用率

CPU處于忙狀態(tài)的時間百分比(需要是CPU盡可能的忙)

■吞吐量

單位時間內(nèi)完成的進程數(shù)量

■周轉(zhuǎn)時間

進程從初始化到結(jié)束的總時間(包括進入內(nèi)存、在就緒隊列中等待羔挡、在CPU上執(zhí)行和I/O執(zhí)行洁奈。通常受輸出設(shè)備速度的限制)

■等待時間

進程在就緒隊列中的總時間

■響應(yīng)時間

從提交請求到產(chǎn)生響應(yīng)所花費的總時間

吞吐量與延遲

■調(diào)度算法的要求

希望“更快”的服務(wù)

■什么是更快?

傳輸文件時的高帶寬绞灼,調(diào)度算法的高吞吐量

玩游戲時的低延遲利术,調(diào)度算法的低響應(yīng)延遲

這兩個因素是獨立的

■與水管的類比

低延遲:喝水的時候想要一打開水龍頭水就流出來

高帶寬:給游泳池充水時希望從水龍頭里同時流出大量的水,并且不介意是否存在延遲

概念:需要使CPU使用率和吞吐量最大化低矮,而使周轉(zhuǎn)時間印叁、等待時間和相應(yīng)時間最小化。

處理機調(diào)度策略的響應(yīng)時間目標

減少響應(yīng)時間

及時處理用戶的輸入請求军掂,盡快將輸出反饋給用戶

減少平均響應(yīng)時間的波動

在交互系統(tǒng)中轮蜕,可預(yù)測性比高差異低平均更重要

■低延遲調(diào)度改善了用戶的交互體驗

如果移動鼠標時,屏幕中的光標沒動蝗锥,用戶可能會重啟電腦

■響應(yīng)時間是操作系統(tǒng)的計算延遲

處理機調(diào)度策略的吞吐量目標

增加吞吐量

減少開銷(操作系統(tǒng)開銷跃洛,上下文切換)

系統(tǒng)資源的高效利用(CPU,I/O設(shè)備)

減少等待時間

減少每個進程的等待時間(可以提高它的響應(yīng)性能也可以提高它的吞吐量的性能)

■操作系統(tǒng)需要保證吞吐量不受用戶交互的影響

操作系統(tǒng)必須不時進行調(diào)度玛追,即使存在許多交互任務(wù)

■吞吐量是操作系統(tǒng)的計算帶寬

處理機調(diào)度的公平性目標

公平的定義

保證每個進程占用相同的CPU時間

保證每個進程的等待時間相同

公平通常會增加平均響應(yīng)時間

15.3調(diào)度算法

先來先服務(wù)算法(First Come First Served, FCFS)


依據(jù)進程進入就緒狀態(tài)的先后順序排列

進程進入等待或結(jié)束狀態(tài)時(進程主動讓出cpu)税课,就緒隊列中的下一個進程占用CPU

優(yōu)點

簡單

缺點

·平均等待時間波動較大

短進程可能排在長進程后面

·I/O資源和CPU資源的利用率較低

CPU密集型進程會導(dǎo)致I/O設(shè)備閑置時,I/O密集型進程也等待

短進程優(yōu)先算法(SPN)


選擇就緒隊列中執(zhí)行時間最短進程占用CPU進入運行狀態(tài)

就緒隊列按預(yù)期的執(zhí)行時間來排序

短剩余時間優(yōu)先算法(SRT)

SPN算法的可搶占改進

優(yōu)點

短進程優(yōu)先算法具有最優(yōu)平均周轉(zhuǎn)時間


缺點

·可能導(dǎo)致饑餓

連續(xù)的短進程流會使長進程無法獲得CPU資源

·需要預(yù)知未來

如何預(yù)估下一個CPU計算的持續(xù)時間痊剖?

簡單的解決辦法:詢問用戶

用戶欺騙就殺死相應(yīng)進程

用戶不知道怎么辦韩玩?

短進程優(yōu)先算法的執(zhí)行時間預(yù)估

用歷史的執(zhí)行時間來預(yù)估未來的執(zhí)行時間

最高響應(yīng)比優(yōu)先算法(HRRN)

選擇就緒隊列中響應(yīng)比R值最高的進程

R=(w+s)/s

w:等待時間(waiting time)

s:執(zhí)行時間(service time)

在短進程優(yōu)先算法的基礎(chǔ)上改進

不可搶占

關(guān)注進程的等待時間

防止無限期推遲

時間片輪轉(zhuǎn)算法(RR, Round-Robin)

時間片

分配處理機資源的基本時間單元q

算法思路

時間片結(jié)束時,按FCFS算法切換到下一個就緒進程

每隔(n–1)個時間片進程執(zhí)行一個時間片q


注:分配了一個基本時間單元q陆馁,每個進程每次在時間片q的時間內(nèi)執(zhí)行找颓,沒完成則繼續(xù)排隊尾,完成了結(jié)束叮贩。

時間片為20的RR算法示例

時間片輪轉(zhuǎn)算法中的時間片長度

RR算法開銷

額外的上下文切換

時間片太大(退化成FCFS)

等待時間過長

極限情況退化成FCFS

時間片太小

反應(yīng)迅速击狮,但產(chǎn)生大量上下文切換

大量上下文切換開銷影響到系統(tǒng)吞吐量

時間片長度選擇目標

選擇一個合適的時間片長度

經(jīng)驗規(guī)則:維持上下文切換開銷處于1%以內(nèi)

比較FCFS和RR

多級隊列調(diào)度算法(MQ)

■就緒隊列被劃分成多個獨立的子隊列

如:前臺(交互)、后臺(批處理)

■每個隊列擁有自己的調(diào)度策略

如:前臺–RR益老、后臺–FCFS

■隊列間的調(diào)度

·固定優(yōu)先級

先處理前臺彪蓬,然后處理后臺

可能導(dǎo)致饑餓

·時間片輪轉(zhuǎn)

每個隊列都得到一個確定的能夠調(diào)度其進程的CPU總時間

如:80%CPU時間用于前臺,20%CPU時間用于后臺

多級反饋隊列算法(MLFQ)

注:例:分三個執(zhí)行隊列捺萌,0隊列的時間片是8档冬,1隊列的時間片是24,2隊列采用FCFS。不超過8的進程有最高優(yōu)先級酷誓,接下來依次披坏。在隊列0中未執(zhí)行完的進程將會排至隊列1末尾,隊列1中未執(zhí)行完的排隊列2尾盐数。

■進程可在不同隊列間移動的多級隊列算法

時間片大小隨優(yōu)先級級別增加而增加(優(yōu)先級高時間片邪舴鳌)

如進程在當前的時間片沒有完成,則降到下一個優(yōu)先級(執(zhí)行時間越長玫氢,優(yōu)先級調(diào)的越低)

■MLFQ算法的特征

CPU密集型進程的優(yōu)先級下降很快帚屉,優(yōu)先級會逐步降低,并且時間片會分的很大

I/O密集型進程停留在高優(yōu)先級

公平共享調(diào)度(FSS, Fair Share Scheduling)

■FSS控制用戶對系統(tǒng)資源的訪問

一些用戶組比其他用戶組更重要(用戶分組琐旁,根據(jù)重要程度)

保證不重要的組無法壟斷資源

未使用的資源按比例分配

沒有達到資源使用率目標的組獲得更高的優(yōu)先級

傳統(tǒng)調(diào)度算法總結(jié)

先來先服務(wù)算法

不公平涮阔,平均等待時間較差

短進程優(yōu)先算法

不公平,平均周轉(zhuǎn)時間最小

需要精確預(yù)測計算時間

可能導(dǎo)致饑餓

最高響應(yīng)比優(yōu)先算法(主要考慮等待時間)

基于SPN調(diào)度

不可搶占

時間片輪轉(zhuǎn)算法

公平灰殴,但是平均等待時間較差敬特,交互性很好

多級反饋隊列

多種算法的集成

公平共享調(diào)度

公平是第一要素

概念:先到先服務(wù)〔FCFS)調(diào)度是最簡單的調(diào)度算法,但是它會讓短進程等待非常長的進程牺陶。最短作業(yè)優(yōu)先(SJF)調(diào)度可證明是最佳的伟阔,它提供了最短平均等待時間。實現(xiàn)SJF調(diào)度比較困難掰伸,因為預(yù)測下一個CPU區(qū)間的長度有難度皱炉。SJF算法是通用優(yōu)先級調(diào)度算法(將CPU簡單地分配給具有最高優(yōu)先級的進程)的特例。優(yōu)先級和SJF調(diào)度會產(chǎn)生饑餓狮鸭。老化技術(shù)(隨等待時間增加逐漸提高優(yōu)先級)可阻止饑餓合搅。

輪轉(zhuǎn)法(RR)調(diào)度對于分時(交互)系統(tǒng)更為合適。RR調(diào)度讓就緒隊列的第一個進程使用CPU的q個時間單元歧蕉,這里q是時間片灾部。在q時間單元之后,如果該進程還沒有釋放CPU惯退,那么它被搶占并放到就緒隊列的尾部赌髓。該算法是主要問題是選擇時間片。如果時間片太大催跪,那么RR調(diào)度就成了FCFS調(diào)度:

如果時間片太小锁蠕,那么因上下文切換而引起的調(diào)度開銷就過大。

FCFS算法是非搶占的懊蒸,而RR算法是搶占的荣倾。SJF和優(yōu)先級算法可以是搶占的,也可以是非搶占的骑丸。

多級隊列調(diào)度算法允許多個不同算法用于各種類型的進程舌仍。最為常用的模型包括使用RR調(diào)度的前臺交互隊列鳖孤,以及使用FCFS調(diào)度的后合批處理隊列。多級反饋隊列調(diào)度算法允許進程在隊列之間遷移抡笼。

15.5實時調(diào)度

實時操作系統(tǒng)

實時操作系統(tǒng)

正確性依賴于其時間功能兩方面的操作系統(tǒng)

實時操作系統(tǒng)的性能指標

時間約束的及時性(deadlines

速度和平均性能相對不重要

實時操作系統(tǒng)的特性

時間約束的可預(yù)測性

實時操作系統(tǒng)分類

強實時操作系統(tǒng)

要求在指定的時間內(nèi)必須完成重要的任務(wù)

弱實時操作系統(tǒng)

重要進程有高優(yōu)先級,要求盡量但非必須完成

實時任務(wù)

任務(wù)(工作單元)

一次計算黄鳍,一次文件讀取推姻,一次信息傳遞等等

任務(wù)屬性

完成任務(wù)所需要的資源

定時參數(shù)

周期實時任務(wù)

周期實時任務(wù):一系列相似的任務(wù)

任務(wù)有規(guī)律地重復(fù)

周期p =任務(wù)請求時間間隔(0

執(zhí)行時間e =最大執(zhí)行時間(0 < e < p)

使用率U = e/p

軟時限和硬時限

硬時限(Hard deadline)

錯過任務(wù)時限會導(dǎo)致災(zāi)難性或非常嚴重的后果

必須驗證,在最壞情況下能夠滿足時限

軟時限(Soft deadline)

通常能滿足任務(wù)時限

如有時不能滿足框沟,則降低要求

盡力保證滿足任務(wù)時限

可調(diào)度性

可調(diào)度表示一個實時操作系統(tǒng)能夠滿足任務(wù)時限要求

需要確定實時任務(wù)的執(zhí)行順序

靜態(tài)優(yōu)先級調(diào)度(事先把執(zhí)行順序排出來藏古,按這個順序調(diào)度,理論上保證能夠滿足要求)

動態(tài)優(yōu)先級調(diào)度(執(zhí)行過程中給出執(zhí)行順序)

實時調(diào)度

速率單調(diào)調(diào)度算法(RM, Rate Monotonic)(靜態(tài))

通過周期安排優(yōu)先級

周期越短優(yōu)先級越高

執(zhí)行周期最短的任務(wù)

最早截止時間優(yōu)先算法(EDF, Earliest Deadline First)動態(tài)

截止時間越早優(yōu)先級越高

執(zhí)行截止時間最早的任務(wù)

15.5(2)多處理器調(diào)度

多處理機調(diào)度的特征

多個處理機組成一個多處理機系統(tǒng)

處理機間可負載共享

對稱多處理器(SMP, Symmetric multiprocessing)調(diào)度

每個處理器運行自己的調(diào)度程序

調(diào)度程序?qū)蚕碣Y源的訪問需要進行同步

對稱多處理器(SMR)的進程分配

靜態(tài)進程分配

進程從開始到結(jié)束都被分配到一個固定的處理機上執(zhí)行

每個處理機有自己的就緒隊列

調(diào)度開銷小

各處理機可能忙閑不均

動態(tài)進程分配

進程在執(zhí)行中可分配到任意空閑處理機執(zhí)行

所有處理機共享一個公共的就緒隊列

調(diào)度開銷大

各處理機的負載是均衡的

概念:

處理器親和性:絕大多數(shù)SMP系統(tǒng)試圖避免將進程從一個處理器移至另一個處理器忍燥,而是努力使一個進程在同一個處理器上運行

負載平衡(load balancing):Push migration,pull mifration拧晕。

對稱多線程(SMT):通過提供多個物理處理器,SMP系統(tǒng)允許同時運行幾個線程梅垄。另一種方法是提供多個邏輯(而不是物理邏輯)處理器來實現(xiàn)厂捞。SMT是硬件而不是軟件提供的。

15.6優(yōu)先級反置(Priority Inversion)

操作系統(tǒng)中出現(xiàn)高優(yōu)先級進程長時間等待低優(yōu)先級進程所占用資源的現(xiàn)象

基于優(yōu)先級的可搶占的調(diào)度算法存在優(yōu)先級反置

注:已經(jīng)排好的執(zhí)行隊列中有T1队丝。T2兩個進程靡馁,T1的優(yōu)先級比T2低,這是一個處于中間的進程T3搶占T1机久,三個都要用的資源L1現(xiàn)在被T3占用臭墨,這就是優(yōu)先級反置。

解決方法:優(yōu)先級繼承(Priority Inheritance)膘盖,優(yōu)先級天花板協(xié)議(priority ceiling protocol)

優(yōu)先級繼承(Priority Inheritance)

■占用資源的低優(yōu)先級進程繼承申請資源的高優(yōu)先級進程的優(yōu)先級

只在占有資源的低優(yōu)先級進程被阻塞時,才提高占有資源進程的優(yōu)先級

優(yōu)先級天花板協(xié)議(priority ceiling protocol)

■占用資源進程的優(yōu)先級和所有可能申請該資源的進程的最高優(yōu)先級相同

不管是否發(fā)生等待,都提升占用資源進程的優(yōu)先級

優(yōu)先級高于系統(tǒng)中所有被鎖定的資源的優(yōu)先級上限胧弛,任務(wù)執(zhí)行臨界區(qū)時就不會被阻塞

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市侠畔,隨后出現(xiàn)的幾起案子结缚,更是在濱河造成了極大的恐慌,老刑警劉巖践图,帶你破解...
    沈念sama閱讀 221,635評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件掺冠,死亡現(xiàn)場離奇詭異,居然都是意外死亡码党,警方通過查閱死者的電腦和手機德崭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來揖盘,“玉大人眉厨,你說我怎么就攤上這事∈尴粒” “怎么了憾股?”我有些...
    開封第一講書人閱讀 168,083評論 0 360
  • 文/不壞的土叔 我叫張陵鹿蜀,是天一觀的道長。 經(jīng)常有香客問我服球,道長茴恰,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,640評論 1 296
  • 正文 為了忘掉前任斩熊,我火速辦了婚禮往枣,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘粉渠。我一直安慰自己蛋济,他們只是感情好啊楚,可當我...
    茶點故事閱讀 68,640評論 6 397
  • 文/花漫 我一把揭開白布志群。 她就那樣靜靜地躺著盯漂,像睡著了一般。 火紅的嫁衣襯著肌膚如雪去件。 梳的紋絲不亂的頭發(fā)上坡椒,一...
    開封第一講書人閱讀 52,262評論 1 308
  • 那天,我揣著相機與錄音箫攀,去河邊找鬼肠牲。 笑死,一個胖子當著我的面吹牛靴跛,可吹牛的內(nèi)容都是我干的缀雳。 我是一名探鬼主播,決...
    沈念sama閱讀 40,833評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼梢睛,長吁一口氣:“原來是場噩夢啊……” “哼肥印!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起绝葡,我...
    開封第一講書人閱讀 39,736評論 0 276
  • 序言:老撾萬榮一對情侶失蹤深碱,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后藏畅,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體敷硅,經(jīng)...
    沈念sama閱讀 46,280評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,369評論 3 340
  • 正文 我和宋清朗相戀三年愉阎,在試婚紗的時候發(fā)現(xiàn)自己被綠了绞蹦。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,503評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡榜旦,死狀恐怖幽七,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情溅呢,我是刑警寧澤澡屡,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布猿挚,位于F島的核電站,受9級特大地震影響驶鹉,放射性物質(zhì)發(fā)生泄漏绩蜻。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,870評論 3 333
  • 文/蒙蒙 一室埋、第九天 我趴在偏房一處隱蔽的房頂上張望辜羊。 院中可真熱鬧,春花似錦词顾、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至疹尾,卻和暖如春上忍,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背纳本。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評論 1 272
  • 我被黑心中介騙來泰國打工窍蓝, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人繁成。 一個月前我還...
    沈念sama閱讀 48,909評論 3 376
  • 正文 我出身青樓吓笙,卻偏偏與公主長得像,于是被迫代替她去往敵國和親巾腕。 傳聞我的和親對象是個殘疾皇子面睛,可洞房花燭夜當晚...
    茶點故事閱讀 45,512評論 2 359

推薦閱讀更多精彩內(nèi)容