相關(guān)基本概念
- CPU利用率 = CPU忙時 / 運(yùn)行總時間
引入多道程序設(shè)計(jì),讓多個進(jìn)程競爭使用資源栅葡,目的就是為了提高計(jì)算機(jī)的資源使用率茉兰,尤其是CPU利用率。
競爭使用資源欣簇,自然就存在了資源分配的問題规脸。 -
CPU區(qū)間 - I/O區(qū)間 的循環(huán)
所有進(jìn)程執(zhí)行都包括CPU操作+I/O操作坯约,都呈現(xiàn)出這樣的循環(huán)。CPU burst和I/O burst翻譯成CPU區(qū)間和IO區(qū)間莫鸭。
CPU IO burst cycle -
CPU調(diào)度器
調(diào)用scheduler的時機(jī)闹丐,通常有:
- 某一進(jìn)程從運(yùn)行狀態(tài)轉(zhuǎn)為等待狀態(tài)(如遇到了I/O請求,或調(diào)用wait等待一個子線程的終止)
- 某一進(jìn)程從運(yùn)行狀態(tài)切換到就緒狀態(tài)(出現(xiàn)中斷被因,或者被某個超高優(yōu)先級進(jìn)程搶占)上圖中少了這個箭頭
- 某一進(jìn)程從等待狀態(tài)轉(zhuǎn)為就緒狀態(tài)(IO之后回到就緒隊(duì)列卿拴,當(dāng)然也有可能這個進(jìn)程優(yōu)先級很高等待完了立刻得到CPU)
- 某一進(jìn)程終止
切換CPU的情形不止以上所述的四種情形。還有其他調(diào)用scheduler的情形有好多好多梨与。
不過所有情形可以有以下的分類:
- 非搶占式nonpreemptive
擁有CPU的進(jìn)程自愿交出CPU堕花,也就是上面的第一種(他需要新的資源,如IO)和第四種(結(jié)束了)情況粥鞋。 - 搶占式preemptive
如果非自愿交出CPU缘挽,就是搶占式,如第二種(另一個高優(yōu)先級來了被迫交出CPU)和第三種(進(jìn)到就緒隊(duì)列了他就想要資源呻粹,那對于正在擁有CPU的進(jìn)程就是被迫的)情形壕曼。
- CPU分配器Dispatcher
在Scheduler時候提到,調(diào)度器是先從就緒隊(duì)列中選取一個進(jìn)程等浊,接下來再把CPU分配給這個進(jìn)程腮郊。而第二步分配CPU的動作也可以由這里的dispatcher來完成,操作的內(nèi)容通常包括:- switching context
- kenel mode ——> user mode (CPU調(diào)度一定是在內(nèi)核態(tài)里面做的筹燕,用戶進(jìn)程執(zhí)行一定在用戶態(tài)里面轧飞,所以一定涉及mode的切換)
- 跳轉(zhuǎn)至用戶程序中PC寄存器所指示的位置
分配延遲:CPU分配器暫停前一進(jìn)程,啟動后一進(jìn)程所經(jīng)歷的時間庄萎。
- CPU調(diào)度器的追求指標(biāo)
- CPU利用率(CPU utilization)
- 吞吐率(Throughput)——單位時間內(nèi)完成執(zhí)行的進(jìn)程數(shù)
- 周轉(zhuǎn)時間(Turnaround time)——執(zhí)行某一進(jìn)程所耗用的CPU累積時間踪少,從進(jìn)程提交到進(jìn)程完成的所有時間段之和,包括等待存入內(nèi)存糠涛、在就緒隊(duì)列等待援奢、在CPU上執(zhí)行和IO執(zhí)行
- 等待時間(Waiting time)——某一進(jìn)程等待在就緒隊(duì)列里面的累計(jì)時間
- 響應(yīng)時間(Response time)——某一進(jìn)程從發(fā)出調(diào)度請求(比如鼠標(biāo)一動按了保存按鈕請求保存文件),到其得到CPU調(diào)度器響應(yīng)(頁面有反應(yīng)了忍捡,即文件保存成功或者失敿),其間所經(jīng)歷的時間
這章的研究問題就是砸脊,有限的一個CPU怎樣分配給就緒隊(duì)列里的這些進(jìn)程具篇,使得CPU利用率最高,吞吐量最高凌埂,周轉(zhuǎn)時間驱显、等待時間、響應(yīng)時間最短。