180 likes | 356 Views
CPU 排程 (CPU Scheduling). 影印機管理. 多人 ( 多程式 ) 搶用一台影印機 ( 單一 CPU) 各人抵達 ( 程式的啟動 ) 的時間點不同 影印張數 ( 執行時間 ) 各不同 影印途中經常須返家更換資料 (I/O) 須考慮公平性 、 等待時間. 排隊看醫生. 多人 ( 多程式 ) 等待唯一的醫生 ( 單一 CPU) 看病 各人掛號 ( 程式的啟動 ) 的時間點不同 診療時間 ( 執行時間 ) 各不同 診療途中經常須做各項抽血、 X 光等檢查 (I/O) 須考慮公平性 、 等待時間. 程序排程 (Process Scheduling).
E N D
影印機管理 • 多人(多程式)搶用一台影印機(單一CPU) • 各人抵達(程式的啟動)的時間點不同 • 影印張數(執行時間)各不同 • 影印途中經常須返家更換資料(I/O) • 須考慮公平性、等待時間
排隊看醫生 • 多人(多程式)等待唯一的醫生(單一CPU)看病 • 各人掛號(程式的啟動)的時間點不同 • 診療時間(執行時間)各不同 • 診療途中經常須做各項抽血、X光等檢查(I/O) • 須考慮公平性、等待時間
程序排程(Process Scheduling) 中程排程 (Medium-Term Scheduling) 主記憶體 Swap out 硬碟 Swapper CPU Swap in 短程排程 (Short-Term Scheduling) 或 (CPU Scheduling) 長程排程 (Long-Term Scheduling) 或 (Job Scheduling)
程序的排程(Process Scheduling) • 被啟動的程式(program)叫程序(process) • 長程排程:或工作排程(Job Scheduling) • 不急迫的程序,以背景(background)處理的方式先放在硬碟,等CPU有空時(晚上離峯時段)再載入主記憶執行。 • 機械速度電子速度 • 中程排程: • CPU欲處理的程序片段在硬碟,但主記憶已塞滿其他程序片段時,須移出(swap out)部分程序片段 • 被移出的片段再次被CPU參照時,須再由硬碟載入(swap in)主記憶體 • 負責中程排程的程式稱置換程式(swapper) • 短程排程:又稱CPU排程 (本章內容)
程序狀態遷移圖(Process State Transition Diagram) CPU閒置 執行 Running 開始 就緒 Ready 結束 Time out I/O I/O 完成 暫停 Blocked
病患在診療過程中的狀態遷移(1) • 目前的診療結束時,醫生(CPU)由診療室外的病人(Ready list)中挑一個病患(process)來診療 • 診療中碰到需要檢查時(I/O) : • 目前的診療暫停(CPU有空) • 病患至檢驗室檢查,成為blocked狀態 • 醫生由診療室外的病人中挑一個新病患來診療 • 檢查完畢後,原病患回到診療室排隊(ready list) ,再度成為ready狀態
病患在診療過程中的狀態遷移(2) • 循環分配方式:每個病患每次分配5分鐘,輪流接受診療直到完畢為止 • 診療時間用完時(time out): • 目前的診療暫停(CPU有空) • 醫生由診療室外的病人中挑一個新病患來診療 • 原病患回診療室外(ready list)排隊 ,再度成為ready狀態,等待下一輪
CPU排程法的評比指標 • 回報時間(Turnaround Time) = 完成時刻 –開始時刻 • 等待時間(Waiting Time) = 回報時間 –執行時間 • 反應時間(Response Time) = 畫面出現時刻 –按ENTER時刻(限interactive) • 公平性(Fairness):等待時間,平均等待時間,相對等待時間 = 等待時間 / 執行時間,平均相對等待時間
先到先做 (First Come First Service) • 挑選程序的時機:程序執行完畢時 • 挑進入時刻最早的程序來執行 • 程序只要抓住CPU就執行到完畢,不會被插隊 • A(先)要影印100張,B(後)只印1張 • A印完後,才換B
FCFS範例 相對等待時間 RWA=0/7 RWB=6/20 RWC=25/3 等待時間 WA=7-7=0 WB=26-20=6 WC=28-3=25 回報時間 TA=7-0=7 TB=27-1=26 TC=30-2=28 CPU時間配置圖 • 公平性:有護應現象(Convoy Effect),後到的小程序須苦等先到的大程序 • 優點:Simple is good ! • 缺點:平均等待時間長
最短工作優先 (Shortest Job First) • 挑選程序的時機:程序執行完畢時 • 挑CPU時間最短的程序來執行 • 程序只要抓住CPU就執行到完畢,不會被插隊 • A要影印100張,當A印5張後(剰95張) ,B(只印1張)進入,B不可插隊
SJF範例 回報時間 TA=7-0=7 TB=30-1=29 TC=10-2=8 等待時間 WA=7-7=0 WB=29-20=9 WC=8-3=5 相對等待時間 RWA=0/7 RWB=9/20 RWC=5/3 CPU時間配置圖 • 公平性:有餓殍現象(Starvation Effect),先到的大程序一直被後到的小程序插隊 • 優點:平均等待時間較短 • 缺點:CPU時間無法預知,不實用! • 不可奪取(Non-preemptive),程序只要一抓到CPU就不會被插隊
最短剩餘時間工作優先(Shortest Remaining Time First) • 挑選程序的時機: • 新程序進入(啟動)時 • 程序執行完畢時 • 挑剩餘CPU時間最短的程序來執行 • CPU目前執行中的程序可能被剛進來的程序插隊 • A要影印100張,當A印5張後(剰95張),B(只印1張)進入,A必須讓B插隊 • A要影印100張,當A印99張後(剰1張),B(只印1張)進入,???
SRTF範例 回報時間 TA=10-0=10 TB=30-1=29 TC=5-2=3 等待時間 WA=10-7=3 WB=29-20=9 WC=3-3=0 相對等待時間 RWA=3/7 RWB=9/20 RWC=0/3 CPU時間配置圖 • 公平性:有餓殍現象(Starvation Effect),先到的大程序一直被後到的小程序插隊 • 優點:平均等待時間較短 • 缺點:CPU時間無法預知,不實用! • 可奪取(Preemptive),程序即使已抓到CPU仍會被其他小程序插隊
循環分配 (Round-Robin) • 挑選程序的時機:時間配額用完時 • 新程序啟動時立即加入排隊行列 • 所有的排隊中的程序循環輪流執行到完畢為止 • A要影印100張,B印1張,C印30張。 • 以A->B->C->A->B->C->…順序輪流影印 • 每人每次限印5張(time slice),印完為止 • 各程序的時間配額可設定不同->設定優先等級
RR範例 回報時間 TA=14-0=14 TB=30-1=29 TC=11-2=9 等待時間 WA=14-7=7 WB=29-20=9 WC=9-3=6 相對等待時間 RWA=7/7 RWB=9/20 RWC=6/3 Time Slice = 4 CPU時間配置圖 • 公平性:最公平 • 優點:實用、公平、等待的總合評比最佳 • 缺點:時間配額(Time Slice)難決定。太大則如FCFS,太小則費時的程序切換(context switch)會太頻繁