Post on 05-Jan-2016
description
1p.01
作業系統簡介作業系統簡介
2p.01
作業系統作業系統 (Operating System)(Operating System) 的目的的目的
1. 方便的人機介面 命令列介面: Command line ,如 DOS 圖形化使用者介面: GUI (Graphic User Interface) ,
如 Windows XP , Mac OS 等2. 有效的管理資源
1. Memory :虛擬記憶體 (virtual memory)
2. Processor :程序排程 (process scheduling)
3. Device :死結 (dead lock)
4. Information :檔案 (file)
5. Others :載入 (loader) ,鏈結 (linker) ,庫存程式 (library) ,公用程式 (utility)
3p.01
計算機作業方式計算機作業方式
1. Batch( 批次 ) :將程式及資料事先準備好 ( 一疊卡片,一個 .bat 檔 ) 交給電腦一次完成。 適用於周期性,時效要求低的作業。如:聯考閱卷,
稅務申報等。2. Real Time( 即時 ) :輸入資料後立即處理,並在
一定時限內產生輸出。 (Response time ≦ 時限 ) 用於 Special-Purpose 電腦系統,如飛機自動導航 / 駕
駛系統,證卷交易系統。 ( 事關人命,金錢交易 )
4p.01
計算機作業方式計算機作業方式3. On-Line( 線上作業 ) Off-Line( 離線作業 )
I/O 設備與主機有實體連線,能立即作 I/O 處理,為 Real time 的必要條件。
變化:分散式系統中,電腦透過網路,與系統取得連線。
4. Time-Sharing( 分時作業 ) Multiprogramming 的一種,各程式分配一段時間輪
流交替執行,為最普遍的執行方式 ( 公平,簡單,效果不錯 )
Multiprogramming :電腦 Memory 內有 2 個以上互不相關的程式可同時被執行, CPU 交替執行之,使得 User 產生電腦專屬執行某一程式的錯覺。
由 OS 控制
5p.01
計算機作業方式計算機作業方式
5. Multiprogramming( 多工程式處理 )-1970’s 同時 (currently) 執行數個程式 ( 以軟體方式 ) ,各個
程式感覺是同時執行。6. Multiprocessing( 多元處理 )-1970’s
同時 (simultaneously) 執行數個程式 ( 以硬體方式 ) ,格個程式真正是同時執行。
7. Multitasking( 多工處理 )-1980’s 電腦 Memory 內有 2 個以上屬於同一程式的工作 (tas
k) 可被同時執行。 Task :執行一個特定功能的一段程序 ( 副程式 )
8. Multithreading( 多序執行 )-1990’s 如 Java
6p.01
Virtual MemoryVirtual Memory 虛擬記憶體虛擬記憶體 優點
1. 使 User 的程式不受實際 Memory 容量的限制。2. Memory 內部程式 / 資料的保護。3. Memory 內部資訊的共享 (sharing) 。
作法1. Demand Page( 分頁 ) :以 Mem 的使用為主,將程式
/ 資料分成等量大小 ( 頁 ) ,沒有 fragment( 碎片 ) 。2. Demand Segment( 分段 ) :以程式的保護為主,根據
程式性質,分成數個大小不同的區段 ( 段 ) ,有 fragment ( 碎片 ) 。
7p.01
Virtual MemoryVirtual Memory 虛擬記憶體虛擬記憶體 Page Fault 代換策略
1. FIFO (First In First Out) 先進先出,最直觀,效果差
2. LRU (Least Recently Used) 最近最久未用,合理
3. Optimal 最晚才會再用,最佳,理論上限
4. Random :實際上使用
CPU Main Memory
Page frame
Page frame
Page frame
Page frame
HardDisk
Page 1
Page 2
Page 3
Page 4
Page 5
Page 6
Page 7
Page 8
Page 9
Page 10
某段程式或一段資
料
例: CPU 需要順序 ( 頁參考順序 ) : 1,3,6,9,10,4,7…
Page 1
Page 3
Page 6
Page 9? Page Fault
8p.01
Page Fault Page Fault 代換策略實作代換策略實作 FIFO( 先進先出 )
頁參考順序: 0,1,2,3,4,2,1,5,6,7,2,3,7,4,5,6,0
Page frame=3
參考順序 0 1 2 3 4 2 1 5 6 7 2 3 7 4 5 6 0
PF 0
PF 1
PF2
Page Fault * * * * * * * * * * * *
0 0 0 0 3 3 3 3 5 5 5 2 2 2 2 5 5
1 1 1 1 4 4 4 4 6 6 6 3 3 3 3 6
2 2 2 2 2 1 1 1 7 7 7 7 4 4 4
共發生 page fault ( * )= 次
3
4
* * *
1
5
6
7
2
3
4
5
6
0
15
9p.01
自我練習自我練習 FIFO( 先進先出 )
頁參考順序: 1,2,3,4,5,0,1,4,5,6,7,4,5,6,7,1,0
Page frame=4
參考順序
PF 0
PF 1
PF 2
PF 3
Fault
共發生 page fault ( * )= 次
10p.01
0
Page Fault Page Fault 代換策略實作代換策略實作 LRU( 最近最久未用 ) Least Recently Used
頁參考順序: 0,1,2,3,4,2,1,5,6,7,2,3,7,4,5,6,0 Page frame=3
參考順序 0 1 2 3 4 2 1 5 6 7 2 3 7 4 5 6 0
PF 0
PF 1
PF2
Page Fault * * * * * * * * * * * *
0
共發生 page fault ( * )= 次
3
* * *
15
0 3 3 3 1 1 1 7 7 7 7 7 7 60
1 1 1 4 4 4 5 5 5 2 2 2 4 4 41
2 2 2 2 2 2 6 6 6 3 3 3 5 52
4
1
5
6
7
2
3
4
5
6
0
11p.01
自我練習自我練習 LRU( 最近最久未用 ) Least Recently Used
頁參考順序: 1,2,3,4,5,0,1,4,5,6,7,4,5,6,7,1,0 Page frame=4
參考順序
PF 0
PF 1
PF 2
PF 3
Fault
共發生 page fault ( * )= 次
12p.01
Page Fault Page Fault 代換策略實作代換策略實作 Optimal( 取代最晚才會再用的 ) 效果最好理論上限,但
不可行 頁參考順序: 0,1,2,3,4,2,1,5,6,7,2,3,7,4,5,6,0 Page frame=3
參考順序 0 1 2 3 4 2 1 5 6 7 2 3 7 4 5 6 0
PF 0
PF 1
PF2
Page Fault * * * * * * * * * * * *
0
共發生 page fault ( * )= 次12
0 0 0 3 4 4 4 4 4 4 4 4 4 4 5 5
1 1 1 1 1 1 1 5 6 7 7 7 7 7 7 6
2 2 2 2 2 2 2 2 2 2 3 3 3 3 3
3 4
5 6 7
3
5
6
0
13p.01
自我練習自我練習 Optimal( 取代最晚才會再用的 )
頁參考順序: 1,2,3,4,5,0,1,4,5,6,7,4,5,6,7,1,0 Page frame=4
參考順序
PF 0
PF 1
PF 2
PF 3
Fault
共發生 page fault ( * )= 次
14p.01
Process Management (Process Management ( 程序管理程序管理 ))
Process ( 程序 ) 一段執行中的程式碼 (a program in execution)
Process 的 STD (State Transition Diagram) 狀態轉換圖
User1 submit Job1
User2 submit Job2
Usern submit Jobn
… Jn…J3,J2,J1
Job Queue
Ready
Pn…P3,P2,P1
Ready Queue
RUN
WAIT
Time out
等 I/O 完成
I/O 已完成
MemoryDisk
: Long-term scheduler ( 長程排程器 )
Complete
: Short-term scheduler ( 短程排程器 ) : Medium-term scheduler ( 中程排程器 )
15p.01
Process Management (Process Management ( 程序管理程序管理 ))
Process Scheduler ( 程序排程器 ) 的目標 System Balance ( 系統平衡 )
程序大致可分為1. I/O bound :大多數時間在做 I/O ,如 Word 。2. CPU bound :大多數時間在跑 CPU ,如 TV game 。
Scheduler( 排程器 ) 為使 CPU , I/O 同時忙碌,故以 I/O bound process( 程序 ) 為優先選擇。
16p.01
Process Management (Process Management ( 程序管理程序管理 ))
Process 的排程策略1. Non-Preemptive( 不可插隊式 )
1. FCFS (First Come First Serve) :先來先做2. SJF (Shortest Job First) :最短先做
2. Preemptive( 可插隊式 ) 3. RR (Round-Robin) :啄木鳥 /Time-sharing ,適用於一般電
腦。4. SRTF (Shortest Remaining Time First) :最短剩餘時間優先。
解釋名詞: Average Turnaround Time :平均迴轉時間
程序從進入 ready queue 後,到全部完成的平均時間。 Average Waiting Time :平均等待時間
程序從進入 ready queue 後,到全部完成的平均等待時間。
17p.01
Process Scheduling Process Scheduling 程序排程程序排程 Non-Preemptive ( 不可插隊式 )
1. FCFS 先來先做 (First Come First Serve)
Process # Burst Time Arrived Time
1 10 0
2 4 3
3 5 5
4 4 7
p4
p3
P2
p1
30 5 7 10 14 19 23
Average Waiting Time
Average Turnaround Time
●
●
●
●
代表 process 已經進入 ready queue 中等待,但尚未執行
代表 process 進入 CPU 中開始執行
=(0+(10-3)+(14-5)+(19-7))/4=7#
=(10+(14-3)+(19-5)+(23-7))/4=12.75#
18p.01
自我練習自我練習 Non-Preemptive ( 不可插隊式 )
FCFS 先來先做 (First Come First Serve)
Process # Burst Time Arrived Time
1 10 0
2 6 3
3 3 5
4 5 7
p4
p3
P2
p1
Average Waiting Time=? Average Turnaround Time=?
19p.01
Process Scheduling Process Scheduling 程序排程程序排程 Non-Preemptive ( 不可插隊式 )
SJF 最短先做 (Shortest Job First)
Process # Burst Time Arrived Time
1 10 0
2 4 3
3 5 5
4 4 7
p4
p3
P2
p1
30 5 7 10 14 18 23
Average Waiting Time
=(0+(10-3)+(18-5)+(14-7))/4=6.75#
Average Turnaround Time
=(10+(14-3)+(23-5)+(18-7))/4=12.5#
●
●
●
●
20p.01
自我練習自我練習 Non-Preemptive ( 不可插隊式 )
SJF 最短先做 (Shortest Job First)
Process # Burst Time Arrived Time
1 10 0
2 6 3
3 3 5
4 5 7
p4
p3
P2
p1
Average Waiting Time=? Average Turnaround Time=?
21p.01
Process Scheduling Process Scheduling 程序排程程序排程 Preemptive ( 可插隊式 )
SRTF 剩餘最短時間先做 (Shortest Remaining Time First)
Process # Burst Time Arrived Time
1 10 0
2 4 3
3 5 5
4 4 7
p4
p3
P2
p1
30 5 7 11 16 23
Average Waiting Time
=((16-3)+0+(11-5)+0)/4=4.75#
Average Turnaround Time
=((23-0)+(7-3)+(16-5)+(11-7))/4=10.5#
●
●
●
●
22p.01
自我練習自我練習 Preemptive ( 可插隊式 )
SRTF 剩餘最短時間先做 (Shortest Remaining Time First)
Process # Burst Time Arrived Time
1 10 0
2 6 3
3 3 5
4 5 7
p4
p3
P2
p1
Average Waiting Time=? Average Turnaround Time=?
23p.01
Process Scheduling Process Scheduling 程序排程程序排程 Preemptive ( 可插隊式 )
RR 啄木鳥 (Round-robin)
Process # Burst Time Arrived Time
1 10 0
2 4 3
3 5 5
4 4 7
p4
p3
P2
p1
30 5 7 10 14 23
Average Waiting Time
=(12+(1+4)+(3+6+4)+(5+4))/4=9.75#
Average Turnaround Time
=((22+(12-3)+(23-5)+(20-7))/4=15.5#
●
●
●
●
Time slice( 時間間隔 )=2
2 4 6 8 12 18 222016
24p.01
自我練習自我練習 Preemptive ( 可插隊式 )
RR 啄木鳥 (Round-robin)
Process # Burst Time Arrived Time
1 10 0
2 6 3
3 3 5
4 5 7
p4
p3
P2
p1
Average Waiting Time=? Average Turnaround Time=?
25p.01
Device Management (Device Management ( 設備管理設備管理 ))
Device ( 設備 ) 分為1. Dedicated( 專屬 ) :如 printer, tape2. Shared( 共用 ) :如 Memory, Disk
Race Condition( 競賽現象 ) 當 O.S 安排程式使用資源的次序不當所產生的錯誤現
象。 ( 將專屬的 Device 當成共用的 Device 使用,就會產生 Race
Condition) 如:將一台 printer 當成共用 Device , 2 個以上的程式同時要
求列印時,會產生什麼狀況? 解決之道:
1. 程式中加入“要求 printer” 及“釋放”指令2. 對專屬 Device 做 Mutual Exclusion( 互相排斥 ) 控制
26p.01
Device Management (Device Management ( 設備管理設備管理 ))
Process 1
要求 printer
要求 tape
釋放 tape
釋放 printer
Process 2
要求 tape
要求 printer
釋放 tape
釋放 printer
P1 P2
printer
tape
等
等
Dead lock ( 死結 )
27p.01
Dead lock (Dead lock ( 死結死結 ))
Dead lock 發生之四大必要條件 ( 缺一不可 )1. Mutual Exclusion ( 互斥 )2. Hold & Wait ( 持有並等待 )3. Non-preemptive ( 不可強佔 )4. Circuit Waiting ( 循環等待 )
Dead lock 的解決1. Prevention ( 預防 ) 釜底抽薪 破除任一必要條件,使
Dead lock 不可能發生。2. Avoidance ( 避免 ) 步步為營 O.S 分配資源時,先判
斷是否導致 Dead lock 發生。3. Detection & Recovery ( 偵測及復原 ) 見機行事 Dea
d lock 發生後,犧牲某一方釋放資源,打開 Dead lock 。4. 鴕鳥法 不解決 關電源重新開機。
28p.01
其他系統之管理其他系統之管理 程式在執行前所需要的步驟:
Source code 程式碼
Object code
Execution code
CPU
Compiler 編譯程式
Linker 鏈結程式
Loader 載入程式
29p.01
其他系統之管理其他系統之管理
Main ( )
{int x;
scanf(“%d”,&x);
}
……
主程式
.Obj0
1
2
3
S1S2
call scanf
mov x,ax
……
…
a
x…
程式
段
資料
段
2000020001
Logical/virtual address
Compiler
…30001
.exe
0
1
2
3
S1S2
call 20001
mov 35301,ax
……
…
a
x…
程式
段
資料
段
20000
25101
…
35101
Linker
…scanf( ) 20001
25100
定位 鏈結
定位:決定程式各模組之位置關係
鏈結:解決程式跨段參考的問題
30p.01
其他系統之管理其他系統之管理.exe
0
1
2
3
S1S2
call 20001
mov 35301,ax
……
…
a
x…
程式
段
資料
段
20000
25101
…
35101
…scanf( ) 20001
25100
Linker
定位 鏈結
Loader
重定位 ( 改位址 ) 載入 (copy)
memory
100000
100001
100002
S1S2
call 120001
mov 135301,ax
……
…
a
x…
程式
段
資料
段
120000
125101
…
135101
…scanf( ) 120001
125100
A.exe
B.exe
執行
Physical/realaddress
重定位:根據實際載入位址,調整指令或資料的位址
載入:載入程式