【操作系统】进程调度(2b):STCF(最短完成时间优先) 算法 原理与实践
0 前言
接上一篇文章:進(jìn)程調(diào)度(2a):SJF(短任務(wù)優(yōu)先) 算法 原理與實(shí)踐
1 前提鋪墊
與上一篇同。
2 STCF 原理
STCF(Shortest Time-to-Completion First)最短完成時(shí)間優(yōu)先。
2.1 算法
還記得上一個(gè)算法SJF嗎?它是非搶占式的,只能傻傻地等著長(zhǎng)任務(wù)A完成,這顯然是“懦弱”的,并且降低了系統(tǒng)的效率,因此,讓我們給它添加一個(gè)搶占功能吧!
搶占什么呢?當(dāng)然是A了,還是用上次的例子
- A:100
- B:10
- C:20
A在0時(shí)刻到達(dá)并執(zhí)行,B和C在10時(shí)刻到達(dá)。之前B和C只能等著A結(jié)束執(zhí)行再按照B、C的順序執(zhí)行,現(xiàn)在,我們有搶占功能了!
在時(shí)刻10的時(shí)候,Scheduler(調(diào)度器)發(fā)現(xiàn)B和C的執(zhí)行時(shí)間比A短,那么好,A你就不要再執(zhí)行了,讓B先來(lái)吧! 這里,我們也使用到了上下文切換機(jī)制,先保存了A執(zhí)行的狀態(tài),等B、C執(zhí)行完,再讓A繼續(xù)執(zhí)行。
一個(gè)問(wèn)題:究竟是識(shí)別A剩余執(zhí)行時(shí)間,還是全部執(zhí)行時(shí)間,又或者什么呢?A、B和C的執(zhí)行時(shí)間,系統(tǒng)又怎樣得知?這些我們以后再談,并且這設(shè)計(jì)到了具體實(shí)現(xiàn)的層次,現(xiàn)在,我們的假設(shè)還是運(yùn)行時(shí)間是已知的,并且是在抽象層次在談?wù)摗?/p>
這樣,看起來(lái)就比之前的SJF棒多了!起碼它學(xué)會(huì)了“搶車位”。
現(xiàn)在,Average Turnaround Time = (10 + 30 + 130)/ 3 = 56.67,要知道,之前可是110。
不過(guò),這個(gè)算法也會(huì)有一些問(wèn)題,我們下面說(shuō)一下。
2.2 缺點(diǎn):長(zhǎng)任務(wù)“饑餓”
試想一下,對(duì)于一個(gè)長(zhǎng)任務(wù),如果有遠(yuǎn)遠(yuǎn)不斷地短任務(wù)進(jìn)入,那么這個(gè)長(zhǎng)任務(wù)可能永遠(yuǎn)不會(huì)被執(zhí)行了……(它也太慘了……)
不僅如此,對(duì)于一個(gè)交互型程序來(lái)說(shuō),與用戶交互的響應(yīng)時(shí)間(我們下一講說(shuō)這個(gè)指標(biāo),簡(jiǎn)單來(lái)說(shuō),就是用戶發(fā)送命令,到看見(jiàn)屏幕產(chǎn)生變化的時(shí)間,這應(yīng)該很快才對(duì))就會(huì)非常長(zhǎng),想象一下,你敲擊鍵盤(pán)的字母A后,等待10s才看見(jiàn)屏幕上顯示了A……這簡(jiǎn)直讓人發(fā)瘋!
說(shuō)明:在原書(shū)中沒(méi)有給出STCF算法的模擬,因此暫時(shí)沒(méi)有實(shí)踐內(nèi)容,不過(guò)因?yàn)樵撍惴ㄅcSJF的區(qū)別就在于搶占,因此比較容易理解。
2.3 關(guān)注點(diǎn):順序執(zhí)行的打破
我們之前看到的進(jìn)程,都是從一開(kāi)始執(zhí)行,就一直執(zhí)行到完成才停止,這個(gè)過(guò)程并不需要上下文切換機(jī)制(前面的篇章好像寫(xiě)錯(cuò)了……),而這一次,我們看到了任務(wù)A被分成了兩段來(lái)執(zhí)行,這時(shí)候就使用到了上下文切換機(jī)制了,被打斷的A,必須要保存現(xiàn)場(chǎng),然后下一次被執(zhí)行的時(shí)候,恢復(fù)現(xiàn)場(chǎng)繼續(xù)執(zhí)行。
這也是我們第一次見(jiàn)到,多個(gè)任務(wù)不是順序執(zhí)行的,而是切換執(zhí)行的,下一篇輪轉(zhuǎn)算法,你將更清晰地體會(huì)到這一點(diǎn)!
3 核心思想
STCF與SJF本質(zhì)是一樣的,區(qū)別就是,前者是搶占式,后者是非搶占式的。
核心思想就是,讓運(yùn)行時(shí)間短的任務(wù)先執(zhí)行。
這樣做的缺點(diǎn)也分析過(guò),長(zhǎng)任務(wù)可能一直得不到執(zhí)行,后續(xù)我們會(huì)解決這個(gè)問(wèn)題的。
4 預(yù)告:進(jìn)程調(diào)度(3):RR(輪轉(zhuǎn)) 算法 原理與實(shí)踐
我們接下來(lái)會(huì)使用輪轉(zhuǎn)算法解決交互式程序的響應(yīng)時(shí)間問(wèn)題。這樣能讓用戶獲得很好的體驗(yàn)。
下一篇鏈接:RR(輪轉(zhuǎn)) 算法 原理與實(shí)踐
總結(jié)
以上是生活随笔為你收集整理的【操作系统】进程调度(2b):STCF(最短完成时间优先) 算法 原理与实践的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 成都欢乐谷最高的过山车叫什么
- 下一篇: java信息管理系统总结_java实现科