2022-02-28 Windows CPU調(diào)度算法(FCFS)

與進(jìn)程有關(guān)的時(shí)間##

與過(guò)程有關(guān)的各種時(shí)間梆暖,如下圖所示 -


cbac17f94f223a534e2a1e7624abb998_20190701114144_21467.png
  1. 到達(dá)時(shí)間
    進(jìn)程進(jìn)入就緒隊(duì)列的時(shí)間稱為到達(dá)時(shí)間。
  2. 突發(fā)時(shí)間
    CPU執(zhí)行整個(gè)過(guò)程所需的總時(shí)間稱為突發(fā)時(shí)間疆前。 這不包括等待時(shí)間货徙。 即使在執(zhí)行之前計(jì)算一個(gè)過(guò)程的執(zhí)行時(shí)間也是令人困惑的区拳,因此基于突發(fā)時(shí)間的調(diào)度問(wèn)題無(wú)法在現(xiàn)實(shí)中實(shí)現(xiàn)浅蚪。
  3. 完成時(shí)間進(jìn)程進(jìn)入完成狀態(tài)的時(shí)間或進(jìn)程完成其執(zhí)行的時(shí)間稱為完成時(shí)間。
  4. 周轉(zhuǎn)時(shí)間該過(guò)程從抵達(dá)到完成所花費(fèi)的時(shí)間總量稱為周轉(zhuǎn)時(shí)間烫罩。
  5. 等待時(shí)間進(jìn)程等待CPU分配的總時(shí)間稱為等待時(shí)間惜傲。
  6. 響應(yīng)時(shí)間到達(dá)時(shí)間和進(jìn)程首次獲取CPU的時(shí)間之間的差異稱為響應(yīng)時(shí)間。

操作系統(tǒng)CPU調(diào)度##

在像MS DOS這樣的單編程系統(tǒng)中贝攒,當(dāng)進(jìn)程等待任何I/O操作完成時(shí)盗誊,CPU仍然是空閑的。 這是一個(gè)開(kāi)銷(xiāo)隘弊,因?yàn)樗速M(fèi)時(shí)間并導(dǎo)致饑餓問(wèn)題哈踱。 但是,在多程序系統(tǒng)中梨熙,CPU在進(jìn)程的等待時(shí)間內(nèi)不會(huì)保持空閑狀態(tài)开镣,而是開(kāi)始執(zhí)行其他進(jìn)程。 操作系統(tǒng)必須定義CPU將被給予哪個(gè)進(jìn)程咽扇。

在多程序系統(tǒng)中邪财,操作系統(tǒng)調(diào)度CPU上的進(jìn)程以獲得最大的利用率,此過(guò)程稱為CPU調(diào)度质欲。 操作系統(tǒng)使用各種調(diào)度算法來(lái)調(diào)度過(guò)程卧蜓。

這是短期調(diào)度程序的一項(xiàng)任務(wù),用于調(diào)度CPU以查找作業(yè)池中存在的進(jìn)程數(shù)量把敞。 每當(dāng)運(yùn)行進(jìn)程請(qǐng)求某個(gè)I/O操作時(shí)弥奸,短期調(diào)度程序就會(huì)保存進(jìn)程的當(dāng)前上下文(也稱為PCB)并將其狀態(tài)從運(yùn)行狀態(tài)更改為等待狀態(tài)。 在此期間奋早,進(jìn)程處于等待狀態(tài); 短期調(diào)度程序從就緒隊(duì)列中選擇另一個(gè)進(jìn)程并將CPU分配給此進(jìn)程盛霎。 這個(gè)過(guò)程被稱為上下文切換。

進(jìn)程控制塊中保存了什么耽装?

操作系統(tǒng)在進(jìn)程的生命周期中維護(hù)一個(gè)進(jìn)程控制塊愤炸。 進(jìn)程終止或終止時(shí),進(jìn)程控制塊將被刪除掉奄。 有以下信息保存在過(guò)程控制塊中规个,并隨過(guò)程狀態(tài)而變化。

5b673a361d3ad12f48eab9136819faef_20190701114144_80644.png

為什么需要調(diào)度姓建?
在多道程序中诞仓,如果長(zhǎng)期調(diào)度程序選擇更多的I/O綁定進(jìn)程,那么大多數(shù)時(shí)候CPU仍然是空閑的速兔。 操作系統(tǒng)的任務(wù)是優(yōu)化資源的利用墅拭。
如果大多數(shù)正在運(yùn)行的進(jìn)程將其狀態(tài)從運(yùn)行狀態(tài)更改為等待狀態(tài),那么系統(tǒng)中可能始終存在死鎖涣狗。 因此谍婉,為了減少這種開(kāi)銷(xiāo)舒憾,操作系統(tǒng)需要調(diào)度作業(yè)以獲得CPU的最佳利用率并避免死鎖的可能性。


操作系統(tǒng)調(diào)度算法###

操作系統(tǒng)使用各種算法來(lái)有效地調(diào)度處理器上的進(jìn)程穗熬。
調(diào)度算法的目的

最大CPU利用率
公平分配CPU
最大吞吐量
最短周轉(zhuǎn)時(shí)間
最短的等待時(shí)間
最短響應(yīng)時(shí)間

有以下算法可用于計(jì)劃作業(yè)镀迂。
1. 先來(lái)先服務(wù)
這是最簡(jiǎn)單的算法。 最短到達(dá)時(shí)間的過(guò)程將首先獲得CPU唤蔗。 到達(dá)時(shí)間越少招拙,進(jìn)程得到CPU的速度越快。 這是非搶先式的調(diào)度措译。
2. 輪循
在循環(huán)調(diào)度算法中别凤,操作系統(tǒng)定義了一個(gè)時(shí)間片(片)。 所有的進(jìn)程將以循環(huán)方式執(zhí)行领虹。 每個(gè)進(jìn)程都會(huì)獲得CPU一小段時(shí)間(稱為時(shí)間片)规哪,然后返回就緒隊(duì)列等待下一個(gè)回合。 這是一種搶先式調(diào)度塌衰。
3. 最短作業(yè)第一具有最短爆發(fā)時(shí)間的作業(yè)將首先獲得CPU诉稍。 突發(fā)時(shí)間越短,進(jìn)程得到CPU的速度越快
這是非搶先式的調(diào)度最疆。
4. 首先剩余時(shí)間最短這是SJF的搶先形式杯巨。 在該算法中,操作系統(tǒng)根據(jù)執(zhí)行的剩余時(shí)間安排作業(yè)
5. 基于優(yōu)先級(jí)的調(diào)度
在這個(gè)算法中努酸,優(yōu)先級(jí)將被分配給每個(gè)進(jìn)程服爷。 優(yōu)先級(jí)越高,進(jìn)程得到CPU的速度越快获诈。 如果兩個(gè)進(jìn)程的優(yōu)先級(jí)相同仍源,則會(huì)根據(jù)他們的到達(dá)時(shí)間進(jìn)行安排。
6. 最高響應(yīng)率下一個(gè)
在這種調(diào)度算法中舔涎,下一步將調(diào)度響應(yīng)比率最高的進(jìn)程笼踩。 這減少了系統(tǒng)中的饑餓。


操作系統(tǒng)FCFS調(diào)度####

先來(lái)先服務(wù)(FCFS)調(diào)度算法根據(jù)其到達(dá)時(shí)間簡(jiǎn)單地調(diào)度作業(yè)亡嫌。 就緒隊(duì)列中第一個(gè)工作將首先獲得CPU嚎于。 工作到達(dá)時(shí)間越少,工作得到的CPU就越快挟冠。 如果第一個(gè)進(jìn)程的突發(fā)時(shí)間是所有作業(yè)中最長(zhǎng)的于购,則FCFS調(diào)度可能會(huì)導(dǎo)致饑餓問(wèn)題。
FCFS的優(yōu)勢(shì)

簡(jiǎn)單
容易
先到先得

FCFS的缺點(diǎn)

調(diào)度方法是非搶先式的圃郊,該進(jìn)程將運(yùn)行到完成价涝。
由于算法的非搶先性,可能會(huì)出現(xiàn)饑餓問(wèn)題持舆。
盡管實(shí)現(xiàn)起來(lái)很容易色瘩,但由于平均等待時(shí)間比其他調(diào)度算法更高,因此性能較差逸寓。

示例
我們來(lái)看一個(gè)FCFS調(diào)度算法的例子居兆。 在下面的時(shí)間表中,有5個(gè)進(jìn)程的進(jìn)程ID為P0竹伸,P1泥栖,P2,P3和P4勋篓。 P0到達(dá)時(shí)間0吧享,P1在時(shí)間1,P2在時(shí)間2譬嚣,P3到達(dá)時(shí)間3钢颂,處理P4在時(shí)間4到達(dá)就緒隊(duì)列。 下表給出了過(guò)程及其各自的到達(dá)時(shí)間和爆發(fā)時(shí)間拜银。
周轉(zhuǎn)時(shí)間和等待時(shí)間通過(guò)使用以下公式計(jì)算殊鞭。

    Waiting Time = Turnaround time - Burst Time

平均等待時(shí)間通過(guò)將所有過(guò)程的各個(gè)等待時(shí)間相加并且將總和除以過(guò)程的總數(shù)來(lái)確定。

進(jìn)程ID 到達(dá)時(shí)間 突發(fā)時(shí)間 完成時(shí)間 轉(zhuǎn)換時(shí)間 等待時(shí)間
0 0 2 2 2 0
1 1 6 8 7 1
2 2 4 12 8 4
3 3 9 21 18 9
4 4 12 33 19 17

平均等待時(shí)間= 31/5
平均等待時(shí)間= 31/5


45352a3242979341c22ee5a0f50c9741_20190701114146_56730.png

操作系統(tǒng)FCFS護(hù)航效果###

如果第一個(gè)作業(yè)的爆發(fā)時(shí)間是最高的尼桶,F(xiàn)CFS可能會(huì)受到隊(duì)列影響操灿。 就像在現(xiàn)實(shí)生活中一樣,如果隊(duì)列在路上經(jīng)過(guò)泵督,那么其他人可能會(huì)被堵塞趾盐,直到完全通過(guò)。 這也可以在操作系統(tǒng)中進(jìn)行模擬小腊。
如果CPU在就緒隊(duì)列的前端獲得較高突發(fā)時(shí)間的進(jìn)程谤碳,則較低突發(fā)時(shí)間的進(jìn)程可能被阻塞,這意味著如果執(zhí)行中的作業(yè)具有非常高的突發(fā)時(shí)間溢豆,則它們可能永遠(yuǎn)不會(huì)獲得CPU蜒简。 這被稱為隊(duì)列效應(yīng)或饑餓。


12f10373984511cf180f93f4e7f05572_20190701114146_36784.png

示例
在這個(gè)例子中漩仙,我們有3個(gè)進(jìn)程被命名為P1搓茬,P2和P3。 進(jìn)程P1的暴發(fā)時(shí)間最高队他。
下表中的周轉(zhuǎn)時(shí)間和等待時(shí)間通過(guò)公式計(jì)算卷仑,

Turn Around Time = Completion Time - Arrival Time  
    Waiting Time = Turn Around Time - Burst Time

在第一種情況下,雖然流程P1到達(dá)隊(duì)列中的第一個(gè)麸折, 該過(guò)程的爆發(fā)時(shí)間是最高的锡凝。 由于調(diào)度算法,我們所遵循的是FCFS垢啼,因此CPU將首先執(zhí)行Process P1窜锯。
在這個(gè)時(shí)間表中张肾,系統(tǒng)的平均等待時(shí)間將非常高。 這是因?yàn)檐?chē)隊(duì)的影響锚扎。 其他進(jìn)程P2吞瞪,P3必須等待40個(gè)單位時(shí)間,盡管他們的爆發(fā)時(shí)間非常短驾孔。 這個(gè)時(shí)間表遭受饑餓芍秆。

進(jìn)程ID 到達(dá)時(shí)間 突發(fā)時(shí)間 完成時(shí)間 轉(zhuǎn)換時(shí)間 等待時(shí)間
1 0 40 40 40 0
2 1 3 43 42 39
2 2 4 12 8 4
3 3 9 21 18 9
3 1 1 44 43 42
7d9ae0555bbca8da5701245f2a699e9a_20190701114146_43311.png

平均等待時(shí)間= 81/3
在第二種情況下,如果進(jìn)程P1本來(lái)就已經(jīng)到達(dá)隊(duì)列的最后翠勉,而其他過(guò)程P2和P3早于那么饑餓問(wèn)題就不存在了妖啥。
以下示例顯示了這兩種情況的等待時(shí)間的偏差。 雖然時(shí)間表的長(zhǎng)度是相同的对碌,即44個(gè)單位荆虱,但是在這個(gè)時(shí)間表中等待時(shí)間將會(huì)減少

操作系統(tǒng)FCFS與開(kāi)銷(xiāo)###

在上面的例子中,我們假設(shè)所有的進(jìn)程只是CPU綁定進(jìn)程俭缓。但是也忽略了上下文切換時(shí)間克伊。
然而,如果考慮調(diào)度器在上下文切換中花費(fèi)的時(shí)間华坦,則系統(tǒng)的平均等待時(shí)間將增加愿吹,這也影響系統(tǒng)的效率。
上下文切換始終是開(kāi)銷(xiāo)惜姐。以下示例描述如果在系統(tǒng)中考慮上下文切換時(shí)間犁跪,效率將受到影響。
示例
在下面的例子中歹袁,假設(shè)有五個(gè)進(jìn)程:P1坷衍,P2,P3条舔,P4枫耳,P5和P6。 他們的到達(dá)時(shí)間和爆發(fā)時(shí)間如下孟抗。

進(jìn)程ID 到達(dá)時(shí)間 突發(fā)時(shí)間
1 0 3
2 1 2
3 2 1
4 3 4
5 4 5
6 5 2

如果系統(tǒng)的上下文切換時(shí)間為1個(gè)單位迁杨,那么系統(tǒng)的甘特圖將按如下準(zhǔn)備。
給定δ= 1個(gè)單位;


a6e6a26e659180e396c60ce78409c046_20190701114146_99646.png

在執(zhí)行每個(gè)進(jìn)程之后凄硼,系統(tǒng)將花費(fèi)額外的1個(gè)單位時(shí)間(開(kāi)銷(xiāo))來(lái)安排下一個(gè)過(guò)程铅协。

Inefficiency= (6/23) X 100 %   
            Efficiency? = (1-6/23) X 100 %
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市摊沉,隨后出現(xiàn)的幾起案子狐史,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,682評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件骏全,死亡現(xiàn)場(chǎng)離奇詭異苍柏,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)吟温,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)序仙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)突颊,“玉大人鲁豪,你說(shuō)我怎么就攤上這事÷赏海” “怎么了爬橡?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,083評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)棒动。 經(jīng)常有香客問(wèn)我糙申,道長(zhǎng),這世上最難降的妖魔是什么船惨? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,763評(píng)論 1 295
  • 正文 為了忘掉前任柜裸,我火速辦了婚禮,結(jié)果婚禮上粱锐,老公的妹妹穿的比我還像新娘疙挺。我一直安慰自己,他們只是感情好怜浅,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,785評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布铐然。 她就那樣靜靜地躺著,像睡著了一般恶座。 火紅的嫁衣襯著肌膚如雪搀暑。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,624評(píng)論 1 305
  • 那天跨琳,我揣著相機(jī)與錄音自点,去河邊找鬼。 笑死脉让,一個(gè)胖子當(dāng)著我的面吹牛桂敛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播侠鳄,決...
    沈念sama閱讀 40,358評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼埠啃,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了伟恶?” 一聲冷哼從身側(cè)響起碴开,我...
    開(kāi)封第一講書(shū)人閱讀 39,261評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后潦牛,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體眶掌,經(jīng)...
    沈念sama閱讀 45,722評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年巴碗,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了朴爬。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,030評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡橡淆,死狀恐怖召噩,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情逸爵,我是刑警寧澤具滴,帶...
    沈念sama閱讀 35,737評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站师倔,受9級(jí)特大地震影響构韵,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜趋艘,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,360評(píng)論 3 330
  • 文/蒙蒙 一疲恢、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧瓷胧,春花似錦显拳、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,941評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至矛绘,卻和暖如春耍休,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背货矮。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,057評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工羊精, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人囚玫。 一個(gè)月前我還...
    沈念sama閱讀 48,237評(píng)論 3 371
  • 正文 我出身青樓喧锦,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親抓督。 傳聞我的和親對(duì)象是個(gè)殘疾皇子燃少,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,976評(píng)論 2 355

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

  • 內(nèi)容大綱 1阵具、處理機(jī)調(diào)度基本概念碍遍、調(diào)度方式 2、典型調(diào)度算法及基本準(zhǔn)則 3阳液、進(jìn)程同步基本概念 4球拦、進(jìn)程同步實(shí)現(xiàn)方法...
    看看你的肥臉閱讀 2,166評(píng)論 0 1
  • 進(jìn)程的調(diào)度方式有兩種:非剝奪調(diào)度方式(非搶占式)和剝奪調(diào)度方式(搶占方式)鹰溜。非搶占式:只允許進(jìn)程主動(dòng)放棄處理機(jī)虽填。如...
    HRADPX閱讀 14,787評(píng)論 1 8
  • 1.相關(guān)定義 1.1 進(jìn)程 進(jìn)程是一個(gè)具有一定獨(dú)立功能的程序在一個(gè)數(shù)據(jù)集上的一次動(dòng)態(tài)執(zhí)行的過(guò)程,是操作系統(tǒng)進(jìn)行資源...
    賈_莫蘭特閱讀 770評(píng)論 0 0
  • 在操作系統(tǒng)中存在多種調(diào)度算法奉狈,其中有的調(diào)度算法適用于作業(yè)調(diào)度卤唉,有的調(diào)度算法適用于進(jìn)程調(diào)度涩惑,有的調(diào)度算法兩者都適用仁期。...
    saviochen閱讀 1,913評(píng)論 0 9
  • 第三章、處理機(jī)調(diào)度與死鎖 在多道程序環(huán)境下竭恬,內(nèi)存中存在著多個(gè)進(jìn)程跛蛋,其數(shù)目往往多于處理機(jī)數(shù)目,這就要求系統(tǒng)能按照...
    Xue先生的貓閱讀 4,810評(píng)論 0 3