close
有以下狀況必須做排程
1. running state ~waiting state (Ex: I/O request)
2. running state ~ready state (interrupt)
3. waiting state ~ready state (I/O 完成)
4. 程序完成
有1和4稱 (non-preemptive) EX: Windows
沒有為preemptive EX: Windlws NT , UNIX
為了防止process執行被搶佔
造成kernel data 流出 ( EX: 正在system call )
所以等完成後才做context switch
Cooperative scheduling (沒有timer, 可自行interrupt)
preemptive 須 consider
shared data
kernel mode 被搶占
在OS運算時interrupt
Oispatcher :
將CPU 控制權交給選定執行的程序
context switch
切換 user mode
切換 user program 到適當位置重啟
(dispatch latency: 停止~開始所需時間)
全站熱搜
留言列表