【作業系統】複習薈萃(三)
【作業系統】複習薈萃(三)
排程——應用題
排程的層次:
高階排程:作業一開始階段——決定那幾個 作業調入記憶體——多道批處理系統(由多排程確定)FIFO,優先順序排程
低階排程:決定就緒佇列中哪個 程式應獲得處理機——多道批處理、分時、實時都要有(選一個程式進入排程,看佇列排列)
中級排程:提高 記憶體利用率和系統吞吐量(記憶體和外存之間)
高響比時間
輪轉演算法:
多級佇列反饋:沒看過的東西
處理機排程
作業:包含了通常的程式和資料,還配有一份作業說明書
高階排程(作業排程):從外存的後備佇列作業中選一個作業調入記憶體,併為其建立程式,每個作業調出一次,調入一次
中級排程(記憶體排程):程式從外存調入記憶體,本來是掛起狀態,pcb還是在記憶體的,可多次調出,多次調入,掛起的作用是因為這個空間不夠用了,你就出去一會
低階排程(程式排程):從就緒佇列中選取一個程式,分配cpu
程式排程
低階排程,就緒佇列上的程式,選擇一個分配CPU
時機:
主動放棄:程式正常終止,異常終止,主動請求阻塞
被動放棄:時間片用完,更緊急的事,更高的優先順序的程式進入就緒佇列
不可排程的情況:處理中斷中,該程式在核心程式臨界區(會影響核心工作)(普通臨界區可以),原語
程式排程方式:
- 非搶佔方式,只允許程式主動放棄cpu
- 搶佔方式——暫停正在執行,重新分配另一個程式
排程演算法的評價指標
CPU利用率:CPU忙碌時間/總時間
吞吐量:單位時間內完成作業的數量
週轉時間:作業完成時間-作業提交時間
平均週轉時間=每個作業的週轉時間/作業數
帶權週轉時間=(作業完成時間-作業提交時間)/作業實際執行時間
平均帶權週轉時間=每個作業帶權的週轉時間/作業數
等待時間:
程式:程式建立後等待被服務的時間之和,等待I/O不算
作業:作業在外存後備佇列中等待時間+建立程式後的等待時間
相應時間:使用者提交請求到首次響應
排程演算法
先來先服務(FCFS):
作業排程and程式排程,非搶佔
程式 | 到達時間 | 執行時間 | 週轉時間 | 帶權週轉時間 | 等待時間 |
---|---|---|---|---|---|
P1 | 0 | 7 | 7 | 1 | 0 |
P2 | 2 | 4 | 9 | 9/4 | 5 |
P3 | 4 | 1 | 8 | 8 | 7 |
P4 | 5 | 4 | 11 | 11/4 | 7 |
一邊到達一邊計算
週轉時間=完成-到達
平均週轉時間=(7+9+8+11)/4
帶權週轉時間=週轉時間/實際時間
平均帶權週轉時間=(1+9/4+8+11/4)/4
等待時間:開始-到達=週轉-執行
優點:公平簡單,不會飢餓
缺點:排在長作業後的短作業帶權時間大
短作業優先(SJF)
作業排程and程式排程,帶權時間少,非搶佔
程式 | 到達時間 | 執行時間 | 週轉時間 | 帶權週轉時間 | 等待時間 |
---|---|---|---|---|---|
P1 | 0 | 7 | 7 | 1 | 0 |
P2 | 2 | 4 | 10 | 10/4 | 6 |
P3 | 4 | 1 | 4 | 4 | 3 |
P4 | 5 | 4 | 11 | 11/4 | 7 |
1-3-2-4
平均帶權週轉時間和,平均都低了
當前已到達且執行時間最短的作業/程式,一邊到達一邊計算
p1最先,還是p1第一個
平均帶權週轉時間和,平均都低了
還有一種搶佔式的短作業優先 SRTN,那幾個平均更低
缺點:不公平,長作業不好,會飢餓
高響應比優先演算法(HRRN)
作業and程式,即考慮了等待時間,又考慮了要求服務時間,非搶佔
響應比=(等待時間+要求服務時間)/要求服務時間
程式 | 到達時間 | 執行時間 | 週轉時間 | 帶權週轉時間 | 等待時間 |
---|---|---|---|---|---|
P1 | 0 | 7 | 7 | 1 | 0 |
P2 | 2 | 4 | 10 | 10/4 | 6 |
P3 | 4 | 1 | 4 | 4 | 3 |
P4 | 5 | 4 | 11 | 11/4 | 7 |
一邊到達一邊計算
0時只到達了P1,所以P1先算,算完再說
P2:等待了5,(5+4)/4
P3:等待了3,(3+1)/1
P4:等待了2,(2+4)/4
P3出去
P2:等待了9,(9+4)/4
P4:等待了6,(6+4)/4
P2出去
不會飢餓
時間片輪轉(RR)
公平地、輪流為各個程式服務,每個程式在一定的時間間隔內都可以相應
僅適用排程,搶佔式
程式 | 到達時間 | 執行時間 | 週轉時間 | 帶權週轉時間 | 等待時間 |
---|---|---|---|---|---|
P1 | 0 | 5 | 7 | 1 | 0 |
P2 | 2 | 4 | 10 | 10/4 | 6 |
P3 | 4 | 1 | 4 | 4 | 3 |
P4 | 5 | 6 | 11 | 11/4 | 7 |
時間片大小是2,5
到達的時刻插在隊尾,但是同時下來的<剛到的
若時間片太大,會退化成先進先出
時間片太小,會變得頻繁
不會飢餓
優先順序排程
就是自己設定優先順序,越高越先
作業and程式,有搶佔和非搶佔
程式 | 到達時間 | 執行時間 | 優先數 |
---|---|---|---|
P1 | 0 | 7 | 1 |
P2 | 2 | 4 | 2 |
P3 | 4 | 1 | 3 |
P4 | 5 | 4 | 2 |
非搶佔,一邊執行一邊上
0時刻,只有p1,上
搶佔式
靜態優先順序——程式的整個優先順序不變
動態優先順序——要變
適用於實時排程,但是會發生飢餓
多級反饋佇列
程式排程,可搶佔
程式 | 到達時間 | 執行時間 |
---|---|---|
P1 | 0 | 8 |
P2 | 2 | 4 |
P3 | 5 | 1 |
各級優先佇列從高到低,時間片從小到大
新程式到達先進入第一級佇列,按FCFS排隊等待分配時間片
用完時間片程式還未結束,則程式進入下一級佇列隊尾
若已在最下級,重新放回最下級隊尾
被搶佔時退回本層
死鎖
互相等待對方資源,阻塞無法推進
死鎖的互斥條件
(1)互斥條件
(2)不可搶佔條件
(3)請求和保持條件
(4)迴圈等待條件
發生死鎖時一定有迴圈等待,發生迴圈等待未必死鎖,如果系統的每類資源只有一個,迴圈等待則是充分必要條件
發生死鎖的原因
(1)對系統資源的競爭
(2)程式推進順序非法
(3)訊號量使用不當
對不可搶佔的資源分配不合理
處理死鎖方法:
(1)預防死鎖 //很多條件
(2)避免死鎖 //一些條件(重要)
(3)檢測死鎖 //任由產生
(4)解除死鎖
預防死鎖
很多時候無法破壞互斥條件
破壞不可搶佔:
拿著資源還得不到滿足,就先主動釋放(只適用於易儲存和恢復的資源);強行剝奪
缺點:會飢餓,開銷大
破壞請求保持:
靜態分配:執行前申請它需要的所有資源,未滿足前不投入使用
缺點:資源利用率極低,飢餓
破壞迴圈等待條件:
順序資源分配法:給系統的資源編號,規定每個程式必須按編號遞增順序來佔有,只有在佔用小編號之後才能大編號
缺點:不方便增加新的裝置,要重新編號;資源浪費,先申請用不到的資源;程式設計麻煩
避免死鎖
安全序列:系統按程式順序(P2,P1,P3)為其分配資源,直至滿足每個程式對資源的最大需求
有一個安全序列,系統就是安全的,安全系統一定不會發生死鎖,不安全序列有可能會發生死鎖
安全演算法
手算的更快演算法,一次把滿足要求的全加上
銀行家演算法
可利用資源向量Available
最大需求矩陣Max
分配矩陣 Allocation
需求矩陣 Need
這一次想要獲得的分配資源 Request0
Need=Max-Allocation
(1)
R
e
q
u
e
s
t
i
[
j
]
<
=
N
e
e
d
[
i
,
j
]
Request_i[j]<=Need[i,j]
Requesti[j]<=Need[i,j] 比你之前告訴我的大出錯
(2)
R
e
q
u
e
s
t
i
[
j
]
<
=
A
v
a
i
l
a
b
l
e
[
i
,
j
]
Request_i[j]<=Available[i,j]
Requesti[j]<=Available[i,j] 不滿足等待
(3)系統試探著把資源分配了,修改
(4)執行安全性演算法,判斷分配後是否安全,安全,才正式分配,否則作廢
已知
P | Allocation已分配 | Need | Available |
---|---|---|---|
P0 | 010 | 743 | 332 |
P1 | 200 | 122 | |
P2 | 302 | 600 | |
P3 | 211 | 011 | |
P4 | 002 | 432 |
求:
P | Work | Allocation | Need | Allocation+Work | Finish |
---|---|---|---|---|---|
P1 | 332 | 200 | 122 | 532 | true |
P3 | 532 | 211 | 011 | 743 | |
P4 | 743 | 600 | |||
P0 | 211 | 011 | |||
P0 | 002 | 432 |
死鎖的檢測
資源分配圖
兩種結點:
程式結點——一個程式(圈),資源結點——一類資源(矩形)
兩種邊:
程式結點—資源結點:程式想申請幾個資源,每條邊是一個
資源結點—程式結點:表示已經為程式分配了幾個資源,每邊一個
如果剩餘資源足夠滿足,就可順利執行。結束之後去掉邊
去掉所有邊就沒有死鎖
死鎖的解除
(1)資源剝奪法
掛起死鎖程式,搶佔它的資源
缺點:飢餓
(2)撤銷程式
強制撤銷死鎖程式,剝奪資源
缺點:代價大,功虧一簣
(3)程式回退
讓一個或多個死鎖程式回退到足以避免死鎖的地步
缺點:不易實現
總之就是幹掉一個程式,選程式咯
相關文章
- Linux系統管理技巧大薈萃Linux
- 作業系統複習作業系統
- Linux系統下應用知識大薈萃(轉)Linux
- 人文知識網站薈萃網站
- 作業系統概念知識點複習作業系統
- 256種程式語言大薈萃
- 作業系統複習第一章作業系統
- 學習作業系統的三本書作業系統
- Swift開發必備資源薈萃Swift
- Web前端開發資源大薈萃Web前端
- 作業系統(考研,面試,期末複習)- 持續更新作業系統面試
- 作業系統複習(程式、執行緒、死鎖)作業系統執行緒
- 程式設計類開放書籍薈萃程式設計
- 專案管理軟體產品薈萃(轉)專案管理
- 作業系統期末複習——四大演算法作業系統演算法
- 作業系統學習作業系統
- 15位Oracle頂級專家經驗薈萃Oracle
- 計算機作業系統第一章複習計算機作業系統
- 國產作業系統學習作業系統
- 【計題02組專業03號】作業系統知識點複習作業系統
- 計算機作業系統複習知識點大集合計算機作業系統
- Korn Ferry報告:未來的工作——全球人才薈萃
- 應用示例薈萃 | performance_schema全方位介紹ORM
- 工作學習中如何選擇作業系統?如何學習linux作業系統作業系統Linux
- 小白如何學習作業系統?作業系統
- 作業系統習題以及答案作業系統
- 作業系統學習(1)-概述作業系統
- 作業系統學習(二)—— 程式作業系統
- 牛腩作業系統--CSS學習作業系統CSS
- 作業系統學習筆記作業系統筆記
- 作業系統基礎第三講作業系統
- 作業系統(1)——作業系統概述作業系統
- 作業系統(一):作業系統概述作業系統
- Android群英傳實踐過程參考文章薈萃Android
- 作業系統(二):作業系統結構作業系統
- 【作業系統】作業系統綜述(一)作業系統
- 作業系統 作業5作業系統
- 作業系統複習第五章2018-06-27作業系統