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