第五章CPU排程

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目前流行的雙核心四核心處理器對稱式多重處理smp每個處理器的地位相當都有自己所屬的cpu排班程式程式再到共用佇列中取得行程來執行同步問題大部分的smp系統採用專屬佇列smp共用佇列與專屬佇列示意圖cpu1排班程式cpun排班程式使用共用佇列的smpcpu1排班程式cpun排班程式使用專屬佇列的smp同步控制負載平衡loadbalance某些處理器可能會一直很忙碌並且還有一堆行程等待處理統最大的效能達成負載平衡的作法處理器偏好processoraffinity原因將某行程移到另一個處理器執行的時候必須注意負載平衡和處理器偏好兩者是互相違背的排班演算法的評估定量評估使用一個事先想像好的狀況模擬各個演算法的執行效率依照演算法的流程實際撰寫真實系統中的程式碼片段小結12所需碰到的排班程式包括長期中期和短期排班程式cpu短期排班演算法是討論的主題設計評估的準則有cpu使用率整體成效行程所需時間等待時間回應時間討論的cpu排班演算法包括先來先做最短工作優先優先權循環式多層佇硬性即時排班演算法為另一個其它常見的主題常見于即時系統ch14和要求服務品質qos的系統ch15
最短工作優先(shortest job first; SJF)排班演算法

或稱最短時間優先(shortest-next-cpu-burst; SNCB)演算法 下一次CPU執行週期時間最短的行程優先 預測行程的下一個CPU運算週期時間之方法
指數平均數(exponential
average)的方法
5
0 5 10 15 20
1
0 ……… 20
循環式與優先權排班的結合

目標
在循環式排班演算法中,加入優先權的性質
方法
在就緒佇列中放置多份代表某一行程的資料結
構,優先權越高的越多份 直接分配較多的時間分量給高優先權的行程
多層佇列(multilevel-queue)排班 演算法

將就緒佇列分成幾個分類較細的就緒佇列
(PCB) 代表執行緒的,是在就緒佇列中的執行緒控制 表(程式計數器、堆疊記憶體內容、堆疊指標 及訊號遮罩表 )

其它的考量點(演算法、準則等)相同, 因此我們以行程的CPU排班為討論主題
就緒佇列(ready queue)
存放準備就緒、等待執行(行程狀態為就 緒)的行程的資料結構 CPU排班演算法對此資料結構作運算 慣稱

小結(2/2)
多處理器系統的排班考量,包括對稱式多 重處理和非對稱式多重處理、共用佇列與 專用佇列、處理器偏好以及負載平衡等 硬性即時排班演算法為另一個其它常見的 主題,常見於即時系統(ch14)和要求服 務品質(QoS)的系統(ch15) 評估各種排班演算法效率的方法,通常包 括定量評估、模擬與實作
準備就緒
執行結束
觸發
等待某பைடு நூலகம்事件
等待的事件發生 CPU時間分量結束
CPU排班程式
就緒佇列
選好的下個 執行行程
分派程式
本文切換
行程開始執行
排班的準則

目的
設計、評估一個排班演算法的依據
項目
CPU使用率(CPU
utilization) 整體成效(throughput) 行程所需時間(turnaround time) 等待時間(waiting time) 回應時間(response time)

長期排班程式
管理所有要求執行的程式進入系統中,並讓執
行結束的行程離開系統 控制多工作業系統內的多工程度 進入系統的演算法

先進先出、優先權
排班程式(2/2)

短期排班程式(CPU排班程式)
從所有準備就緒的行程中選出一個來使用CPU 使用最頻繁、對效能影響最大,為本章主題

中期排班程式
使用專屬佇列的SMP
負載平衡(load balance)

狀況
某些處理器可能會一直很忙碌,並且還有一堆
行程等待處理 而某些處理器卻閒置著

目的
讓每個處理器都能維持忙碌的狀態,以提高系
統最大的效能
達成負載平衡的作法

拉遷移
閒置的處理器主動到忙碌的處理器之就緒佇列
中,「拉」一或多個等待執行的行程回來執行

某個行程會「偏好」於某個處理器執行, 避免浪費系統資源
處理器偏好的分類

軟性偏好
作業系統會儘量讓行程待在同一個處理器執行,
但是不保證一定不會被移到別的處理器

硬性偏好
作業系統允許行程設定成它只會在某個處理器
執行,並保證不會被移到別的處理器

注意
負載平衡和處理器偏好兩者是互相違背的
排班演算法的評估
作業系統
第五章 CPU排班
教學目標
概觀 排班準則 排班演算法 多處理器的排班 排班演算法的評估

概觀
排班程式 就緒佇列 行程執行模式 CPU排班啟動的時機 分派程式

排班程式(1/2)

行程在系統中,從要開始執行到執行結束 所需碰到的排班程式
長期、中期和短期排班程式
分散到各個處理器專屬的佇列中,每個處理器
的排班程式到各專屬的佇列中挑取行程來執行 大部分的SMP系統採用專屬佇列
SMP共用佇列與專屬佇列示意圖
就緒佇列
就緒佇列
就緒佇列
同步控制
排班程式 排班程式 排班程式 排班程式 CPU[n]
CPU[1] ●●
CPU[n]
CPU[1] ●●
使用共用佇列的SMP

定量評估
使用一個事先想像好的狀況,模擬各個演算法
的執行效率


模擬
寫模擬程式,求得實際的演算法數據
實作
依照演算法的流程,實際撰寫真實系統中的程
式碼片段
小結(1/2)
行程在系統中,從要開始執行到執行結束 所需碰到的排班程式,包括長期、中期和 短期排班程式 CPU(短期)排班演算法是討論的主題, 設計、評估的準則有CPU使用率、整體成 效、行程所需時間、等待時間、回應時間 討論的CPU排班演算法,包括先來先做、 最短工作優先、優先權、循環式、多層佇 列以及多層回饋佇列
可搶先式 v.s. 不可搶先式

不可搶先式(non-preemptive)
正在執行中的行程,只能主動地放棄CPU執行
權,例如:行程結束、等待事件、…. 優點:較簡單、行程所需時間(turnaround time)短

可搶先式(preemptive)
正在執行中的行程,任何時候都可能被迫放棄

依排班演算法和實作的不同,可能為佇列
(queue)、堆疊(stack)、堆積(heap)等, 不見得一定是佇列(queue)型態 一般以就緒佇列為其慣稱
行程執行模式
時間行進方向
指令 CPU週期
等待I/O I/O週期
指令 CPU週期
等待I/O I/O週期
指令 CPU週期

CPU排班就是,合理分配CPU執行權給每 個行程的CPU週期
CPU使用效率
v.s.整體系統效能降低(記憶體 空間不足或行程替換過於頻繁) 為了取得平衡,會暫時讓某些程式離開記憶體, 並從就緒狀態移到等待狀態 通常屬於記憶體管理系統(ref. ch8, ch9)
排班程式 v.s. 行程狀態圖
行程 v.s. 執行緒 的CPU排班

相異
代表行程的,是在就緒佇列中的行程控制表
將此行程重新放到就緒佇列的末端
將CPU的使用權給就緒佇列開頭的行程
循環式排班演算法示意圖
時間分量1 行程1 時間分量2 行程2 ●●● ●●● 時間分量n 行程n
遞減
執行
計時器 CPU
循環式排班演算法的範例
到達 所需的CPU執 時間 行週期時間 行程A 0.0 8毫秒 行程B 1.5 3毫秒 行程C 5.0 6毫秒 行程D 5.5 3毫秒
CPU執行權給別的行程 優點:等待時間短、回應時間短
先來先做(first come first served; FCFS)排班演算法
較早來到作業系統內部的行程,會較早取 得CPU的資源來執行其運算 佇列(queue) 不可搶先 優點

原理簡單、容易懂、也容易實作

缺點
平均等待時間長(不適合分時系統 回應時間長(不適合交談式系統)
應用範例

科學計算
CPU使用率高的演算法
交談式系統
回應時間短的演算法
一般狀況
平衡、兼顧各項準則
排班演算法

CPU排班的核心問題
也可為其它領域(e.g.
磁碟排班、I/O排班、通
訊封包排班等)參考

介紹的內容
先來先做 最短工作優先 優先權 循環式 多層佇列 多層回饋佇列
PA 0 3 PB 6 PC 9 PD 12 PA 15 PC 18 PA 20
時間分量為3,平均等待時間: (12+1.5+7+3.5)/4=6毫秒
循環式演算法的問題—即時反應與 整體效能的平衡之考量
一段長度為 20 的時間 時間分量 本文切換的 大小 發生次數
40
0 20
0
1 4 19
12
0 12 20
中優先權行程
中優先權就緒佇列
中優先權行程
低優先權行程
低優先權就緒佇列
低優先權行程
多層回饋佇列(multilevelfeedback-queue)排班演算法
多層佇列+允許行程在不同的就緒佇列中 移動 解決行程飢餓問題

低優先權佇列的行程太久沒被執行,就移往較
高優先權佇列

範例
Windows
同質
每個處理器本身可以做的工作性質都是相同的
例如:目前流行的雙核心、四核心處理器
多處理器系統的分類—工作性質

非對稱式多重處理
主從式的模式 運作單純、整體效能比較差 異質多處理器系統只能採用本模式

對稱式多重處理(SMP)
每個處理器的地位相當,都有自己所屬的CPU
排班程式

可搶先 v.s 不可搶先(最短剩餘時間優先 ) 整體的行程平均等待時間(average waiting time) 最小
最短工作優先的範例
到達 時間 行程A 行程B 行程C 行程D 0.0 1.5 5.0 5.5 所需的CPU執 行週期時間 8毫秒 3毫秒 6毫秒 3毫秒
PA 0 1.5 PB PA 4.5 5.5 PD 8.5 PA 14 PC 20

飢餓

可被用來模擬其他種類的排班演算法
例如:先來先做、後來先執行、最短工作優先
循環式(round-robin;RR)排班演 算法
為每個行程分配一段時間分量(time quantum / time slice,通常是10~100毫秒 之間) 當執行中的行程用完其時間分量時

強制取得其CPU使用權
XP和Linux對一般等級的行程所設定 的排班演算法
多層回饋佇列排班演算法示意圖
就緒佇列群 高優先權行程 高優先權就緒佇列 高優先權行程
中優先權行程
中優先權就緒佇列
中優先權行程
低優先權行程
低優先權就緒佇列
低優先權行程
多處理器系統的排班
概觀 分類

硬體特性 工作性質
共用佇列與專屬佇列 負載平衡 處理器偏好
校長、教授、助教、學生工作的就緒佇列
前景行程、背景行程就緒佇列 高、中、低優先權就緒佇列


可對各個就緒佇列採用不同的排班演算法
例如:對前景行程用循環式、背景行程用先來先做
優點
因應各性質的行程、彈性高
缺點
行程飢餓(starvation)
多層佇列排班演算法示意圖
就緒佇列群 高優先權行程 高優先權就緒佇列 高優先權行程
CPU排班啟動的時機
準備就緒 執行結束 等待某個事件 等待的事件發生 CPU時間分量結束

閒置行程(idle process)

目的
若目前沒有任何行程能夠執行,CPU排班程式
就挑它來執行,避免不可預期的結果

工作內容
讓CPU空轉 其它工作(啟動省電模式、記憶體回收、….)

多處理器系統排班之概觀

優點
理論上,多一個處理器就可以同時多執行一項
工作,使系統的執行效能得到加倍提昇

挑戰
所面對的問題遠比單處理器複雜
例如:共用資源的存取、各處理器的工作負荷
不平均
多處理器系統的分類—硬體特性

異質
每個處理器本身可以做的工作就不相同 例如:MCU+DSP

目前大部分的現代作業系統都有支援SMP, 也是我們討論的主題
SMP系統排班的主要考量
共用佇列與專屬佇列 負載平衡 處理器偏好

共用佇列與專屬佇列
所有就緒行程的佇列安排方式: 共用佇列

全放到一個共用的佇列中,每個處理器的排班
程式再到共用佇列中取得行程來執行 同步問題

專屬佇列
PA 0 8
PB 11
PD 14
PC 20
不可搶先,平均等待時間: (0+6.5+9+5.5)/4=5.25毫秒
可搶先,平均等待時間: (6+0+9+0)/4=3.75毫秒
優先權(priority)排班演算法
為每個行程指定它的優先權 選取下一個要被執行的行程時,是以當時 具有最高優先權的行程為第一優先 可搶先 v.s.不可搶先 潛在問題

先來先做演算法的範例
PA PB 41 43 PC 44
所需的CPU執行 週期時間 行程A 行程B 行程C 41 毫秒 2毫秒 1毫秒
0
PA、PB、PC的到達順序 平均等待時間:(0+41+43)/3=28毫秒
PC 0 1
PB 3
PA 44
Pc、PB、PA的到達順序 平均等待時間:(0+1+3)/3=1.33毫秒

推遷移
一特定行程,週期性地檢查每個處理器的負載
情況 發現有負載不平衡時,從負載過重的處理器那 「推」幾個行程給閒置中或負載過輕的處理器

兩種作法可並存
處理器偏好(processor affinity)

原因
將某行程移到另一個處理器執行的時候,必須
把已經放在原處理器的記憶體和各層快取中的 所有資料作廢,另外再搬移到新處理器的記憶 體和各層的快取裡 很耗系統時間

範例
Linux的Init行程
Windows的System
Idle Process
分派程式(dispatcher)

目的
將CPU的執行權交給由CPU排班程式挑出來的
行程

步驟
本文切換 由核心模式切回使用者模式 跳到該行程接下來要執行的程式碼,讓行程重
新啟動
CPU排班流程示意圖
相关文档
最新文档