操作系統(tǒng)簡明-4.0:cpu調度 干貨整理

當有多個進程時,cpu調度決定了哪一個進程運行

計算機中,CPU與I/O交替運行



但是一個進程往往需要大量的計算,卻有很少的I/O操作,并且I/O操作很費時間,于是乎,我們想讓這個cpu的執(zhí)行的時間更長一些,I/O更短一些,甚至可以同時把多個進程導入內存舍扰,使得一個進程在CPU中執(zhí)行I/O時,一個進程用來填補CPU的時間

進程狀態(tài)

在前面進程一章單獨講過進程狀態(tài),這里抽出三個比較主要的:
■ Running - process is running on CPU.
■ Ready - ready to run, but not actually running on the CPU.
■ Waiting - waiting for some event like IO
to happen

調度算法

?算法關注點

  1. cpu使用率:讓cpu盡可能高效
  2. 吞吐量:單位時間完成進程的數(shù)量
  3. 周轉時間:從進程提交到進程完成
  4. 等待時間:在就緒隊列等待的時間之和
  5. 響應時間:提交請求到第一次回復請求

不同的系統(tǒng)關注點不同:多道系統(tǒng)想要好的吞吐量和周轉時間,而交互系統(tǒng)則更看中響應時間

一. 批處理系統(tǒng)

?First-Come, First-Served (FCFS)

先到先服務,顧名思義,一個進只有被中斷或者執(zhí)行I/O才會放棄cpu資源,在其他情況下一直做個獨裁者
假設有三個進程:
P1 (takes 24 seconds)
P2 (takes3 seconds)
P3 (takes 3 seconds)

□ If arrive in order P1, P2, P3, what is
Waiting Time? (24+27) / 3 = 17
Turnaround Time? (24+27+30) / 3 = 27
Throughput? 30 / 3 = 10.

?Priority Scheduling

每個進程賦予一個優(yōu)先級,優(yōu)先級高的先運行,如果優(yōu)先級相同:考慮FCFS算法
饑餓問題:優(yōu)先級小的進程不容易運行,這里用老化解決:隨著時間增長,那些一直沒有運行的進程的優(yōu)先級會逐步增加

假定這里有五個進程:
P1(burst time 10, priority 3), P2 (burst
time 1, priority 1), P3 (burst time 2,
priority 3), P4 (burst time 1, priority
4), P5 (burst time 5, priority 2). Lower
numbers represent higher priorities.
執(zhí)行順序按照權重

下面介紹優(yōu)先調度算法的一個分支

Shortest-Job-First (SJF)

最小任務優(yōu)先可以減少等待和周轉時間,因為哪些時間長的任務放到了最后.前面提到,一個進程是由CPU區(qū)間和I/O區(qū)間交替組成的,而SJF是看哪個進程的CPU區(qū)間最短

  1. 搶占式:又稱最短剩余優(yōu)先希坚,當新進來的進程的CPU區(qū)間比當前執(zhí)行的進程所剩的CPU區(qū)間短妥粟,則搶占
  2. 非搶占:稱為下一個最短優(yōu)先,因為在就緒隊列中選擇最短CPU區(qū)間的進程放在隊頭

四個進程:
P1 (burst time 8)
P2(burst time 4)
P3 (burst time 9)
P4 (burst time 5)
that arrive one time unit apart in order P1, P2, P3, P4.

  • 搶占的順序是:P2(time 4)P4(time 5)P1(time 8)P3(time9)
  • 非搶戰(zhàn)的順序:P1(time 1)P2(time 4)P4(time 5)P1(time 7)P3(time 9)

SJF用于長期調度而不能用短期調度,因為進程是一個整體,CPU沒法知道進程中第一個CPU區(qū)間長度吏够。

SJF需要確定下一個CPU區(qū)間的時間長度,可以通過近似估算出下一個CPU區(qū)間的長度,比如tn+1=atn+(1-a)rn tn為最近最近一次的CPU時間勾给,rn為歷史記錄,a是給定的權重。

二.分時操作系統(tǒng)

?輪轉法/RR調度

在早期的時間片輪轉法中锅知,系統(tǒng)將所有的就緒進程按先來先服務的原則播急,排成一個隊列,每次調度時售睹,把CPU分配給隊首進程桩警,并令其執(zhí)行一個時間片。
時間片的大小從幾ms到幾百ms昌妹。當執(zhí)行的時間片用完時捶枢,由一個計時器發(fā)出時鐘中斷請求握截,調度程序便據(jù)此信號來停止該進程的執(zhí)行,并將它送往就緒隊列的末尾
然后烂叔,再把處理機分配給就緒隊列中新的隊首進程谨胞,同時也讓它執(zhí)行一個時間片。這樣就可以保證就緒隊列中的所有進程蒜鸡,在一給定的時間內胯努,均能獲得一時間片的處理機執(zhí)行時間。
如果在時間片結束時進程還在運行逢防,則CPU將被剝奪并分配給另一個進程叶沛。如果進程在時間片結束前阻塞或結束,則CPU當即進行切換忘朝。調度程序所要做的就是維護一張就緒進程列表灰署,當進程用完它的時間片后,它被移到隊列的末尾局嘁。

  • 多級隊列方法:將系統(tǒng)中所有進程分成若干類氓侧,每類為一級
  • 多級反饋隊列:多級反饋隊列方式是在系統(tǒng)中設置多個就緒隊列,并賦予各隊列以不同的優(yōu)先權---百度超詳細講解

假設Have 3 queues, numbered 0, 1, 2 with
corresponding priority.
■ So, for example, execute a task in queue
2 only when queues 0 and 1 are empty.

  • 首先進程從就緒狀態(tài)到隊列0,然后讓他運行8ms
  • 到達隊列1,讓他運行16ms
  • 運行隊列2:如果是交互系統(tǒng),采用RR調度(給他充足的運行時間).如果是批處理操作系統(tǒng),采用FCFS算法

如果此時有其他進程準備就緒,則搶占隊列2,這個算法也就是說,后進的不一定最慢完成

?unix調度

作為分時操作系統(tǒng)最最典型的unix與linux,自然要介紹下讓他們:
每個進程給予相同的優(yōu)先級:60,由于系統(tǒng)時鐘每秒產生一個50到100次的中斷导狡,所以我們假設每秒鐘有60次中斷,當被中斷的進程運行時,時鐘中斷程序會在PCB上增加一個字段:cpu使用率
操作系統(tǒng)會運行優(yōu)先級最高的進程,如果相同,會選擇在就緒隊列時間較長的那一個
每一秒,都會從新計算優(yōu)先級和cpu使用率:

  • cpu使用率=cpu使用率 / 2
  • 優(yōu)先級=cpu 使用率 / 2 + 基礎優(yōu)先級(60)

所以,不難看出,如果一個進程最近沒有使用過cpu,那么他的優(yōu)先級就會增高,與IO和交互相關的進程優(yōu)先級往往很高,與CPU相關的進程優(yōu)先級往往很低(這是您想要的)
unix還為每個進程提供一個"nice"值,用來修正優(yōu)先級計算:

  • 優(yōu)先級= CPU使用率 / 2 + 基礎優(yōu)先級 + nice value

數(shù)字越低,優(yōu)先級越高,并且您能通過nice值來減少一個進程的優(yōu)先級

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末偎痛,一起剝皮案震驚了整個濱河市旱捧,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌踩麦,老刑警劉巖枚赡,帶你破解...
    沈念sama閱讀 217,907評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異谓谦,居然都是意外死亡贫橙,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評論 3 395
  • 文/潘曉璐 我一進店門反粥,熙熙樓的掌柜王于貴愁眉苦臉地迎上來卢肃,“玉大人,你說我怎么就攤上這事才顿∧妫” “怎么了?”我有些...
    開封第一講書人閱讀 164,298評論 0 354
  • 文/不壞的土叔 我叫張陵郑气,是天一觀的道長幅垮。 經(jīng)常有香客問我,道長尾组,這世上最難降的妖魔是什么忙芒? 我笑而不...
    開封第一講書人閱讀 58,586評論 1 293
  • 正文 為了忘掉前任示弓,我火速辦了婚禮,結果婚禮上呵萨,老公的妹妹穿的比我還像新娘奏属。我一直安慰自己,他們只是感情好甘桑,可當我...
    茶點故事閱讀 67,633評論 6 392
  • 文/花漫 我一把揭開白布拍皮。 她就那樣靜靜地躺著,像睡著了一般跑杭。 火紅的嫁衣襯著肌膚如雪铆帽。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,488評論 1 302
  • 那天德谅,我揣著相機與錄音爹橱,去河邊找鬼。 笑死窄做,一個胖子當著我的面吹牛愧驱,可吹牛的內容都是我干的。 我是一名探鬼主播椭盏,決...
    沈念sama閱讀 40,275評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼组砚,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了掏颊?” 一聲冷哼從身側響起糟红,我...
    開封第一講書人閱讀 39,176評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎乌叶,沒想到半個月后盆偿,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,619評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡准浴,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,819評論 3 336
  • 正文 我和宋清朗相戀三年事扭,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片乐横。...
    茶點故事閱讀 39,932評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡求橄,死狀恐怖,靈堂內的尸體忽然破棺而出葡公,到底是詐尸還是另有隱情谈撒,我是刑警寧澤,帶...
    沈念sama閱讀 35,655評論 5 346
  • 正文 年R本政府宣布匾南,位于F島的核電站啃匿,受9級特大地震影響,放射性物質發(fā)生泄漏。R本人自食惡果不足惜溯乒,卻給世界環(huán)境...
    茶點故事閱讀 41,265評論 3 329
  • 文/蒙蒙 一夹厌、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧裆悄,春花似錦矛纹、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至艾君,卻和暖如春采够,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背冰垄。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評論 1 269
  • 我被黑心中介騙來泰國打工蹬癌, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人虹茶。 一個月前我還...
    沈念sama閱讀 48,095評論 3 370
  • 正文 我出身青樓逝薪,卻偏偏與公主長得像,于是被迫代替她去往敵國和親蝴罪。 傳聞我的和親對象是個殘疾皇子董济,可洞房花燭夜當晚...
    茶點故事閱讀 44,884評論 2 354

推薦閱讀更多精彩內容