Академический Документы
Профессиональный Документы
Культура Документы
行程的執行順序安排問題
作者 : 陳鍾誠
單位 : 金門技術學院資管系
Email: ccc@kmit.edu.tw
URL : http://
ccc.kmit.edu.tw
日期 : 01/17/10
排程
背景知識
有了行程切換的概念,就可以介紹排程了。
排程的主要問題
很多個程式在記憶體當中,下一個應該誰來執行呢?
如何排程是影響作業系統效能最重要的因素。
2 陳鍾誠 - 01/17/10
排程的背景知識
背景知識一:
內文切換的方法與意義
背景知識二:
CPU 暴衝與 IO 暴衝
背景知識三:
排程佇列的概念
3 陳鍾誠 - 01/17/10
背景知識一 : 內文切換
通常用組合語言撰寫
用來將暫存器、檔案資源等儲存的函數
該函數稱為內文切換函數
4 陳鍾誠 - 01/17/10
背景知識二: CPU 與 IO 暴
衝
行程一開始都是CPU 暴衝,接著是 I/O 暴
衝,然後再回到 CPU 暴衝和 I/O 暴衝。
在正常的狀況下,行程就在這兩個狀態間一直
循環,最後以 CPU 暴衝作為結束。
5 陳鍾誠 - 01/17/10
CPU 暴衝與 I/O 暴衝 -
圖示
load store
add store CPU 暴衝
read from file
等待 I/O I/O 暴衝
store increment
index CPU 暴衝
write to file
等待 I/O I/O 暴衝
load store
add store
CPU 暴衝
read from file
…
6 陳鍾誠 - 01/17/10
CPU 暴衝時間統計示意圖
160
140
120
100
80
60
40
20
0 8 16 24 32 40
7 陳鍾誠 - 01/17/10
背景知識三:排程佇列
一個行程在執行期間會在各種不同的佇列中進
出。
一個系統中通常有
工作佇列
就緒佇列
等待佇列
裝置佇列
8 陳鍾誠 - 01/17/10
就緒佇列與裝置佇列
PCB7 PCB2
head
tail 暫存器 暫存器
就緒佇列 … …
tail
暫存器 暫存器
磁碟 1 佇列 … …
head PCB9
tail
暫存器
磁碟 2 佇
…
列
9 陳鍾誠 - 01/17/10
Linux 行程串列的資料結構
init_task
10 陳鍾誠 - 01/17/10
Linux 的就緒佇列
在就緒佇列中的所有行程,其狀態皆為
TASK_RUNNING 。
就緒佇列的開頭
static LIST_HEAD(runqueue_head);
11 陳鍾誠 - 01/17/10
排程的方法
先到先做排程 (First-Come, First Served)
12 陳鍾誠 - 01/17/10
先到先做排程法
First Come, First Served
簡稱 FCFS Scheduling
方法:
先進入的行程先執行。
13 陳鍾誠 - 01/17/10
先到先做排程法 - 範例圖
示
行程 CPU 暴衝時間(毫秒)
P1 20
P2 5
P3 5
P1 P2 P3
0 20 25 30
平均等待時間: (0 + 20 + 25 ) / 3 = 15 毫秒
P2 P3 P1
0 5 10 30
平均等待時間: (10 + 0 + 5 ) / 3 = 5 毫秒
14 陳鍾誠 - 01/17/10
最短工作優先排程
Shortest Job First
簡稱 SJF Scheduling
方法
需要的時間最短者先執行。
15 陳鍾誠 - 01/17/10
最短工作優先排程 – 範例圖
示
行程 CPU 暴衝時間(毫秒)
P1 15
P2 4
P3 3
P3 P2 P1
0 3 7 22
平均等待時間:( 7 + 3 + 0 ) / 3 = 3.3 毫秒
16 陳鍾誠 - 01/17/10
最短工作優先的問題
SJF 在實作上有困難,因為很難知道行程下一個
CPU 暴衝時間的確實長度。
使用預估的方法來求得近似的值。行程下一個 CPU
暴衝時間的預估值可以設為前幾次 CPU 暴衝時間
的幾何平均值。
tn 為第 n 次 CPU 暴衝時間的長度
Tn+1 表示再下一次 CPU 暴衝時間的預估值
Tn +1 =α t n + (1 - α)Tn
α(0 ≤ α ≤1)為一常數
17 陳鍾誠 - 01/17/10
下一次 CPU 暴衝時間的預
測
α = 0.5 12
10
2
0
時間 i 0 1 2 3 4 5 6 7
CPU 暴衝 6 4 6 4 13 13 13 …
( ti )
預測 10 8 6 6 5 9 11 12 …
( Ti ) 18 陳鍾誠 - 01/17/10
最短剩餘優先排程
SJF 也可以是可搶先的。
可搶先的 SJF 排程又稱為最短剩餘時間優先的排程
法。
行程 CPU 暴衝時間(毫秒) 到達時間
P1 6 0
P2 3 1
P3 7 2
P4 4 3
P1 P2 P4 P1 P3
0 1 4 8 13 22
平均等待時間:( 7 + 0 + 11 + 1 ) / 4 = 4.75 毫秒
19 陳鍾誠 - 01/17/10
優先權排程
Priority Scheduling
方法:
最高優先權的行程先執行
Highest Priority First
20 陳鍾誠 - 01/17/10
優先權排程 – 圖示
使用不可搶先的優先權排程
優先權數值愈小代表優先權愈高
P2 P4 P1 P5 P3
0 5 9 15 18 25
平均等待時間:( 9 + 0 + 18 + 5 + 15 ) / 5 = 9.4 毫秒
21 陳鍾誠 - 01/17/10
循環分時排程
Round-Robin Scheduling
將時間等切成一小片一小片的時間切片,
每一個時間切片則為每個行程每次得到
CPU 使用權後可執行的時間。
特別為分時系統所設計,為可搶先的。
22 陳鍾誠 - 01/17/10
循環分時排程 – 圖示
行程 CPU 暴衝時間(毫秒)
P1 6
P2 5
P3 7 ( 時間切片為 5 毫
秒)
P1 P2 P3 P1 P1
0 5 9 13 18 25
平均等待時間:( 8 + 5 + 9 ) / 3 = 7.33 毫秒
23 陳鍾誠 - 01/17/10
循環分時排程 - 注意事項
RR
排程法的效能與時間切片的長短關係
非常密切
太長 - 如同 FCFS 排程法
太短 - 產生處理器分享的現象
使用 RR 排程法時,必須注意內文切換對
效能的影響。
使用 RR 排程法最重要的一點就是定義時
間切片的長短。一般的經驗法則是 80%
行程的 CPU 暴衝時間應該要比一個時間
切片要來得短。
24 陳鍾誠 - 01/17/10
時間切片的影響
時間切片 內文切換
行程執行時間 = 8 毫秒 長度 次數
10 0
0 8
5 1
5
1 7
0 1 2 3 4 5 6 7 8
注意:時間切片若太短,則會一值在做內文切換,很少在真正執行程式。
25 陳鍾誠 - 01/17/10
多層佇列排程
Multilevel Feedback Queue Scheduling
方法:
將行程分類,相同類型的行程分在同一佇列,而每一佇列都有
自己的排程方法。
最常見的分類將行程分成
前景(互動)行程 - RR 排程法
背景(批次)行程 - FCFS 排程法
佇列與佇列之間還有優先權的關係,且佇列之間還需要另一個
整體排程方法
可搶先的固定優先權排程法
可能會產生飢餓的現象。
26 陳鍾誠 - 01/17/10
多層佇列排程法 – 圖示
高優先權
系統行程
伺服精靈行程
批次行程
使用者行程
低優先權
27 陳鍾誠 - 01/17/10
多層反饋佇列排程
多層反饋佇列排程法允許行程在各個佇列間移
動。
CPU
暴衝時間愈長的行程就移到優先權比較
低佇列中。
能避免飢餓的現象發生。
28 陳鍾誠 - 01/17/10
多層反饋佇列排程 – 圖示
A: 時間切片 = 5 ms
B: 時間切片 = 20
ms
C: FCFS
29 陳鍾誠 - 01/17/10
常見作業系統的排程方法
Linux, (UNIX, FreeBSD) :
First-Come, First-Serve Scheduling
Round – Robin Scheduling
30 陳鍾誠 - 01/17/10
評估排程優劣的方法
定性模式
排隊模型
模擬
實作
31 陳鍾誠 - 01/17/10
定性模式
定性模式是一種分析式評估,使用預先選定的行程組
合來評估各種不同的排程方法。
例如預先選定一組行程組合,然後分別使用
FCFS 、 SJF 和 RR 排程法來評估那一種排程法所
產生的平均等待時間最短。
定性模式的評估快速簡單,但
需要事先知道很多系統的資訊當作輸入。
只適用於行為比較固定的系統上。
32 陳鍾誠 - 01/17/10
排隊模式
電腦系統可看成是以網路相連的一群伺服器的組合:
CPU 是執行就緒佇列中行程的伺服器
I/O 系統是執行裝置佇列中行程的伺服器
佇列中行程的數目隨著時間變化,不適合以定性模式來評估
。
若知道新行程到達的速率與舊行程被處理的速率,就可能求
出
CPU 使用率
佇列平均長度
平均等待時間
33 陳鍾誠 - 01/17/10
排隊模式 ( 續 )
Little’s formula
n = λ ×W n:為 平均的 佇列長度
W:為行程在佇列中等待的時間
λ:為新行程平均到達的速率
實作的主要困難點在於所花費的代價太高
:
撰寫排程器與修改作業系統需花費大量的時間
使用者對作業系統經常改變所產生反應的代價
另一個困難點在於評估的環境是變動的。
36 陳鍾誠 - 01/17/10