一,處理機調度的時機:
1,什麼時候需要進程調度?
1)當前運行進程主動放棄處理機:進程正常終止,運行過程發生堵塞,進程主動請求堵塞(等待I/O)
2)當前運行進程被動放棄處理機:分配給進程的時間片用完了 ,有更緊急的事需要處理(如I/O中斷),有更高優先級的進程進入就緒隊列
2,什麼時候不能進行進程調度?
1)在處理中斷的過程:中斷處理過程複雜,與硬件密切相關,很難做到在中斷處理過程進行進程切換
2)進程在操作系統內核程序臨界區中
3)在原子操作過程中(源語):原子操作不可中斷,要一氣呵成(如修改pcb中的進程狀態,並把pcb放到相應的隊列)
二,切換與過程:
1,“狹義的調度”與“切換“的區別是什麼?
1)狹義的進程調度:從就緒隊列選一個要運行的進程(這個進程可以是剛剛被暫停的進程,也可以是另一個進程)
2)進程切換:指一個進程讓出處理機,由另外一個進程佔用處理機的過程
3)廣義的進程調度:包含了選擇一個進程和進程切換兩個步驟
2,進程切換過程需要做什麼?
1)對原來運行的進程各種數據進行保存
2)對新的進程各種數據的恢復
3,注意:
進程切換是有代價的,因此如果過於頻繁的進行進程調度,切換,必然會使得整個系統效率降低,使得系統大部分時間都花在線程切換上,而導致真正執行進程的時間減少
三,方式:
1,非剝奪調度方式(非搶佔式)
只允許進程主動放棄處理機。在運行過程中即便有更緊急的任務到達,當前進程依然會繼續使用處理機,直到該進程終止或者主動要求進入堵塞態。
特點:實現簡單,系統開銷小但無法及時處理緊急任務,使用與早期的批處理系統
2,剝奪調度方式(搶佔式)
當一個進程在處理機上執行時,如果有一個更重要或更緊迫的進程需要處理機,則立即暫停執行進程,將處理機分配給更緊急的進程
特點:可以優先處理緊急的進程,也可以實現讓各個進程按時間片輪流執行的功能。更適用於分時操作系統,實時操作系統