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