SlideShare a Scribd company logo
1 of 142
Download to read offline
作業系統基本觀念複習 Process & Thread 
Yiling Lai 
2011/8/24 
1
•恐龍書 
Operating System Concepts 
Silberschatz, Galvin, Gagne 
2
什麼是Process? 
•A program in execution. 執行中的程式 
3
什麼是Process? 
•A program in execution. 執行中的程式 
3
什麼是Process? 
•A program in execution. 執行中的程式 
3
什麼是Process? 
•A program in execution. 執行中的程式 
3 
Text Section 
Data Section 
Heap 
Stack 
Program counter
什麼是Process? 
•A program in execution. 執行中的程式 
3 
Text Section 
Data Section 
Heap 
Stack 
Program counter 
Registers
Process的一生 (STD) 
New 
4 
Job Queue
Process的一生 (STD) 
New 
Ready 
Load到memory裡, 準備搶CPU控制權 
4 
Ready Queue 
Job Queue
Process的一生 (STD) 
New 
Ready 
Load到memory裡, 準備搶CPU控制權 
4 
Ready Queue 
PCB 
Process ID Process State PC CPU Registers …. 
Job Queue
Process的一生 (STD) 
New 
Ready 
Running 
Load到memory裡, 準備搶CPU控制權 
搶到CPU了 
4 
Ready Queue 
PCB 
Process ID Process State PC CPU Registers …. 
Job Queue
Process的一生 (STD) 
New 
Ready 
Running 
Wait 
(Block) 
Wait for I/O complete or resources available 
Load到memory裡, 準備搶CPU控制權 
搶到CPU了 
4 
Ready Queue 
PCB 
Process ID Process State PC CPU Registers …. 
Job Queue
Process的一生 (STD) 
New 
Ready 
Running 
Wait 
(Block) 
Wait for I/O complete or resources available 
Load到memory裡, 準備搶CPU控制權 
CPU被搶走了 
搶到CPU了 
4 
Ready Queue 
PCB 
Process ID 
Process State 
PC 
CPU Registers 
…. 
Job Queue
Process的一生 (STD) 
New 
Ready 
Running 
Terminate 
Wait 
(Block) 
Wait for I/O complete or resources available 
Load到memory裡, 準備搶CPU控制權 
CPU被搶走了 
搶到CPU了 
4 
Ready Queue 
PCB 
Process ID 
Process State 
PC 
CPU Registers 
…. 
Job Queue
Process的一生 (STD) 
New 
Ready 
Running 
Terminate 
Wait 
(Block) 
Wait for I/O complete or resources available 
Load到memory裡, 準備搶CPU控制權 
CPU被搶走了 
搶到CPU了 
4 
Ready Queue 
PCB 
Process ID 
Process State 
PC 
CPU Registers 
…. 
Job Queue
Process的一生 (STD) 
New 
Ready 
Running 
Terminate 
Wait (Block) 
Wait for I/O complete or resources available 
Load到memory裡, 準備搶CPU控制權 
CPU被搶走了 
我等著你回來~~ (好無聊啊!!) 
搶到CPU了 
4 
Ready Queue 
PCB 
Process ID 
Process State 
PC 
CPU Registers 
…. 
Job Queue
多找幾個行程來填 補我的空虛與寂寞!! 
(Concurrent Processing) 
5
多找幾個行程來填 補我的空虛與寂寞!! 
(Concurrent Processing) 
你這個詐騙集 團!! 我才是真的 平行化好嘛! 
5
Parallel Processing 
多找幾個行程來填 補我的空虛與寂寞!! 
(Concurrent Processing) 
你這個詐騙集 團!! 我才是真的 平行化好嘛! 
P0 
P1 
P2 
5
Parallel Processing 
Concurrnt Processing 
P0 
P1 
P2 
多找幾個行程來填 補我的空虛與寂寞!! 
(Concurrent Processing) 
你這個詐騙集 團!! 我才是真的 平行化好嘛! 
P0 
P1 
P2 
5
Parallel Processing 
Concurrnt Processing 
P0 
P1 
P2 
大家輪流使用CPU,但是怎麼輪?? 
多找幾個行程來填 補我的空虛與寂寞!! (Concurrent Processing) 
你這個詐騙集 團!! 我才是真的 平行化好嘛! 
P0 
P1 
P2 
5
6
6
6
我就知道沒有 我果然不行, 交給我吧!! 
6
7
1.CPU的使用率(Utilization)要最大 
2.工作產能(Throughput)要高 
3.Process等待的時間要短 
4.完成時間(Turnaround time)要短 
5.資源利用率也要大 
6.要公平 
7.… 
7
1.CPU的使用率(Utilization)要最大 
2.工作產能(Throughput)要高 
3.Process等待的時間要短 
4.完成時間(Turnaround time)要短 
5.資源利用率也要大 
6.要公平 
7.… 
•FIFO: First come first out 
•SJF: Shortest Job First 
•SRJF: Shortest Remaining Time Job First 
•Priority Scheduling 
•RR: Round Robin 
•….. 
7
1.CPU的使用率(Utilization)要最大 
2.工作產能(Throughput)要高 
3.Process等待的時間要短 
4.完成時間(Turnaround time)要短 
5.資源利用率也要大 
6.要公平 
7.… 
•FIFO: First come first out 
•SJF: Shortest Job First 
•SRJF: Shortest Remaining Time Job First 
•Priority Scheduling 
•RR: Round Robin 
•….. 
7 
Scheduling Algorithm
FIFO: 誰先來誰先做 
SJF: 你要3個小時?我只要3分鐘,先給我用一下吧~ 
(SJF: shortest time job first) 
Process 
CPU Time 
P0 
14 
P1 
5 
P2 
2 
1.CPU的使用率要最大 
2.工作產能要高 
3.Process等待的時間要短 
4.完成時間要短 
5.資源利用率也要大 
6.要公平 
FIFO: 
SJF: 
8
FIFO: 誰先來誰先做 
SJF: 你要3個小時?我只要3分鐘,先給我用一下吧~ 
(SJF: shortest time job first) 
Process 
CPU Time 
P0 
14 
P1 
5 
P2 
2 
P0 
1.CPU的使用率要最大 
2.工作產能要高 
3.Process等待的時間要短 
4.完成時間要短 
5.資源利用率也要大 
6.要公平 
FIFO: 
SJF: 
8
FIFO: 誰先來誰先做 
SJF: 你要3個小時?我只要3分鐘,先給我用一下吧~ 
(SJF: shortest time job first) 
Process 
CPU Time 
P0 
14 
P1 
5 
P2 
2 
P1 
P0 
1.CPU的使用率要最大 
2.工作產能要高 
3.Process等待的時間要短 
4.完成時間要短 
5.資源利用率也要大 
6.要公平 
FIFO: 
SJF: 
8
FIFO: 誰先來誰先做 
SJF: 你要3個小時?我只要3分鐘,先給我用一下吧~ 
(SJF: shortest time job first) 
Process 
CPU Time 
P0 
14 
P1 
5 
P2 
2 
P2 
P1 
P0 
1.CPU的使用率要最大 
2.工作產能要高 
3.Process等待的時間要短 
4.完成時間要短 
5.資源利用率也要大 
6.要公平 
FIFO: 
SJF: 
8
FIFO: 誰先來誰先做 
SJF: 你要3個小時?我只要3分鐘,先給我用一下吧~ 
(SJF: shortest time job first) 
Process 
CPU Time 
P0 
14 
P1 
5 
P2 
2 
平均等待時間 = (0+ 14+19)/3 = 11 
P2 
P1 
P0 
2 
5 
14 
1.CPU的使用率要最大 
2.工作產能要高 
3.Process等待的時間要短 
4.完成時間要短 
5.資源利用率也要大 
6.要公平 
FIFO: 
SJF: 
8
FIFO: 誰先來誰先做 
SJF: 你要3個小時?我只要3分鐘,先給我用一下吧~ 
(SJF: shortest time job first) 
Process 
CPU Time 
P0 
14 
P1 
5 
P2 
2 
平均等待時間 = (0+ 14+19)/3 = 11 
P2 
P1 
P0 
2 
5 
14 
1.CPU的使用率要最大 
2.工作產能要高 
3.Process等待的時間要短 
4.完成時間要短 
5.資源利用率也要大 
6.要公平 
FIFO: 
SJF: 
8
FIFO: 誰先來誰先做 
SJF: 你要3個小時?我只要3分鐘,先給我用一下吧~ 
(SJF: shortest time job first) 
Process 
CPU Time 
P0 
14 
P1 
5 
P2 
2 
平均等待時間 = (0+ 14+19)/3 = 11 
P2 
P2 
P1 
P0 
2 
5 
14 
1.CPU的使用率要最大 
2.工作產能要高 
3.Process等待的時間要短 
4.完成時間要短 
5.資源利用率也要大 
6.要公平 
FIFO: 
SJF: 
8
FIFO: 誰先來誰先做 
SJF: 你要3個小時?我只要3分鐘,先給我用一下吧~ 
(SJF: shortest time job first) 
Process 
CPU Time 
P0 
14 
P1 
5 
P2 
2 
平均等待時間 = (0+ 14+19)/3 = 11 
P2 
P1 
P2 
P1 
P0 
2 
5 
14 
1.CPU的使用率要最大 
2.工作產能要高 
3.Process等待的時間要短 
4.完成時間要短 
5.資源利用率也要大 
6.要公平 
FIFO: 
SJF: 
8
FIFO: 誰先來誰先做 
SJF: 你要3個小時?我只要3分鐘,先給我用一下吧~ 
(SJF: shortest time job first) 
Process 
CPU Time 
P0 
14 
P1 
5 
P2 
2 
平均等待時間 = (0+ 14+19)/3 = 11 
P2 
P1 
P0 
P2 
P1 
P0 
2 
5 
14 
1.CPU的使用率要最大 
2.工作產能要高 
3.Process等待的時間要短 
4.完成時間要短 
5.資源利用率也要大 
6.要公平 
FIFO: 
SJF: 
8
FIFO: 誰先來誰先做 
SJF: 你要3個小時?我只要3分鐘,先給我用一下吧~ 
(SJF: shortest time job first) 
Process 
CPU Time 
P0 
14 
P1 
5 
P2 
2 
平均等待時間 = (0+2+7)/3 = 3 
平均等待時間 = (0+ 14+19)/3 = 11 
P2 
P1 
P0 
2 
5 
14 
P2 
P1 
P0 
2 
5 
14 
1.CPU的使用率要最大 
2.工作產能要高 
3.Process等待的時間要短 
4.完成時間要短 
5.資源利用率也要大 
6.要公平 
FIFO: 
SJF: 
8
FIFO: 誰先來誰先做 
SJF: 你要3個小時?我只要3分鐘,先給我用一下吧~ 
(SJF: shortest time job first) 
Process 
CPU Time 
P0 
14 
P1 
5 
P2 
2 
平均等待時間 = (0+2+7)/3 = 3 
平均等待時間 = (0+ 14+19)/3 = 11 
P2 
P1 
P0 
2 
5 
14 
P2 
P1 
P0 
2 
5 
14 
1.CPU的使用率要最大 
2.工作產能要高 
3.Process等待的時間要短 
4.完成時間要短 
5.資源利用率也要大 
6.要公平 
FIFO: 
SJF: 
8
Process 
CPU Time 
P0 
14 
P1 
5 
P2 
2 
P2 
P1 
P0 
9
P2 
P1 
Process 
CPU Time 
P0 
14 
P1 
5 
P2 
2 
P2 
P1 
P0 
9
P2 
P1 
P3 
Process 
CPU Time 
P0 
14 
P1 
5 
P2 
2 
P2 
P1 
P0 
9
P3 
P2 
P1 
P2 
P1 
P3 
Process 
CPU Time 
P0 
14 
P1 
5 
P2 
2 
P2 
P1 
P0 
9
P3 
P2 
P1 
P2 
P1 
P3 
P4 
Process 
CPU Time 
P0 
14 
P1 
5 
P2 
2 
P2 
P1 
P0 
9
P3 
P2 
P1 
P2 
P1 
P3 
P4 
PN 
…. 
Process 
CPU Time 
P0 
14 
P1 
5 
P2 
2 
P2 
P1 
P0 
9
P3 
P2 
P1 
P2 
P1 
P3 
P4 
PN 
…. 
P4 
P2 
P1 
…. 
PN 
Process 
CPU Time 
P0 
14 
P1 
5 
P2 
2 
P2 
P1 
P0 
9
P3 
P2 
P1 
P2 
P1 
P3 
P4 
PN 
…. 
P4 
P2 
P1 
…. 
PN 
Process 
CPU Time 
P0 
14 
P1 
5 
P2 
2 
P2 
P1 
P0 
喂…那 我咧… 
P0 
9
P3 
P2 
P1 
P2 
P1 
P3 
P4 
PN 
…. 
P4 
P2 
P1 
…. 
PN 
Process 
CPU Time 
P0 
14 
P1 
5 
P2 
2 
P2 
P1 
P0 
喂…那 我咧… 
P0 
Starvation 飢餓:Process因為長 期無法取得完工所需的全部資 源,以致形成indefinite blocking 之現象。 解法:Aging Tech等… 
9
SRJF: Shortest Remaining Time Job First 
•可插隊的。 
Process 
Arrival Time 
CPU Time 
P0 
0 
6 
P1 
1 
4 
P2 
2 
7 
P3 
3 
3 
P0 
T0 
T1 
T2 
T3 
10 
T1 
T2 
T3 
T5 
T20
SRJF: Shortest Remaining Time Job First 
•可插隊的。 
Process 
Arrival Time 
CPU Time 
P0 
0 
6 
P1 
1 
4 
P2 
2 
7 
P3 
3 
3 
P0 
P1 
T0 
T1 
T2 
T3 
10 
T1 
T2 
T3 
T5 
T20
SRJF: Shortest Remaining Time Job First 
•可插隊的。 
Process 
Arrival Time 
CPU Time 
P0 
0 
6 
P1 
1 
4 
P2 
2 
7 
P3 
3 
3 
P0 
P1 
P0 
P1 
T0 
T1 
T2 
T3 
10 
T1 
T2 
T3 
T5 
T20
SRJF: Shortest Remaining Time Job First 
•可插隊的。 
Process 
Arrival Time 
CPU Time 
P0 
0 
6 
P1 
1 
4 
P2 
2 
7 
P3 
3 
3 
P2 
P0 
P1 
P0 
P1 
T0 
T1 
T2 
T3 
10 
T1 
T2 
T3 
T5 
T20
SRJF: Shortest Remaining Time Job First 
•可插隊的。 
Process 
Arrival Time 
CPU Time 
P0 
0 
6 
P1 
1 
4 
P2 
2 
7 
P3 
3 
3 
P2 
P0 
P1 
P0 
P1 
P0 
P1 
T0 
T1 
T2 
T3 
10 
T1 
T2 
T3 
T5 
T20
SRJF: Shortest Remaining Time Job First 
•可插隊的。 
Process 
Arrival Time 
CPU Time 
P0 
0 
6 
P1 
1 
4 
P2 
2 
7 
P3 
3 
3 
P2 
P0 
P1 
P0 
P1 
P0 
P1 
P3 
T0 
T1 
T2 
T3 
10 
T1 
T2 
T3 
T5 
T20
SRJF: Shortest Remaining Time Job First 
•可插隊的。 
Process 
Arrival Time 
CPU Time 
P0 
0 
6 
P1 
1 
4 
P2 
2 
7 
P3 
3 
3 
P2 
P0 
P1 
P0 
P1 
P0 
P1 
P3 
P0 
P1 
T0 
T1 
T2 
T3 
10 
T1 
T2 
T3 
T5 
T20
SRJF: Shortest Remaining Time Job First 
•可插隊的。 
Process 
Arrival Time 
CPU Time 
P0 
0 
6 
P1 
1 
4 
P2 
2 
7 
P3 
3 
3 
P2 
P0 
P1 
P0 
P1 
P0 
P1 
P3 
P0 
P1 
P2 
P0 
P3 
T0 
T1 
T2 
T3 
10 
T1 
T2 
T3 
T5 
T20
SRJF: Shortest Remaining Time Job First 
•可插隊的。 
Process 
Arrival Time 
CPU Time 
P0 
0 
6 
P1 
1 
4 
P2 
2 
7 
P3 
3 
3 
P2 
P0 
P1 
P0 
P1 
P0 
P1 
P3 
P0 
P1 
P2 
P0 
P3 
P0 
P1 
P3 
P0 
P2 
T0 
T1 
T2 
T3 
10 
T1 
T2 
T3 
T5 
T20
New 
Ready 
Running 
Terminate 
Wait (Block) 
Load到memory裡, 準備搶CPU控制權 
CPU被搶走了 
搶到CPU了 
Registers 
11 
PCB 
Process ID ReProcess State PC CPU gisters ….
New 
Ready 
Running 
Terminate 
Wait (Block) 
Load到memory裡, 準備搶CPU控制權 
CPU被搶走了 
搶到CPU了 
Registers 
11 
PCB 
Process ID 
ReProcess State 
PC 
CPU gisters 
….
New 
Ready 
Running 
Terminate 
Wait (Block) 
Load到memory裡, 準備搶CPU控制權 
CPU被搶走了 
搶到CPU了 
Registers 
11 
PCB 
Process ID ReProcess State PC CPU gisters ….
New 
Ready 
Running 
Terminate 
Wait (Block) 
Load到memory裡, 準備搶CPU控制權 
CPU被搶走了 
搶到CPU了 
Registers 
Context Switching:若CPU將執行中的Process切換 給其他Process使用時,必須保存目前執行中 Process的狀態,並載入欲執行Process的狀態資訊。 
11 
PCB 
Process ID ReProcess State PC CPU gisters ….
問題是搬家是需要成本的… 
P0 
P1 
P2 
12
問題是搬家是需要成本的… 
P0 
P1 
P2 
太多Process並行效 能反而不如預期… 
12
問題是搬家是需要成本的… 
P0 
P1 
P2 
太多Process並行效 能反而不如預期… 
解法1:提供多套Registers 
Registers 
12
問題是搬家是需要成本的… 
P0 
P1 
P2 
太多Process並行效 能反而不如預期… 
解法1:提供多套Registers 
Registers 
12
問題是搬家是需要成本的… 
P0 
P1 
P2 
太多Process並行效 能反而不如預期… 
解法1:提供多套Registers 
Registers 
解法2:改用Thread~ 
Thread: Light weight process. 是 CPU分配資源的最小單位,而同 一個Process內的threads共享 code section, data section, 跟一 些OS資源 
12
問題是搬家是需要成本的… 
P0 
P1 
P2 
太多Process並行效 能反而不如預期… 
解法1:提供多套Registers 
Registers 
解法2:改用Thread~ 
Thread: Light weight process. 是 CPU分配資源的最小單位,而同 一個Process內的threads共享 code section, data section, 跟一 些OS資源 
12
建立Thread也是有成本的 
→ 用空間換取時間~~ 
13
建立Thread也是有成本的 
→ 用空間換取時間~~ 
Thread Pool: 在Process建立之初,預先 建立多條threads置於thread pool中,當 需要使用時,就從thread pool中取出使 用,用完再還給thread pool。 
13
到目前為止… 
14 
單 一 行 程 若 進 入IO,CPU效 能 則 無 法 發 揮
到目前為止… 
14 
單 一 行 程 若 進 入IO,CPU效 能 則 無 法 發 揮 
多 行 程 並 行 , 提 升 了CPU效 能
到目前為止… 
14 
單 一 行 程 若 進 入IO,CPU效 能 則 無 法 發 揮 
多 行 程 並 行 , 提 升 了CPU效 能 
排程問 題
到目前為止… 
14 
單 一 行 程 若 進 入IO,CPU效 能 則 無 法 發 揮 
多 行 程 並 行 , 提 升 了CPU效 能 
OS運 用 排 程 演 算 法 協 助 排 程 
排程問 題
到目前為止… 
14 
單 一 行 程 若 進 入IO,CPU效 能 則 無 法 發 揮 
多 行 程 並 行 , 提 升 了CPU效 能 
OS運 用 排 程 演 算 法 協 助 排 程 
排程問 題 
Context Switching
到目前為止… 
14 
單 一 行 程 若 進 入IO,CPU效 能 則 無 法 發 揮 
多 行 程 並 行 , 提 升 了CPU效 能 
OS運 用 排 程 演 算 法 協 助 排 程 
改 用 輕 量 級 行 程 threads 
排程問 題 
Context Switching
到目前為止… 
14 
單 一 行 程 若 進 入IO,CPU效 能 則 無 法 發 揮 
多 行 程 並 行 , 提 升 了CPU效 能 
OS運 用 排 程 演 算 法 協 助 排 程 
改 用 輕 量 級 行 程 threads 
排程問 題 
Context Switching 
建立 Thread的 成本
到目前為止… 
14 
單 一 行 程 若 進 入IO,CPU效 能 則 無 法 發 揮 
多 行 程 並 行 , 提 升 了CPU效 能 
OS運 用 排 程 演 算 法 協 助 排 程 
改 用 輕 量 級 行 程 threads 
Thread Pool 
排程問 題 
Context Switching 
建立 Thread的 成本 
…
到目前為止… 
14 
單 一 行 程 若 進 入IO,CPU效 能 則 無 法 發 揮 
多 行 程 並 行 , 提 升 了CPU效 能 
OS運 用 排 程 演 算 法 協 助 排 程 
改 用 輕 量 級 行 程 threads 
Thread Pool 
排程問 題 
Context Switching 
建立 Thread的 成本 
?? 
…
Multi-Processing / Multi-Threading (1) 
15 
•系統的資源通常是有限的 
–CPU週期、記憶體空間、檔案、I/O Device… 
當Process需要資源時…
Multi-Processing / Multi-Threading (1) 
15 
•系統的資源通常是有限的 
–CPU週期、記憶體空間、檔案、I/O Device… 
當Process需要資源時… 
Process提出 Request
Multi-Processing / Multi-Threading (1) 
15 
•系統的資源通常是有限的 
–CPU週期、記憶體空間、檔案、I/O Device… 
當Process需要資源時… 
Process提出 Request 
資源是 否足夠
Multi-Processing / Multi-Threading (1) 
15 
•系統的資源通常是有限的 
–CPU週期、記憶體空間、檔案、I/O Device… 
當Process需要資源時… 
Process提出 Request 
資源是 否足夠 
Yes 
Process使 用資源 
使用完畢, 釋放
Multi-Processing / Multi-Threading (1) 
15 
•系統的資源通常是有限的 
–CPU週期、記憶體空間、檔案、I/O Device… 
當Process需要資源時… 
Process提出 Request 
資源是 否足夠 
Yes 
Process使 用資源 
使用完畢, 釋放 
No 
Process等 待…
Multi-Processing / Multi-Threading (1) 
15 
•系統的資源通常是有限的 
–CPU週期、記憶體空間、檔案、I/O Device… 
當Process需要資源時… 
Process提出 Request 
資源是 否足夠 
Yes 
Process使 用資源 
使用完畢, 釋放 
No 
Process等 待…
16 
New 
Ready 
Running 
Terminate 
Wait 
(Block) 
Wait for I/O complete or resources available
16 
Thread 1 
R1 
used 
New 
Ready 
Running 
Terminate 
Wait 
(Block) 
Wait for I/O complete or resources available
16 
Thread 1 
R1 
used 
Thread 2 
R2 
used 
New 
Ready 
Running 
Terminate 
Wait (Block) 
Wait for I/O complete or resources available
16 
Thread 1 
R1 
used 
Thread 2 
R2 
used 
Wait 
New 
Ready 
Running 
Terminate 
Wait 
(Block) 
Wait for I/O complete or resources available
16 
Thread 1 
R1 
used 
Thread 2 
R2 
used 
Wait 
Wait 
New 
Ready 
Running 
Terminate 
Wait 
(Block) 
Wait for I/O complete or resources available
Deadlock: 系統中存在一組 Processes,彼此形成 circular waiting的情況,使 得Processes皆無法繼續往 下執行,導致CPU利用度 及產能急速下降。 
16 
Thread 1 
R1 
used 
Thread 2 
R2 
used 
Wait 
Wait 
New 
Ready 
Running 
Terminate 
Wait 
(Block) 
Wait for I/O complete or resources available
Deadlock 處理策略 
17 
T1 
R1 
used 
T2 
R2 
used 
Wait 
Wait
Deadlock 處理策略 
17 
•Deadlock形成的必要條件: 
•資源的Mutual Exclusion 
•Hold & Wait 
•No Preemptive 
•Circular waiting 
T1 
R1 
used 
T2 
R2 
used 
Wait 
Wait
Deadlock 處理策略 
•處理策略: 
–Deadlock Prevention 
–Deadlock Avoidance 
–Deadlock Detection & Recovery 
17 
•Deadlock形成的必要條件: 
•資源的Mutual Exclusion 
•Hold & Wait 
•No Preemptive 
•Circular waiting 
T1 
R1 
used 
T2 
R2 
used 
Wait 
Wait
Deadlock 處理策略 
•處理策略: 
–Deadlock Prevention 
–Deadlock Avoidance 
–Deadlock Detection & Recovery 
17 
•Deadlock形成的必要條件: 
•資源的Mutual Exclusion 
•Hold & Wait 
•No Preemptive 
•Circular waiting 
T1 
R1 
used 
T2 
R2 
used 
Wait 
Wait 
預防勝於治療
Deadlock 處理策略 
•處理策略: 
–Deadlock Prevention 
–Deadlock Avoidance 
–Deadlock Detection & Recovery 
17 
•Deadlock形成的必要條件: 
•資源的Mutual Exclusion 
•Hold & Wait 
•No Preemptive 
•Circular waiting 
T1 
R1 
used 
T2 
R2 
used 
Wait 
Wait 
預防勝於治療 
見到棺材才掉淚
Multi-Processing / Multi-Threading (2) 
•Communication 
–Shared Memory 
–Message Passing 
18 
Thread 1 
data 
Thread 2 
Memory / … 
Process 1 
Process 2 
Send Msg 
Process 1 
Process 2
Producer & Consumer 
19
Producer & Consumer 
19 
Bounded buffer Producer/Consumer Problem: 
(1) 當Buffer滿時,則Producer必須等待。 
(2) 當Buffer空時,則Consumer必須等待。
Producer & Consumer 
19 
Bounded buffer Producer/Consumer Problem: 
(1) 當Buffer滿時,則Producer必須等待。 
(2) 當Buffer空時,則Consumer必須等待。 
→ 採用一個共用變數count來記錄buffer裡item 的個數
Producer: 
生產一個item; 
while(count==size) 
do no-op; 
buffer[in] = item; 
in = (in+1) % size; 
count = count+1; 
20 
Consumer: 
while(count==0) 
do no-op; 
item = buffer[out]; 
out = (out+1) mod size; 
count = count-1;
Producer: 
生產一個item; 
while(count==size) 
do no-op; 
buffer[in] = item; 
in = (in+1) % size; 
count = count+1; 
20 
Consumer: 
while(count==0) 
do no-op; 
item = buffer[out]; 
out = (out+1) mod size; 
count = count-1; 
1.Producer跟 Consumer 是concurrent的 
2.共享count變數
Producer: 
生產一個item; 
while(count==size) 
do no-op; 
buffer[in] = item; 
in = (in+1) % size; 
count = count+1; 
20 
Consumer: 
while(count==0) 
do no-op; 
item = buffer[out]; 
out = (out+1) mod size; 
count = count-1; 
Registers 
1.Producer跟 Consumer 是concurrent的 
2.共享count變數
21 
Registers 
Producer (Thread1) count = count+1; 
Register1 = count …(1) 
Register1 = Register1 + 1 …(2) 
count = Register1 …(3) 
Consumer (Thread2) count = count-1; 
Register2 = count …(4) 
Register2 = Register2 – 1 …(5) 
count = Register2 …(6) 
count 
4 
Register2 
Register1 
1.Producer跟 Consumer 是concurrent的 
2.共享count變數 
3.CPU可被搶奪的 (e.g. SRJF) 
Not Atomic!!
21 
Registers 
Producer (Thread1) count = count+1; 
Register1 = count …(1) Register1 = Register1 + 1 …(2) count = Register1 …(3) 
Consumer (Thread2) count = count-1; 
Register2 = count …(4) Register2 = Register2 – 1 …(5) count = Register2 …(6) 
count 
4 
Register2 
4 
Register1 
1.Producer跟 Consumer 是concurrent的 
2.共享count變數 
3.CPU可被搶奪的 (e.g. SRJF) 
Not Atomic!!
21 
Registers 
Producer (Thread1) count = count+1; 
Register1 = count …(1) Register1 = Register1 + 1 …(2) count = Register1 …(3) 
Consumer (Thread2) count = count-1; 
Register2 = count …(4) Register2 = Register2 – 1 …(5) count = Register2 …(6) 
count 
4 
Register2 
4 
Register1 
5 
1.Producer跟 Consumer 是concurrent的 
2.共享count變數 
3.CPU可被搶奪的 (e.g. SRJF) 
Not Atomic!!
21 
Registers 
Producer (Thread1) count = count+1; 
Register1 = count …(1) 
Register1 = Register1 + 1 …(2) 
count = Register1 …(3) 
Consumer (Thread2) count = count-1; 
Register2 = count …(4) Register2 = Register2 – 1 …(5) count = Register2 …(6) 
count 
4 
Register2 
4 
Register1 
5 
5 
1.Producer跟 Consumer 是concurrent的 
2.共享count變數 
3.CPU可被搶奪的 (e.g. SRJF) 
Not Atomic!!
21 
Registers 
Producer (Thread1) count = count+1; 
Register1 = count …(1) Register1 = Register1 + 1 …(2) count = Register1 …(3) 
Consumer (Thread2) count = count-1; 
Register2 = count …(4) Register2 = Register2 – 1 …(5) count = Register2 …(6) 
count 
4 
Register2 
4 
Register1 
5 
5 
5 
1.Producer跟 Consumer 是concurrent的 
2.共享count變數 
3.CPU可被搶奪的 (e.g. SRJF) 
Not Atomic!!
21 
Registers 
Producer (Thread1) count = count+1; 
Register1 = count …(1) Register1 = Register1 + 1 …(2) count = Register1 …(3) 
Consumer (Thread2) count = count-1; 
Register2 = count …(4) Register2 = Register2 – 1 …(5) count = Register2 …(6) 
count 
4 
Register2 
4 
Register1 
5 
5 
5 
1.Producer跟 Consumer 是concurrent的 
2.共享count變數 
3.CPU可被搶奪的 (e.g. SRJF) 
4 
Not Atomic!!
21 
Registers 
Producer (Thread1) count = count+1; 
Register1 = count …(1) Register1 = Register1 + 1 …(2) count = Register1 …(3) 
Consumer (Thread2) count = count-1; 
Register2 = count …(4) Register2 = Register2 – 1 …(5) count = Register2 …(6) 
count 
4 
Register2 
4 
Register1 
5 
5 
5 
1.Producer跟 Consumer 是concurrent的 
2.共享count變數 
3.CPU可被搶奪的 (e.g. SRJF) 
4 
Not Atomic!!
21 
Registers 
Producer (Thread1) count = count+1; 
Consumer (Thread2) count = count-1; 
count 
4 
Register2 
4 
Register1 
5 
5 
1.Producer跟 Consumer 是concurrent的 
2.共享count變數 
3.CPU可被搶奪的 (e.g. SRJF) 
Register1 = count …(1) Register1 = Register1 + 1 …(2) count = Register1 …(5) 
Register2 = count …(3) Register2 = Register2 – 1 …(4) count = Register2 …(6) 
Not Atomic!!
21 
Registers 
Producer (Thread1) count = count+1; 
Consumer (Thread2) count = count-1; 
count 
4 
Register2 
4 
Register1 
5 
5 
1.Producer跟 Consumer 是concurrent的 
2.共享count變數 
3.CPU可被搶奪的 (e.g. SRJF) 
Register1 = count …(1) Register1 = Register1 + 1 …(2) count = Register1 …(5) 
Register2 = count …(3) Register2 = Register2 – 1 …(4) count = Register2 …(6) 
4 
Not Atomic!!
21 
Registers 
Producer (Thread1) count = count+1; 
Consumer (Thread2) count = count-1; 
count 
4 
Register2 
4 
Register1 
5 
5 
1.Producer跟 Consumer 是concurrent的 
2.共享count變數 
3.CPU可被搶奪的 (e.g. SRJF) 
Register1 = count …(1) Register1 = Register1 + 1 …(2) count = Register1 …(5) 
Register2 = count …(3) Register2 = Register2 – 1 …(4) count = Register2 …(6) 
4 
5 
Not Atomic!!
21 
Registers 
Producer (Thread1) count = count+1; 
Consumer (Thread2) count = count-1; 
count 
4 
Register2 
4 
Register1 
5 
5 
1.Producer跟 Consumer 是concurrent的 
2.共享count變數 
3.CPU可被搶奪的 (e.g. SRJF) 
Register1 = count …(1) Register1 = Register1 + 1 …(2) count = Register1 …(5) 
Register2 = count …(3) Register2 = Register2 – 1 …(4) count = Register2 …(6) 
4 
5 
4 
Not Atomic!!
21 
Registers 
Producer (Thread1) count = count+1; 
Consumer (Thread2) count = count-1; 
count 
4 
Register2 
4 
Register1 
5 
5 
1.Producer跟 Consumer 是concurrent的 
2.共享count變數 
3.CPU可被搶奪的 (e.g. SRJF) 
Register1 = count …(1) Register1 = Register1 + 1 …(2) count = Register1 …(5) 
Register2 = count …(3) Register2 = Register2 – 1 …(4) count = Register2 …(6) 
4 
5 
4 
3 
Not Atomic!!
21 
Registers 
Producer (Thread1) count = count+1; 
Consumer (Thread2) count = count-1; 
count 
4 
Register2 
4 
Register1 
5 
5 
1.Producer跟 Consumer 是concurrent的 
2.共享count變數 
3.CPU可被搶奪的 (e.g. SRJF) 
Register1 = count …(1) Register1 = Register1 + 1 …(2) count = Register1 …(5) 
Register2 = count …(3) Register2 = Register2 – 1 …(4) count = Register2 …(6) 
4 
5 
4 
3 
Not Atomic!!
21 
Registers 
Producer (Thread1) count = count+1; 
Consumer (Thread2) count = count-1; 
count 
4 
Register2 
4 
Register1 
5 
5 
1.Producer跟 Consumer 是concurrent的 
2.共享count變數 
3.CPU可被搶奪的 (e.g. SRJF) 
Register1 = count …(1) Register1 = Register1 + 1 …(2) count = Register1 …(5) 
Register2 = count …(3) Register2 = Register2 – 1 …(4) count = Register2 …(6) 
4 
5 
4 
3 
3 
Not Atomic!!
Race Condition 
•在Share Memory溝通方式下, 共享變數的值會因為 Processes執行的順序不同而 有所不同。 
22 
Producer count = count+1; 
Consumer: count = count-1;
Race Condition 
•在Share Memory溝通方式下, 共享變數的值會因為 Processes執行的順序不同而 有所不同。 
22 
Producer count = count+1; 
Consumer: count = count-1; 
保證同一時間只有一個 Process在存取共享變數
Critical Section 
23 
Repeat … C.S. … Until false 
Entry section 
Exit section
Critical Section 
23 
•Mutual Exclusion: 在任何時間點 最多允許一個process在其C.S.內 活動 
Repeat … C.S. … Until false 
Entry section 
Exit section
Critical Section 
23 
•Mutual Exclusion: 在任何時間點 最多允許一個process在其C.S.內 活動 
•Progress 
–不想進入C.S.的Process不能阻礙其 他process進入 
–在有限的時間內必須從想進入C.S. 的processes中決定出一個Process進 入C.S. 
Repeat … C.S. … Until false 
Entry section 
Exit section
Critical Section 
23 
•Mutual Exclusion: 在任何時間點 最多允許一個process在其C.S.內 活動 
•Progress 
–不想進入C.S.的Process不能阻礙其 他process進入 
–在有限的時間內必須從想進入C.S. 的processes中決定出一個Process進 入C.S. 
•Bounded Waiting: Process從提出 申請要進入C.S.到其獲准進入C.S. 的這段時間是有限的 
Repeat 
… 
C.S. 
… 
Until false 
Entry section 
Exit section
Critical Section 
23 
•Mutual Exclusion: 在任何時間點 最多允許一個process在其C.S.內 活動 
•Progress 
–不想進入C.S.的Process不能阻礙其 他process進入 
–在有限的時間內必須從想進入C.S. 的processes中決定出一個Process進 入C.S. 
•Bounded Waiting: Process從提出 申請要進入C.S.到其獲准進入C.S. 的這段時間是有限的 
No Deadlock 
Repeat … C.S. … Until false 
Entry section 
Exit section
Critical Section 
23 
•Mutual Exclusion: 在任何時間點 最多允許一個process在其C.S.內 活動 
•Progress 
–不想進入C.S.的Process不能阻礙其 他process進入 
–在有限的時間內必須從想進入C.S. 的processes中決定出一個Process進 入C.S. 
•Bounded Waiting: Process從提出 申請要進入C.S.到其獲准進入C.S. 的這段時間是有限的 
No Deadlock 
No Starvation 
Repeat … C.S. … Until false 
Entry section 
Exit section
C.S. Design – design entry/exit section 
•Software Solution 
•Hardware Solution 
•Semaphore 
•Monitor 
•Critical Region 
•… 
24 
Repeat … C.S. … Until false 
Entry section 
Exit section
Multi-Processing / Multi-Threading (3) 
•同步問題 
25 
P1 
P2 
… 
… 
A 
B 
… 
… 
如果我們希望A敘述 一定要在B敘述之前 執行,怎麼做?
Multi-Processing / Multi-Threading (3) 
•同步問題 
25 
P1 
P2 
… 
… 
A 
B 
… 
… 
如果我們希望A敘述 一定要在B敘述之前 執行,怎麼做? 
Wait(s){ 
while(s<=0) do no-op; 
s = s – 1; 
} 
Signal(s){ s++; }
Multi-Processing / Multi-Threading (3) 
•同步問題 
25 
P1 
P2 
… 
… 
A 
B 
… 
… 
如果我們希望A敘述 一定要在B敘述之前 執行,怎麼做? 
Wait(s){ while(s<=0) do no-op; s = s – 1; } 
Signal(s){ s++; } 
P1 
P2 
… 
… 
A 
B 
… 
… 
Signal(s) 
wait(s)
Multi-Processing / Multi-Threading (3) 
•同步問題 
25 
P1 
P2 
… 
… 
A 
B 
… 
… 
如果我們希望A敘述 一定要在B敘述之前 執行,怎麼做? 
Wait(s){ while(s<=0) do no-op; s = s – 1; } 
Signal(s){ s++; } 
P1 
P2 
… 
… 
A 
B 
… 
… 
Signal(s) 
wait(s)
Synchronization 
•著名的同步問題 
–Dining philosophers problem 
–Producer-consumer problem 
–Readers-writers problem 
–Sleeping barber problem 
•解法: 
–Semaphore 
–Monitor 
–Critical Region 
26
27 
單 一 行 程 若 進 入IO,CPU效 能 則 無 法 發 揮 
多 行 程 並 行 , 提 升 了CPU效 能 
OS運 用 排 程 演 算 法 協 助 排 程 
改 用 輕 量 級 行 程 threads 
Thread Pool 
排程 問題 
Context Switching 
建立 Thread 的成本
27 
單 一 行 程 若 進 入IO,CPU效 能 則 無 法 發 揮 
多 行 程 並 行 , 提 升 了CPU效 能 
OS運 用 排 程 演 算 法 協 助 排 程 
改 用 輕 量 級 行 程 threads 
Thread Pool 
排程 問題 
Context Switching 
建立 Thread 的成本 
溝通
27 
單 一 行 程 若 進 入IO,CPU效 能 則 無 法 發 揮 
多 行 程 並 行 , 提 升 了CPU效 能 
OS運 用 排 程 演 算 法 協 助 排 程 
改 用 輕 量 級 行 程 threads 
Thread Pool 
排程 問題 
Context Switching 
建立 Thread 的成本 
溝通 
Deadlock
27 
單 一 行 程 若 進 入IO,CPU效 能 則 無 法 發 揮 
多 行 程 並 行 , 提 升 了CPU效 能 
OS運 用 排 程 演 算 法 協 助 排 程 
改 用 輕 量 級 行 程 threads 
Thread Pool 
排程 問題 
Context Switching 
建立 Thread 的成本 
溝通 
Deadlock 
Deadlock Prevention Deadlock Avoidance Deadlock Detection & Recovery
27 
單 一 行 程 若 進 入IO,CPU效 能 則 無 法 發 揮 
多 行 程 並 行 , 提 升 了CPU效 能 
OS運 用 排 程 演 算 法 協 助 排 程 
改 用 輕 量 級 行 程 threads 
Thread Pool 
排程 問題 
Context Switching 
建立 Thread 的成本 
溝通 
共 享 記 憶 體 
訊 息 傳 遞 
Deadlock 
Deadlock Prevention Deadlock Avoidance Deadlock Detection & Recovery 
…
27 
單 一 行 程 若 進 入IO,CPU效 能 則 無 法 發 揮 
多 行 程 並 行 , 提 升 了CPU效 能 
OS運 用 排 程 演 算 法 協 助 排 程 
改 用 輕 量 級 行 程 threads 
Thread Pool 
排程 問題 
Context Switching 
建立 Thread 的成本 
溝通 
共 享 記 憶 體 
訊 息 傳 遞 
Deadlock 
Deadlock Prevention Deadlock Avoidance Deadlock Detection & Recovery 
… 
Race Condition
27 
單 一 行 程 若 進 入IO,CPU效 能 則 無 法 發 揮 
多 行 程 並 行 , 提 升 了CPU效 能 
OS運 用 排 程 演 算 法 協 助 排 程 
改 用 輕 量 級 行 程 threads 
Thread Pool 
排程 問題 
Context Switching 
建立 Thread 的成本 
溝通 
共 享 記 憶 體 
訊 息 傳 遞 
Deadlock 
Deadlock Prevention Deadlock Avoidance Deadlock Detection & Recovery 
… 
Race Condition 
同步問 題
27 
單 一 行 程 若 進 入IO,CPU效 能 則 無 法 發 揮 
多 行 程 並 行 , 提 升 了CPU效 能 
OS運 用 排 程 演 算 法 協 助 排 程 
改 用 輕 量 級 行 程 threads 
Thread Pool 
排程 問題 
Context Switching 
建立 Thread 的成本 
溝通 
共 享 記 憶 體 
訊 息 傳 遞 
Deadlock 
Deadlock Prevention Deadlock Avoidance Deadlock Detection & Recovery 
… 
Race Condition 
Critical Section 
同步問 題
27 
單 一 行 程 若 進 入IO,CPU效 能 則 無 法 發 揮 
多 行 程 並 行 , 提 升 了CPU效 能 
OS運 用 排 程 演 算 法 協 助 排 程 
改 用 輕 量 級 行 程 threads 
Thread Pool 
排程 問題 
Context Switching 
建立 Thread 的成本 
溝通 
共 享 記 憶 體 
訊 息 傳 遞 
Deadlock 
Deadlock Prevention Deadlock Avoidance Deadlock Detection & Recovery 
… 
Race Condition 
Critical Section 
Software Sol. Hardware Sol. 
Semaphore 
Monitor 
Critical Region 
… 
同步問 題
補充 
28
補充 
28

More Related Content

What's hot

الجزء5 جامع القراءات
الجزء5 جامع القراءاتالجزء5 جامع القراءات
الجزء5 جامع القراءاتسمير بسيوني
 
العدد والمعدود.pptx
العدد والمعدود.pptxالعدد والمعدود.pptx
العدد والمعدود.pptxhadziq1
 
系統程式 -- 第 5 章 連結與載入
系統程式 -- 第 5 章 連結與載入系統程式 -- 第 5 章 連結與載入
系統程式 -- 第 5 章 連結與載入鍾誠 陳鍾誠
 
أحسن البيان شرح طرق الطيبة برواية حفص بن سليمان
أحسن البيان شرح طرق الطيبة برواية حفص بن سليمانأحسن البيان شرح طرق الطيبة برواية حفص بن سليمان
أحسن البيان شرح طرق الطيبة برواية حفص بن سليمانسمير بسيوني
 
ملخص مواضع مرسوم الخط
ملخص مواضع مرسوم الخطملخص مواضع مرسوم الخط
ملخص مواضع مرسوم الخطسمير بسيوني
 
بغية المريد شرح المقدمة الجزرية
بغية المريد شرح المقدمة الجزريةبغية المريد شرح المقدمة الجزرية
بغية المريد شرح المقدمة الجزريةسمير بسيوني
 
النظام المنسق العالمى Hs code
النظام المنسق العالمى   Hs codeالنظام المنسق العالمى   Hs code
النظام المنسق العالمى Hs codeMedhat Saad Eldin
 
مكونات الكمبيوتر
مكونات الكمبيوترمكونات الكمبيوتر
مكونات الكمبيوترmeroana123
 
系統程式 -- 第 1 章 系統軟體
系統程式 -- 第 1 章 系統軟體系統程式 -- 第 1 章 系統軟體
系統程式 -- 第 1 章 系統軟體鍾誠 陳鍾誠
 
أساسيات تكنولوجيا المعلومات و نظام التشغيل.pdf
أساسيات تكنولوجيا المعلومات و نظام التشغيل.pdfأساسيات تكنولوجيا المعلومات و نظام التشغيل.pdf
أساسيات تكنولوجيا المعلومات و نظام التشغيل.pdfAhmedOthman511332
 
Músicas de cânticos - Coro m11 pardilhó
Músicas de cânticos - Coro m11 pardilhóMúsicas de cânticos - Coro m11 pardilhó
Músicas de cânticos - Coro m11 pardilhóParóquia Pardilhó
 
فقه شافعي - تيسير الإقناع 3 ث ترم أول علمي وادبي 2016
فقه شافعي - تيسير الإقناع 3 ث ترم أول علمي وادبي 2016فقه شافعي - تيسير الإقناع 3 ث ترم أول علمي وادبي 2016
فقه شافعي - تيسير الإقناع 3 ث ترم أول علمي وادبي 2016ThanawyaHome
 
السبيل إلى شرح السبيل باب التاءات
السبيل إلى شرح السبيل باب التاءاتالسبيل إلى شرح السبيل باب التاءات
السبيل إلى شرح السبيل باب التاءاتأحمد محمود
 

What's hot (20)

系統程式 -- 前言
系統程式 -- 前言系統程式 -- 前言
系統程式 -- 前言
 
الجزء5 جامع القراءات
الجزء5 جامع القراءاتالجزء5 جامع القراءات
الجزء5 جامع القراءات
 
العدد والمعدود.pptx
العدد والمعدود.pptxالعدد والمعدود.pptx
العدد والمعدود.pptx
 
系統程式 -- 第 5 章 連結與載入
系統程式 -- 第 5 章 連結與載入系統程式 -- 第 5 章 連結與載入
系統程式 -- 第 5 章 連結與載入
 
أحسن البيان شرح طرق الطيبة برواية حفص بن سليمان
أحسن البيان شرح طرق الطيبة برواية حفص بن سليمانأحسن البيان شرح طرق الطيبة برواية حفص بن سليمان
أحسن البيان شرح طرق الطيبة برواية حفص بن سليمان
 
Chapter2
Chapter2  Chapter2
Chapter2
 
ملخص مواضع مرسوم الخط
ملخص مواضع مرسوم الخطملخص مواضع مرسوم الخط
ملخص مواضع مرسوم الخط
 
بغية المريد شرح المقدمة الجزرية
بغية المريد شرح المقدمة الجزريةبغية المريد شرح المقدمة الجزرية
بغية المريد شرح المقدمة الجزرية
 
النظام المنسق العالمى Hs code
النظام المنسق العالمى   Hs codeالنظام المنسق العالمى   Hs code
النظام المنسق العالمى Hs code
 
مكونات الكمبيوتر
مكونات الكمبيوترمكونات الكمبيوتر
مكونات الكمبيوتر
 
מגילת רות
 מגילת רות מגילת רות
מגילת רות
 
系統程式 -- 第 1 章 系統軟體
系統程式 -- 第 1 章 系統軟體系統程式 -- 第 1 章 系統軟體
系統程式 -- 第 1 章 系統軟體
 
أساسيات تكنولوجيا المعلومات و نظام التشغيل.pdf
أساسيات تكنولوجيا المعلومات و نظام التشغيل.pdfأساسيات تكنولوجيا المعلومات و نظام التشغيل.pdf
أساسيات تكنولوجيا المعلومات و نظام التشغيل.pdf
 
مكونات الحاسوب
مكونات الحاسوبمكونات الحاسوب
مكونات الحاسوب
 
Músicas de cânticos - Coro m11 pardilhó
Músicas de cânticos - Coro m11 pardilhóMúsicas de cânticos - Coro m11 pardilhó
Músicas de cânticos - Coro m11 pardilhó
 
系統程式 -- 第 3 章
系統程式 -- 第 3 章系統程式 -- 第 3 章
系統程式 -- 第 3 章
 
فقه شافعي - تيسير الإقناع 3 ث ترم أول علمي وادبي 2016
فقه شافعي - تيسير الإقناع 3 ث ترم أول علمي وادبي 2016فقه شافعي - تيسير الإقناع 3 ث ترم أول علمي وادبي 2016
فقه شافعي - تيسير الإقناع 3 ث ترم أول علمي وادبي 2016
 
系統程式 -- 第 4 章
系統程式 -- 第 4 章系統程式 -- 第 4 章
系統程式 -- 第 4 章
 
系統程式 -- 第 0 章
系統程式 -- 第 0 章系統程式 -- 第 0 章
系統程式 -- 第 0 章
 
السبيل إلى شرح السبيل باب التاءات
السبيل إلى شرح السبيل باب التاءاتالسبيل إلى شرح السبيل باب التاءات
السبيل إلى شرح السبيل باب التاءات
 

Viewers also liked

20150604 docker 新手入門
20150604 docker 新手入門20150604 docker 新手入門
20150604 docker 新手入門azole Lai
 
高效能執行緒
高效能執行緒高效能執行緒
高效能執行緒Rick Wu
 
reading group 成為卓越程式設計師的38項必修法則(20~23)
reading group 成為卓越程式設計師的38項必修法則(20~23)reading group 成為卓越程式設計師的38項必修法則(20~23)
reading group 成為卓越程式設計師的38項必修法則(20~23)Chonpin HSU
 
怎樣寫出比較沒有問題的 Code
怎樣寫出比較沒有問題的 Code怎樣寫出比較沒有問題的 Code
怎樣寫出比較沒有問題的 CodeWeizhong Yang
 
電路學 - [第二章] 電路分析方法
電路學 - [第二章] 電路分析方法電路學 - [第二章] 電路分析方法
電路學 - [第二章] 電路分析方法Simen Li
 
電路學 - [第一章] 電路元件與基本定律
電路學 - [第一章] 電路元件與基本定律電路學 - [第一章] 電路元件與基本定律
電路學 - [第一章] 電路元件與基本定律Simen Li
 
API Token 入門
API Token 入門API Token 入門
API Token 入門Andrew Wu
 
大型 Web Application 轉移到 微服務的經驗分享
大型 Web Application 轉移到微服務的經驗分享大型 Web Application 轉移到微服務的經驗分享
大型 Web Application 轉移到 微服務的經驗分享Andrew Wu
 

Viewers also liked (10)

20150604 docker 新手入門
20150604 docker 新手入門20150604 docker 新手入門
20150604 docker 新手入門
 
高效能執行緒
高效能執行緒高效能執行緒
高效能執行緒
 
reading group 成為卓越程式設計師的38項必修法則(20~23)
reading group 成為卓越程式設計師的38項必修法則(20~23)reading group 成為卓越程式設計師的38項必修法則(20~23)
reading group 成為卓越程式設計師的38項必修法則(20~23)
 
貪食蛇
貪食蛇貪食蛇
貪食蛇
 
怎樣寫出比較沒有問題的 Code
怎樣寫出比較沒有問題的 Code怎樣寫出比較沒有問題的 Code
怎樣寫出比較沒有問題的 Code
 
Iottoolkit wot
Iottoolkit wotIottoolkit wot
Iottoolkit wot
 
電路學 - [第二章] 電路分析方法
電路學 - [第二章] 電路分析方法電路學 - [第二章] 電路分析方法
電路學 - [第二章] 電路分析方法
 
電路學 - [第一章] 電路元件與基本定律
電路學 - [第一章] 電路元件與基本定律電路學 - [第一章] 電路元件與基本定律
電路學 - [第一章] 電路元件與基本定律
 
API Token 入門
API Token 入門API Token 入門
API Token 入門
 
大型 Web Application 轉移到 微服務的經驗分享
大型 Web Application 轉移到微服務的經驗分享大型 Web Application 轉移到微服務的經驗分享
大型 Web Application 轉移到 微服務的經驗分享
 

Similar to 作業系統基本觀念複習

服务器端性能优化 提升Qps、rt
服务器端性能优化 提升Qps、rt服务器端性能优化 提升Qps、rt
服务器端性能优化 提升Qps、rt锐 张
 
作業系統祕笈(張逸)
作業系統祕笈(張逸)作業系統祕笈(張逸)
作業系統祕笈(張逸)逸 張
 
A bunch of hpc
A bunch of hpcA bunch of hpc
A bunch of hpcyiwei yang
 
Linux性能监控cpu内存io网络
Linux性能监控cpu内存io网络Linux性能监控cpu内存io网络
Linux性能监控cpu内存io网络lovingprince58
 
Linux期末 效能調教(kernel trnning)
Linux期末 效能調教(kernel trnning)Linux期末 效能調教(kernel trnning)
Linux期末 效能調教(kernel trnning)米米 林
 
Java线上应用问题排查方法和工具(空望)
Java线上应用问题排查方法和工具(空望)Java线上应用问题排查方法和工具(空望)
Java线上应用问题排查方法和工具(空望)ykdsg
 
服务器基准测试-叶金荣@CYOU-20121130
服务器基准测试-叶金荣@CYOU-20121130服务器基准测试-叶金荣@CYOU-20121130
服务器基准测试-叶金荣@CYOU-20121130Jinrong Ye
 
ch13-pv1-system-calls
ch13-pv1-system-callsch13-pv1-system-calls
ch13-pv1-system-callsyushiang fu
 
Pptv lb日志实时分析平台
Pptv lb日志实时分析平台Pptv lb日志实时分析平台
Pptv lb日志实时分析平台drewz lin
 
Java应用性能测试与分析
Java应用性能测试与分析Java应用性能测试与分析
Java应用性能测试与分析Frank Lee
 

Similar to 作業系統基本觀念複習 (10)

服务器端性能优化 提升Qps、rt
服务器端性能优化 提升Qps、rt服务器端性能优化 提升Qps、rt
服务器端性能优化 提升Qps、rt
 
作業系統祕笈(張逸)
作業系統祕笈(張逸)作業系統祕笈(張逸)
作業系統祕笈(張逸)
 
A bunch of hpc
A bunch of hpcA bunch of hpc
A bunch of hpc
 
Linux性能监控cpu内存io网络
Linux性能监控cpu内存io网络Linux性能监控cpu内存io网络
Linux性能监控cpu内存io网络
 
Linux期末 效能調教(kernel trnning)
Linux期末 效能調教(kernel trnning)Linux期末 效能調教(kernel trnning)
Linux期末 效能調教(kernel trnning)
 
Java线上应用问题排查方法和工具(空望)
Java线上应用问题排查方法和工具(空望)Java线上应用问题排查方法和工具(空望)
Java线上应用问题排查方法和工具(空望)
 
服务器基准测试-叶金荣@CYOU-20121130
服务器基准测试-叶金荣@CYOU-20121130服务器基准测试-叶金荣@CYOU-20121130
服务器基准测试-叶金荣@CYOU-20121130
 
ch13-pv1-system-calls
ch13-pv1-system-callsch13-pv1-system-calls
ch13-pv1-system-calls
 
Pptv lb日志实时分析平台
Pptv lb日志实时分析平台Pptv lb日志实时分析平台
Pptv lb日志实时分析平台
 
Java应用性能测试与分析
Java应用性能测试与分析Java应用性能测试与分析
Java应用性能测试与分析
 

More from azole Lai

AWS EC2 for beginner
AWS EC2 for beginnerAWS EC2 for beginner
AWS EC2 for beginnerazole Lai
 
Docker tutorial
Docker tutorialDocker tutorial
Docker tutorialazole Lai
 
singularly continuous
singularly continuoussingularly continuous
singularly continuousazole Lai
 
利用Javascript 與 html5開發線上遊戲_1骰子遊戲
利用Javascript 與 html5開發線上遊戲_1骰子遊戲利用Javascript 與 html5開發線上遊戲_1骰子遊戲
利用Javascript 與 html5開發線上遊戲_1骰子遊戲azole Lai
 
利用Javascript 與 html5開發線上遊戲_0基本概念
利用Javascript 與 html5開發線上遊戲_0基本概念利用Javascript 與 html5開發線上遊戲_0基本概念
利用Javascript 與 html5開發線上遊戲_0基本概念azole Lai
 
利用Javascript 與 html5開發線上遊戲_2彈力球
利用Javascript 與 html5開發線上遊戲_2彈力球利用Javascript 與 html5開發線上遊戲_2彈力球
利用Javascript 與 html5開發線上遊戲_2彈力球azole Lai
 
20130908 Change the world?
20130908 Change the world?20130908 Change the world?
20130908 Change the world?azole Lai
 

More from azole Lai (7)

AWS EC2 for beginner
AWS EC2 for beginnerAWS EC2 for beginner
AWS EC2 for beginner
 
Docker tutorial
Docker tutorialDocker tutorial
Docker tutorial
 
singularly continuous
singularly continuoussingularly continuous
singularly continuous
 
利用Javascript 與 html5開發線上遊戲_1骰子遊戲
利用Javascript 與 html5開發線上遊戲_1骰子遊戲利用Javascript 與 html5開發線上遊戲_1骰子遊戲
利用Javascript 與 html5開發線上遊戲_1骰子遊戲
 
利用Javascript 與 html5開發線上遊戲_0基本概念
利用Javascript 與 html5開發線上遊戲_0基本概念利用Javascript 與 html5開發線上遊戲_0基本概念
利用Javascript 與 html5開發線上遊戲_0基本概念
 
利用Javascript 與 html5開發線上遊戲_2彈力球
利用Javascript 與 html5開發線上遊戲_2彈力球利用Javascript 與 html5開發線上遊戲_2彈力球
利用Javascript 與 html5開發線上遊戲_2彈力球
 
20130908 Change the world?
20130908 Change the world?20130908 Change the world?
20130908 Change the world?
 

作業系統基本觀念複習

  • 1. 作業系統基本觀念複習 Process & Thread Yiling Lai 2011/8/24 1
  • 2. •恐龍書 Operating System Concepts Silberschatz, Galvin, Gagne 2
  • 3. 什麼是Process? •A program in execution. 執行中的程式 3
  • 4. 什麼是Process? •A program in execution. 執行中的程式 3
  • 5. 什麼是Process? •A program in execution. 執行中的程式 3
  • 6. 什麼是Process? •A program in execution. 執行中的程式 3 Text Section Data Section Heap Stack Program counter
  • 7. 什麼是Process? •A program in execution. 執行中的程式 3 Text Section Data Section Heap Stack Program counter Registers
  • 9. Process的一生 (STD) New Ready Load到memory裡, 準備搶CPU控制權 4 Ready Queue Job Queue
  • 10. Process的一生 (STD) New Ready Load到memory裡, 準備搶CPU控制權 4 Ready Queue PCB Process ID Process State PC CPU Registers …. Job Queue
  • 11. Process的一生 (STD) New Ready Running Load到memory裡, 準備搶CPU控制權 搶到CPU了 4 Ready Queue PCB Process ID Process State PC CPU Registers …. Job Queue
  • 12. Process的一生 (STD) New Ready Running Wait (Block) Wait for I/O complete or resources available Load到memory裡, 準備搶CPU控制權 搶到CPU了 4 Ready Queue PCB Process ID Process State PC CPU Registers …. Job Queue
  • 13. Process的一生 (STD) New Ready Running Wait (Block) Wait for I/O complete or resources available Load到memory裡, 準備搶CPU控制權 CPU被搶走了 搶到CPU了 4 Ready Queue PCB Process ID Process State PC CPU Registers …. Job Queue
  • 14. Process的一生 (STD) New Ready Running Terminate Wait (Block) Wait for I/O complete or resources available Load到memory裡, 準備搶CPU控制權 CPU被搶走了 搶到CPU了 4 Ready Queue PCB Process ID Process State PC CPU Registers …. Job Queue
  • 15. Process的一生 (STD) New Ready Running Terminate Wait (Block) Wait for I/O complete or resources available Load到memory裡, 準備搶CPU控制權 CPU被搶走了 搶到CPU了 4 Ready Queue PCB Process ID Process State PC CPU Registers …. Job Queue
  • 16. Process的一生 (STD) New Ready Running Terminate Wait (Block) Wait for I/O complete or resources available Load到memory裡, 準備搶CPU控制權 CPU被搶走了 我等著你回來~~ (好無聊啊!!) 搶到CPU了 4 Ready Queue PCB Process ID Process State PC CPU Registers …. Job Queue
  • 18. 多找幾個行程來填 補我的空虛與寂寞!! (Concurrent Processing) 你這個詐騙集 團!! 我才是真的 平行化好嘛! 5
  • 19. Parallel Processing 多找幾個行程來填 補我的空虛與寂寞!! (Concurrent Processing) 你這個詐騙集 團!! 我才是真的 平行化好嘛! P0 P1 P2 5
  • 20. Parallel Processing Concurrnt Processing P0 P1 P2 多找幾個行程來填 補我的空虛與寂寞!! (Concurrent Processing) 你這個詐騙集 團!! 我才是真的 平行化好嘛! P0 P1 P2 5
  • 21. Parallel Processing Concurrnt Processing P0 P1 P2 大家輪流使用CPU,但是怎麼輪?? 多找幾個行程來填 補我的空虛與寂寞!! (Concurrent Processing) 你這個詐騙集 團!! 我才是真的 平行化好嘛! P0 P1 P2 5
  • 22. 6
  • 23. 6
  • 24. 6
  • 26. 7
  • 27. 1.CPU的使用率(Utilization)要最大 2.工作產能(Throughput)要高 3.Process等待的時間要短 4.完成時間(Turnaround time)要短 5.資源利用率也要大 6.要公平 7.… 7
  • 28. 1.CPU的使用率(Utilization)要最大 2.工作產能(Throughput)要高 3.Process等待的時間要短 4.完成時間(Turnaround time)要短 5.資源利用率也要大 6.要公平 7.… •FIFO: First come first out •SJF: Shortest Job First •SRJF: Shortest Remaining Time Job First •Priority Scheduling •RR: Round Robin •….. 7
  • 29. 1.CPU的使用率(Utilization)要最大 2.工作產能(Throughput)要高 3.Process等待的時間要短 4.完成時間(Turnaround time)要短 5.資源利用率也要大 6.要公平 7.… •FIFO: First come first out •SJF: Shortest Job First •SRJF: Shortest Remaining Time Job First •Priority Scheduling •RR: Round Robin •….. 7 Scheduling Algorithm
  • 30. FIFO: 誰先來誰先做 SJF: 你要3個小時?我只要3分鐘,先給我用一下吧~ (SJF: shortest time job first) Process CPU Time P0 14 P1 5 P2 2 1.CPU的使用率要最大 2.工作產能要高 3.Process等待的時間要短 4.完成時間要短 5.資源利用率也要大 6.要公平 FIFO: SJF: 8
  • 31. FIFO: 誰先來誰先做 SJF: 你要3個小時?我只要3分鐘,先給我用一下吧~ (SJF: shortest time job first) Process CPU Time P0 14 P1 5 P2 2 P0 1.CPU的使用率要最大 2.工作產能要高 3.Process等待的時間要短 4.完成時間要短 5.資源利用率也要大 6.要公平 FIFO: SJF: 8
  • 32. FIFO: 誰先來誰先做 SJF: 你要3個小時?我只要3分鐘,先給我用一下吧~ (SJF: shortest time job first) Process CPU Time P0 14 P1 5 P2 2 P1 P0 1.CPU的使用率要最大 2.工作產能要高 3.Process等待的時間要短 4.完成時間要短 5.資源利用率也要大 6.要公平 FIFO: SJF: 8
  • 33. FIFO: 誰先來誰先做 SJF: 你要3個小時?我只要3分鐘,先給我用一下吧~ (SJF: shortest time job first) Process CPU Time P0 14 P1 5 P2 2 P2 P1 P0 1.CPU的使用率要最大 2.工作產能要高 3.Process等待的時間要短 4.完成時間要短 5.資源利用率也要大 6.要公平 FIFO: SJF: 8
  • 34. FIFO: 誰先來誰先做 SJF: 你要3個小時?我只要3分鐘,先給我用一下吧~ (SJF: shortest time job first) Process CPU Time P0 14 P1 5 P2 2 平均等待時間 = (0+ 14+19)/3 = 11 P2 P1 P0 2 5 14 1.CPU的使用率要最大 2.工作產能要高 3.Process等待的時間要短 4.完成時間要短 5.資源利用率也要大 6.要公平 FIFO: SJF: 8
  • 35. FIFO: 誰先來誰先做 SJF: 你要3個小時?我只要3分鐘,先給我用一下吧~ (SJF: shortest time job first) Process CPU Time P0 14 P1 5 P2 2 平均等待時間 = (0+ 14+19)/3 = 11 P2 P1 P0 2 5 14 1.CPU的使用率要最大 2.工作產能要高 3.Process等待的時間要短 4.完成時間要短 5.資源利用率也要大 6.要公平 FIFO: SJF: 8
  • 36. FIFO: 誰先來誰先做 SJF: 你要3個小時?我只要3分鐘,先給我用一下吧~ (SJF: shortest time job first) Process CPU Time P0 14 P1 5 P2 2 平均等待時間 = (0+ 14+19)/3 = 11 P2 P2 P1 P0 2 5 14 1.CPU的使用率要最大 2.工作產能要高 3.Process等待的時間要短 4.完成時間要短 5.資源利用率也要大 6.要公平 FIFO: SJF: 8
  • 37. FIFO: 誰先來誰先做 SJF: 你要3個小時?我只要3分鐘,先給我用一下吧~ (SJF: shortest time job first) Process CPU Time P0 14 P1 5 P2 2 平均等待時間 = (0+ 14+19)/3 = 11 P2 P1 P2 P1 P0 2 5 14 1.CPU的使用率要最大 2.工作產能要高 3.Process等待的時間要短 4.完成時間要短 5.資源利用率也要大 6.要公平 FIFO: SJF: 8
  • 38. FIFO: 誰先來誰先做 SJF: 你要3個小時?我只要3分鐘,先給我用一下吧~ (SJF: shortest time job first) Process CPU Time P0 14 P1 5 P2 2 平均等待時間 = (0+ 14+19)/3 = 11 P2 P1 P0 P2 P1 P0 2 5 14 1.CPU的使用率要最大 2.工作產能要高 3.Process等待的時間要短 4.完成時間要短 5.資源利用率也要大 6.要公平 FIFO: SJF: 8
  • 39. FIFO: 誰先來誰先做 SJF: 你要3個小時?我只要3分鐘,先給我用一下吧~ (SJF: shortest time job first) Process CPU Time P0 14 P1 5 P2 2 平均等待時間 = (0+2+7)/3 = 3 平均等待時間 = (0+ 14+19)/3 = 11 P2 P1 P0 2 5 14 P2 P1 P0 2 5 14 1.CPU的使用率要最大 2.工作產能要高 3.Process等待的時間要短 4.完成時間要短 5.資源利用率也要大 6.要公平 FIFO: SJF: 8
  • 40. FIFO: 誰先來誰先做 SJF: 你要3個小時?我只要3分鐘,先給我用一下吧~ (SJF: shortest time job first) Process CPU Time P0 14 P1 5 P2 2 平均等待時間 = (0+2+7)/3 = 3 平均等待時間 = (0+ 14+19)/3 = 11 P2 P1 P0 2 5 14 P2 P1 P0 2 5 14 1.CPU的使用率要最大 2.工作產能要高 3.Process等待的時間要短 4.完成時間要短 5.資源利用率也要大 6.要公平 FIFO: SJF: 8
  • 41. Process CPU Time P0 14 P1 5 P2 2 P2 P1 P0 9
  • 42. P2 P1 Process CPU Time P0 14 P1 5 P2 2 P2 P1 P0 9
  • 43. P2 P1 P3 Process CPU Time P0 14 P1 5 P2 2 P2 P1 P0 9
  • 44. P3 P2 P1 P2 P1 P3 Process CPU Time P0 14 P1 5 P2 2 P2 P1 P0 9
  • 45. P3 P2 P1 P2 P1 P3 P4 Process CPU Time P0 14 P1 5 P2 2 P2 P1 P0 9
  • 46. P3 P2 P1 P2 P1 P3 P4 PN …. Process CPU Time P0 14 P1 5 P2 2 P2 P1 P0 9
  • 47. P3 P2 P1 P2 P1 P3 P4 PN …. P4 P2 P1 …. PN Process CPU Time P0 14 P1 5 P2 2 P2 P1 P0 9
  • 48. P3 P2 P1 P2 P1 P3 P4 PN …. P4 P2 P1 …. PN Process CPU Time P0 14 P1 5 P2 2 P2 P1 P0 喂…那 我咧… P0 9
  • 49. P3 P2 P1 P2 P1 P3 P4 PN …. P4 P2 P1 …. PN Process CPU Time P0 14 P1 5 P2 2 P2 P1 P0 喂…那 我咧… P0 Starvation 飢餓:Process因為長 期無法取得完工所需的全部資 源,以致形成indefinite blocking 之現象。 解法:Aging Tech等… 9
  • 50. SRJF: Shortest Remaining Time Job First •可插隊的。 Process Arrival Time CPU Time P0 0 6 P1 1 4 P2 2 7 P3 3 3 P0 T0 T1 T2 T3 10 T1 T2 T3 T5 T20
  • 51. SRJF: Shortest Remaining Time Job First •可插隊的。 Process Arrival Time CPU Time P0 0 6 P1 1 4 P2 2 7 P3 3 3 P0 P1 T0 T1 T2 T3 10 T1 T2 T3 T5 T20
  • 52. SRJF: Shortest Remaining Time Job First •可插隊的。 Process Arrival Time CPU Time P0 0 6 P1 1 4 P2 2 7 P3 3 3 P0 P1 P0 P1 T0 T1 T2 T3 10 T1 T2 T3 T5 T20
  • 53. SRJF: Shortest Remaining Time Job First •可插隊的。 Process Arrival Time CPU Time P0 0 6 P1 1 4 P2 2 7 P3 3 3 P2 P0 P1 P0 P1 T0 T1 T2 T3 10 T1 T2 T3 T5 T20
  • 54. SRJF: Shortest Remaining Time Job First •可插隊的。 Process Arrival Time CPU Time P0 0 6 P1 1 4 P2 2 7 P3 3 3 P2 P0 P1 P0 P1 P0 P1 T0 T1 T2 T3 10 T1 T2 T3 T5 T20
  • 55. SRJF: Shortest Remaining Time Job First •可插隊的。 Process Arrival Time CPU Time P0 0 6 P1 1 4 P2 2 7 P3 3 3 P2 P0 P1 P0 P1 P0 P1 P3 T0 T1 T2 T3 10 T1 T2 T3 T5 T20
  • 56. SRJF: Shortest Remaining Time Job First •可插隊的。 Process Arrival Time CPU Time P0 0 6 P1 1 4 P2 2 7 P3 3 3 P2 P0 P1 P0 P1 P0 P1 P3 P0 P1 T0 T1 T2 T3 10 T1 T2 T3 T5 T20
  • 57. SRJF: Shortest Remaining Time Job First •可插隊的。 Process Arrival Time CPU Time P0 0 6 P1 1 4 P2 2 7 P3 3 3 P2 P0 P1 P0 P1 P0 P1 P3 P0 P1 P2 P0 P3 T0 T1 T2 T3 10 T1 T2 T3 T5 T20
  • 58. SRJF: Shortest Remaining Time Job First •可插隊的。 Process Arrival Time CPU Time P0 0 6 P1 1 4 P2 2 7 P3 3 3 P2 P0 P1 P0 P1 P0 P1 P3 P0 P1 P2 P0 P3 P0 P1 P3 P0 P2 T0 T1 T2 T3 10 T1 T2 T3 T5 T20
  • 59. New Ready Running Terminate Wait (Block) Load到memory裡, 準備搶CPU控制權 CPU被搶走了 搶到CPU了 Registers 11 PCB Process ID ReProcess State PC CPU gisters ….
  • 60. New Ready Running Terminate Wait (Block) Load到memory裡, 準備搶CPU控制權 CPU被搶走了 搶到CPU了 Registers 11 PCB Process ID ReProcess State PC CPU gisters ….
  • 61. New Ready Running Terminate Wait (Block) Load到memory裡, 準備搶CPU控制權 CPU被搶走了 搶到CPU了 Registers 11 PCB Process ID ReProcess State PC CPU gisters ….
  • 62. New Ready Running Terminate Wait (Block) Load到memory裡, 準備搶CPU控制權 CPU被搶走了 搶到CPU了 Registers Context Switching:若CPU將執行中的Process切換 給其他Process使用時,必須保存目前執行中 Process的狀態,並載入欲執行Process的狀態資訊。 11 PCB Process ID ReProcess State PC CPU gisters ….
  • 64. 問題是搬家是需要成本的… P0 P1 P2 太多Process並行效 能反而不如預期… 12
  • 65. 問題是搬家是需要成本的… P0 P1 P2 太多Process並行效 能反而不如預期… 解法1:提供多套Registers Registers 12
  • 66. 問題是搬家是需要成本的… P0 P1 P2 太多Process並行效 能反而不如預期… 解法1:提供多套Registers Registers 12
  • 67. 問題是搬家是需要成本的… P0 P1 P2 太多Process並行效 能反而不如預期… 解法1:提供多套Registers Registers 解法2:改用Thread~ Thread: Light weight process. 是 CPU分配資源的最小單位,而同 一個Process內的threads共享 code section, data section, 跟一 些OS資源 12
  • 68. 問題是搬家是需要成本的… P0 P1 P2 太多Process並行效 能反而不如預期… 解法1:提供多套Registers Registers 解法2:改用Thread~ Thread: Light weight process. 是 CPU分配資源的最小單位,而同 一個Process內的threads共享 code section, data section, 跟一 些OS資源 12
  • 70. 建立Thread也是有成本的 → 用空間換取時間~~ Thread Pool: 在Process建立之初,預先 建立多條threads置於thread pool中,當 需要使用時,就從thread pool中取出使 用,用完再還給thread pool。 13
  • 71. 到目前為止… 14 單 一 行 程 若 進 入IO,CPU效 能 則 無 法 發 揮
  • 72. 到目前為止… 14 單 一 行 程 若 進 入IO,CPU效 能 則 無 法 發 揮 多 行 程 並 行 , 提 升 了CPU效 能
  • 73. 到目前為止… 14 單 一 行 程 若 進 入IO,CPU效 能 則 無 法 發 揮 多 行 程 並 行 , 提 升 了CPU效 能 排程問 題
  • 74. 到目前為止… 14 單 一 行 程 若 進 入IO,CPU效 能 則 無 法 發 揮 多 行 程 並 行 , 提 升 了CPU效 能 OS運 用 排 程 演 算 法 協 助 排 程 排程問 題
  • 75. 到目前為止… 14 單 一 行 程 若 進 入IO,CPU效 能 則 無 法 發 揮 多 行 程 並 行 , 提 升 了CPU效 能 OS運 用 排 程 演 算 法 協 助 排 程 排程問 題 Context Switching
  • 76. 到目前為止… 14 單 一 行 程 若 進 入IO,CPU效 能 則 無 法 發 揮 多 行 程 並 行 , 提 升 了CPU效 能 OS運 用 排 程 演 算 法 協 助 排 程 改 用 輕 量 級 行 程 threads 排程問 題 Context Switching
  • 77. 到目前為止… 14 單 一 行 程 若 進 入IO,CPU效 能 則 無 法 發 揮 多 行 程 並 行 , 提 升 了CPU效 能 OS運 用 排 程 演 算 法 協 助 排 程 改 用 輕 量 級 行 程 threads 排程問 題 Context Switching 建立 Thread的 成本
  • 78. 到目前為止… 14 單 一 行 程 若 進 入IO,CPU效 能 則 無 法 發 揮 多 行 程 並 行 , 提 升 了CPU效 能 OS運 用 排 程 演 算 法 協 助 排 程 改 用 輕 量 級 行 程 threads Thread Pool 排程問 題 Context Switching 建立 Thread的 成本 …
  • 79. 到目前為止… 14 單 一 行 程 若 進 入IO,CPU效 能 則 無 法 發 揮 多 行 程 並 行 , 提 升 了CPU效 能 OS運 用 排 程 演 算 法 協 助 排 程 改 用 輕 量 級 行 程 threads Thread Pool 排程問 題 Context Switching 建立 Thread的 成本 ?? …
  • 80. Multi-Processing / Multi-Threading (1) 15 •系統的資源通常是有限的 –CPU週期、記憶體空間、檔案、I/O Device… 當Process需要資源時…
  • 81. Multi-Processing / Multi-Threading (1) 15 •系統的資源通常是有限的 –CPU週期、記憶體空間、檔案、I/O Device… 當Process需要資源時… Process提出 Request
  • 82. Multi-Processing / Multi-Threading (1) 15 •系統的資源通常是有限的 –CPU週期、記憶體空間、檔案、I/O Device… 當Process需要資源時… Process提出 Request 資源是 否足夠
  • 83. Multi-Processing / Multi-Threading (1) 15 •系統的資源通常是有限的 –CPU週期、記憶體空間、檔案、I/O Device… 當Process需要資源時… Process提出 Request 資源是 否足夠 Yes Process使 用資源 使用完畢, 釋放
  • 84. Multi-Processing / Multi-Threading (1) 15 •系統的資源通常是有限的 –CPU週期、記憶體空間、檔案、I/O Device… 當Process需要資源時… Process提出 Request 資源是 否足夠 Yes Process使 用資源 使用完畢, 釋放 No Process等 待…
  • 85. Multi-Processing / Multi-Threading (1) 15 •系統的資源通常是有限的 –CPU週期、記憶體空間、檔案、I/O Device… 當Process需要資源時… Process提出 Request 資源是 否足夠 Yes Process使 用資源 使用完畢, 釋放 No Process等 待…
  • 86. 16 New Ready Running Terminate Wait (Block) Wait for I/O complete or resources available
  • 87. 16 Thread 1 R1 used New Ready Running Terminate Wait (Block) Wait for I/O complete or resources available
  • 88. 16 Thread 1 R1 used Thread 2 R2 used New Ready Running Terminate Wait (Block) Wait for I/O complete or resources available
  • 89. 16 Thread 1 R1 used Thread 2 R2 used Wait New Ready Running Terminate Wait (Block) Wait for I/O complete or resources available
  • 90. 16 Thread 1 R1 used Thread 2 R2 used Wait Wait New Ready Running Terminate Wait (Block) Wait for I/O complete or resources available
  • 91. Deadlock: 系統中存在一組 Processes,彼此形成 circular waiting的情況,使 得Processes皆無法繼續往 下執行,導致CPU利用度 及產能急速下降。 16 Thread 1 R1 used Thread 2 R2 used Wait Wait New Ready Running Terminate Wait (Block) Wait for I/O complete or resources available
  • 92. Deadlock 處理策略 17 T1 R1 used T2 R2 used Wait Wait
  • 93. Deadlock 處理策略 17 •Deadlock形成的必要條件: •資源的Mutual Exclusion •Hold & Wait •No Preemptive •Circular waiting T1 R1 used T2 R2 used Wait Wait
  • 94. Deadlock 處理策略 •處理策略: –Deadlock Prevention –Deadlock Avoidance –Deadlock Detection & Recovery 17 •Deadlock形成的必要條件: •資源的Mutual Exclusion •Hold & Wait •No Preemptive •Circular waiting T1 R1 used T2 R2 used Wait Wait
  • 95. Deadlock 處理策略 •處理策略: –Deadlock Prevention –Deadlock Avoidance –Deadlock Detection & Recovery 17 •Deadlock形成的必要條件: •資源的Mutual Exclusion •Hold & Wait •No Preemptive •Circular waiting T1 R1 used T2 R2 used Wait Wait 預防勝於治療
  • 96. Deadlock 處理策略 •處理策略: –Deadlock Prevention –Deadlock Avoidance –Deadlock Detection & Recovery 17 •Deadlock形成的必要條件: •資源的Mutual Exclusion •Hold & Wait •No Preemptive •Circular waiting T1 R1 used T2 R2 used Wait Wait 預防勝於治療 見到棺材才掉淚
  • 97. Multi-Processing / Multi-Threading (2) •Communication –Shared Memory –Message Passing 18 Thread 1 data Thread 2 Memory / … Process 1 Process 2 Send Msg Process 1 Process 2
  • 99. Producer & Consumer 19 Bounded buffer Producer/Consumer Problem: (1) 當Buffer滿時,則Producer必須等待。 (2) 當Buffer空時,則Consumer必須等待。
  • 100. Producer & Consumer 19 Bounded buffer Producer/Consumer Problem: (1) 當Buffer滿時,則Producer必須等待。 (2) 當Buffer空時,則Consumer必須等待。 → 採用一個共用變數count來記錄buffer裡item 的個數
  • 101. Producer: 生產一個item; while(count==size) do no-op; buffer[in] = item; in = (in+1) % size; count = count+1; 20 Consumer: while(count==0) do no-op; item = buffer[out]; out = (out+1) mod size; count = count-1;
  • 102. Producer: 生產一個item; while(count==size) do no-op; buffer[in] = item; in = (in+1) % size; count = count+1; 20 Consumer: while(count==0) do no-op; item = buffer[out]; out = (out+1) mod size; count = count-1; 1.Producer跟 Consumer 是concurrent的 2.共享count變數
  • 103. Producer: 生產一個item; while(count==size) do no-op; buffer[in] = item; in = (in+1) % size; count = count+1; 20 Consumer: while(count==0) do no-op; item = buffer[out]; out = (out+1) mod size; count = count-1; Registers 1.Producer跟 Consumer 是concurrent的 2.共享count變數
  • 104. 21 Registers Producer (Thread1) count = count+1; Register1 = count …(1) Register1 = Register1 + 1 …(2) count = Register1 …(3) Consumer (Thread2) count = count-1; Register2 = count …(4) Register2 = Register2 – 1 …(5) count = Register2 …(6) count 4 Register2 Register1 1.Producer跟 Consumer 是concurrent的 2.共享count變數 3.CPU可被搶奪的 (e.g. SRJF) Not Atomic!!
  • 105. 21 Registers Producer (Thread1) count = count+1; Register1 = count …(1) Register1 = Register1 + 1 …(2) count = Register1 …(3) Consumer (Thread2) count = count-1; Register2 = count …(4) Register2 = Register2 – 1 …(5) count = Register2 …(6) count 4 Register2 4 Register1 1.Producer跟 Consumer 是concurrent的 2.共享count變數 3.CPU可被搶奪的 (e.g. SRJF) Not Atomic!!
  • 106. 21 Registers Producer (Thread1) count = count+1; Register1 = count …(1) Register1 = Register1 + 1 …(2) count = Register1 …(3) Consumer (Thread2) count = count-1; Register2 = count …(4) Register2 = Register2 – 1 …(5) count = Register2 …(6) count 4 Register2 4 Register1 5 1.Producer跟 Consumer 是concurrent的 2.共享count變數 3.CPU可被搶奪的 (e.g. SRJF) Not Atomic!!
  • 107. 21 Registers Producer (Thread1) count = count+1; Register1 = count …(1) Register1 = Register1 + 1 …(2) count = Register1 …(3) Consumer (Thread2) count = count-1; Register2 = count …(4) Register2 = Register2 – 1 …(5) count = Register2 …(6) count 4 Register2 4 Register1 5 5 1.Producer跟 Consumer 是concurrent的 2.共享count變數 3.CPU可被搶奪的 (e.g. SRJF) Not Atomic!!
  • 108. 21 Registers Producer (Thread1) count = count+1; Register1 = count …(1) Register1 = Register1 + 1 …(2) count = Register1 …(3) Consumer (Thread2) count = count-1; Register2 = count …(4) Register2 = Register2 – 1 …(5) count = Register2 …(6) count 4 Register2 4 Register1 5 5 5 1.Producer跟 Consumer 是concurrent的 2.共享count變數 3.CPU可被搶奪的 (e.g. SRJF) Not Atomic!!
  • 109. 21 Registers Producer (Thread1) count = count+1; Register1 = count …(1) Register1 = Register1 + 1 …(2) count = Register1 …(3) Consumer (Thread2) count = count-1; Register2 = count …(4) Register2 = Register2 – 1 …(5) count = Register2 …(6) count 4 Register2 4 Register1 5 5 5 1.Producer跟 Consumer 是concurrent的 2.共享count變數 3.CPU可被搶奪的 (e.g. SRJF) 4 Not Atomic!!
  • 110. 21 Registers Producer (Thread1) count = count+1; Register1 = count …(1) Register1 = Register1 + 1 …(2) count = Register1 …(3) Consumer (Thread2) count = count-1; Register2 = count …(4) Register2 = Register2 – 1 …(5) count = Register2 …(6) count 4 Register2 4 Register1 5 5 5 1.Producer跟 Consumer 是concurrent的 2.共享count變數 3.CPU可被搶奪的 (e.g. SRJF) 4 Not Atomic!!
  • 111. 21 Registers Producer (Thread1) count = count+1; Consumer (Thread2) count = count-1; count 4 Register2 4 Register1 5 5 1.Producer跟 Consumer 是concurrent的 2.共享count變數 3.CPU可被搶奪的 (e.g. SRJF) Register1 = count …(1) Register1 = Register1 + 1 …(2) count = Register1 …(5) Register2 = count …(3) Register2 = Register2 – 1 …(4) count = Register2 …(6) Not Atomic!!
  • 112. 21 Registers Producer (Thread1) count = count+1; Consumer (Thread2) count = count-1; count 4 Register2 4 Register1 5 5 1.Producer跟 Consumer 是concurrent的 2.共享count變數 3.CPU可被搶奪的 (e.g. SRJF) Register1 = count …(1) Register1 = Register1 + 1 …(2) count = Register1 …(5) Register2 = count …(3) Register2 = Register2 – 1 …(4) count = Register2 …(6) 4 Not Atomic!!
  • 113. 21 Registers Producer (Thread1) count = count+1; Consumer (Thread2) count = count-1; count 4 Register2 4 Register1 5 5 1.Producer跟 Consumer 是concurrent的 2.共享count變數 3.CPU可被搶奪的 (e.g. SRJF) Register1 = count …(1) Register1 = Register1 + 1 …(2) count = Register1 …(5) Register2 = count …(3) Register2 = Register2 – 1 …(4) count = Register2 …(6) 4 5 Not Atomic!!
  • 114. 21 Registers Producer (Thread1) count = count+1; Consumer (Thread2) count = count-1; count 4 Register2 4 Register1 5 5 1.Producer跟 Consumer 是concurrent的 2.共享count變數 3.CPU可被搶奪的 (e.g. SRJF) Register1 = count …(1) Register1 = Register1 + 1 …(2) count = Register1 …(5) Register2 = count …(3) Register2 = Register2 – 1 …(4) count = Register2 …(6) 4 5 4 Not Atomic!!
  • 115. 21 Registers Producer (Thread1) count = count+1; Consumer (Thread2) count = count-1; count 4 Register2 4 Register1 5 5 1.Producer跟 Consumer 是concurrent的 2.共享count變數 3.CPU可被搶奪的 (e.g. SRJF) Register1 = count …(1) Register1 = Register1 + 1 …(2) count = Register1 …(5) Register2 = count …(3) Register2 = Register2 – 1 …(4) count = Register2 …(6) 4 5 4 3 Not Atomic!!
  • 116. 21 Registers Producer (Thread1) count = count+1; Consumer (Thread2) count = count-1; count 4 Register2 4 Register1 5 5 1.Producer跟 Consumer 是concurrent的 2.共享count變數 3.CPU可被搶奪的 (e.g. SRJF) Register1 = count …(1) Register1 = Register1 + 1 …(2) count = Register1 …(5) Register2 = count …(3) Register2 = Register2 – 1 …(4) count = Register2 …(6) 4 5 4 3 Not Atomic!!
  • 117. 21 Registers Producer (Thread1) count = count+1; Consumer (Thread2) count = count-1; count 4 Register2 4 Register1 5 5 1.Producer跟 Consumer 是concurrent的 2.共享count變數 3.CPU可被搶奪的 (e.g. SRJF) Register1 = count …(1) Register1 = Register1 + 1 …(2) count = Register1 …(5) Register2 = count …(3) Register2 = Register2 – 1 …(4) count = Register2 …(6) 4 5 4 3 3 Not Atomic!!
  • 118. Race Condition •在Share Memory溝通方式下, 共享變數的值會因為 Processes執行的順序不同而 有所不同。 22 Producer count = count+1; Consumer: count = count-1;
  • 119. Race Condition •在Share Memory溝通方式下, 共享變數的值會因為 Processes執行的順序不同而 有所不同。 22 Producer count = count+1; Consumer: count = count-1; 保證同一時間只有一個 Process在存取共享變數
  • 120. Critical Section 23 Repeat … C.S. … Until false Entry section Exit section
  • 121. Critical Section 23 •Mutual Exclusion: 在任何時間點 最多允許一個process在其C.S.內 活動 Repeat … C.S. … Until false Entry section Exit section
  • 122. Critical Section 23 •Mutual Exclusion: 在任何時間點 最多允許一個process在其C.S.內 活動 •Progress –不想進入C.S.的Process不能阻礙其 他process進入 –在有限的時間內必須從想進入C.S. 的processes中決定出一個Process進 入C.S. Repeat … C.S. … Until false Entry section Exit section
  • 123. Critical Section 23 •Mutual Exclusion: 在任何時間點 最多允許一個process在其C.S.內 活動 •Progress –不想進入C.S.的Process不能阻礙其 他process進入 –在有限的時間內必須從想進入C.S. 的processes中決定出一個Process進 入C.S. •Bounded Waiting: Process從提出 申請要進入C.S.到其獲准進入C.S. 的這段時間是有限的 Repeat … C.S. … Until false Entry section Exit section
  • 124. Critical Section 23 •Mutual Exclusion: 在任何時間點 最多允許一個process在其C.S.內 活動 •Progress –不想進入C.S.的Process不能阻礙其 他process進入 –在有限的時間內必須從想進入C.S. 的processes中決定出一個Process進 入C.S. •Bounded Waiting: Process從提出 申請要進入C.S.到其獲准進入C.S. 的這段時間是有限的 No Deadlock Repeat … C.S. … Until false Entry section Exit section
  • 125. Critical Section 23 •Mutual Exclusion: 在任何時間點 最多允許一個process在其C.S.內 活動 •Progress –不想進入C.S.的Process不能阻礙其 他process進入 –在有限的時間內必須從想進入C.S. 的processes中決定出一個Process進 入C.S. •Bounded Waiting: Process從提出 申請要進入C.S.到其獲准進入C.S. 的這段時間是有限的 No Deadlock No Starvation Repeat … C.S. … Until false Entry section Exit section
  • 126. C.S. Design – design entry/exit section •Software Solution •Hardware Solution •Semaphore •Monitor •Critical Region •… 24 Repeat … C.S. … Until false Entry section Exit section
  • 127. Multi-Processing / Multi-Threading (3) •同步問題 25 P1 P2 … … A B … … 如果我們希望A敘述 一定要在B敘述之前 執行,怎麼做?
  • 128. Multi-Processing / Multi-Threading (3) •同步問題 25 P1 P2 … … A B … … 如果我們希望A敘述 一定要在B敘述之前 執行,怎麼做? Wait(s){ while(s<=0) do no-op; s = s – 1; } Signal(s){ s++; }
  • 129. Multi-Processing / Multi-Threading (3) •同步問題 25 P1 P2 … … A B … … 如果我們希望A敘述 一定要在B敘述之前 執行,怎麼做? Wait(s){ while(s<=0) do no-op; s = s – 1; } Signal(s){ s++; } P1 P2 … … A B … … Signal(s) wait(s)
  • 130. Multi-Processing / Multi-Threading (3) •同步問題 25 P1 P2 … … A B … … 如果我們希望A敘述 一定要在B敘述之前 執行,怎麼做? Wait(s){ while(s<=0) do no-op; s = s – 1; } Signal(s){ s++; } P1 P2 … … A B … … Signal(s) wait(s)
  • 131. Synchronization •著名的同步問題 –Dining philosophers problem –Producer-consumer problem –Readers-writers problem –Sleeping barber problem •解法: –Semaphore –Monitor –Critical Region 26
  • 132. 27 單 一 行 程 若 進 入IO,CPU效 能 則 無 法 發 揮 多 行 程 並 行 , 提 升 了CPU效 能 OS運 用 排 程 演 算 法 協 助 排 程 改 用 輕 量 級 行 程 threads Thread Pool 排程 問題 Context Switching 建立 Thread 的成本
  • 133. 27 單 一 行 程 若 進 入IO,CPU效 能 則 無 法 發 揮 多 行 程 並 行 , 提 升 了CPU效 能 OS運 用 排 程 演 算 法 協 助 排 程 改 用 輕 量 級 行 程 threads Thread Pool 排程 問題 Context Switching 建立 Thread 的成本 溝通
  • 134. 27 單 一 行 程 若 進 入IO,CPU效 能 則 無 法 發 揮 多 行 程 並 行 , 提 升 了CPU效 能 OS運 用 排 程 演 算 法 協 助 排 程 改 用 輕 量 級 行 程 threads Thread Pool 排程 問題 Context Switching 建立 Thread 的成本 溝通 Deadlock
  • 135. 27 單 一 行 程 若 進 入IO,CPU效 能 則 無 法 發 揮 多 行 程 並 行 , 提 升 了CPU效 能 OS運 用 排 程 演 算 法 協 助 排 程 改 用 輕 量 級 行 程 threads Thread Pool 排程 問題 Context Switching 建立 Thread 的成本 溝通 Deadlock Deadlock Prevention Deadlock Avoidance Deadlock Detection & Recovery
  • 136. 27 單 一 行 程 若 進 入IO,CPU效 能 則 無 法 發 揮 多 行 程 並 行 , 提 升 了CPU效 能 OS運 用 排 程 演 算 法 協 助 排 程 改 用 輕 量 級 行 程 threads Thread Pool 排程 問題 Context Switching 建立 Thread 的成本 溝通 共 享 記 憶 體 訊 息 傳 遞 Deadlock Deadlock Prevention Deadlock Avoidance Deadlock Detection & Recovery …
  • 137. 27 單 一 行 程 若 進 入IO,CPU效 能 則 無 法 發 揮 多 行 程 並 行 , 提 升 了CPU效 能 OS運 用 排 程 演 算 法 協 助 排 程 改 用 輕 量 級 行 程 threads Thread Pool 排程 問題 Context Switching 建立 Thread 的成本 溝通 共 享 記 憶 體 訊 息 傳 遞 Deadlock Deadlock Prevention Deadlock Avoidance Deadlock Detection & Recovery … Race Condition
  • 138. 27 單 一 行 程 若 進 入IO,CPU效 能 則 無 法 發 揮 多 行 程 並 行 , 提 升 了CPU效 能 OS運 用 排 程 演 算 法 協 助 排 程 改 用 輕 量 級 行 程 threads Thread Pool 排程 問題 Context Switching 建立 Thread 的成本 溝通 共 享 記 憶 體 訊 息 傳 遞 Deadlock Deadlock Prevention Deadlock Avoidance Deadlock Detection & Recovery … Race Condition 同步問 題
  • 139. 27 單 一 行 程 若 進 入IO,CPU效 能 則 無 法 發 揮 多 行 程 並 行 , 提 升 了CPU效 能 OS運 用 排 程 演 算 法 協 助 排 程 改 用 輕 量 級 行 程 threads Thread Pool 排程 問題 Context Switching 建立 Thread 的成本 溝通 共 享 記 憶 體 訊 息 傳 遞 Deadlock Deadlock Prevention Deadlock Avoidance Deadlock Detection & Recovery … Race Condition Critical Section 同步問 題
  • 140. 27 單 一 行 程 若 進 入IO,CPU效 能 則 無 法 發 揮 多 行 程 並 行 , 提 升 了CPU效 能 OS運 用 排 程 演 算 法 協 助 排 程 改 用 輕 量 級 行 程 threads Thread Pool 排程 問題 Context Switching 建立 Thread 的成本 溝通 共 享 記 憶 體 訊 息 傳 遞 Deadlock Deadlock Prevention Deadlock Avoidance Deadlock Detection & Recovery … Race Condition Critical Section Software Sol. Hardware Sol. Semaphore Monitor Critical Region … 同步問 題