複製鏈接
請複製以下鏈接發送給好友

非搶佔式

鎖定
非搶佔式(進程調度)是一種進程調度的方式,與其相對的是搶佔式(進程調度)。
非搶佔式讓原來正在運行的進程繼續運行,直至該進程完成或發生某種事件(如I/O請求),才主動放棄處理機。
中文名
非搶佔式
外文名
Nonpreemptive
領    域
計算機操作系統

目錄

非搶佔式對比

搶佔式與非搶佔式的對比
非搶佔式(Nonpreemptive)
讓進程運行直到結束或阻塞的調度方式
容易實現
適合專用系統,不適合通用系統
搶佔式(Preemptive)
允許將邏輯上可繼續運行的在運行過程暫停的調度方式
可防止單一進程長時間獨佔CPU
系統開銷大(降低途徑:硬件實現進程切換,或擴充主存以貯存大部分程序)

非搶佔式區分

搶佔式與非搶佔式的區分
一個新創建的進程首先被放置在Ready隊列,它一直等待執行的機會。一旦內核調度器將CPU分配給它開始執行時,有四種可能:
(1)進程主動發起I/O請求,但I/O設備還沒有準備好,所以會發生I/O阻塞,進程進入Wait狀態。
(2)內核分配給進程的時間片已經耗盡了,進程進入Ready狀態,等待內核重新分配時間片後的執行機會。
(3)進程創建了子進程,並調用wait()等待子進程執行完畢,進程就重新進入Ready狀態等待阻塞結束。
(4)I/O設備可以在任意時刻發生中斷,CPU會停下當前正在執行的進程去處理中斷,因此進程進入Ready狀態。
區分一個多任務分時系統是搶佔式的還是非搶佔式的,則要看進程調度能否在(4)發生中斷,CPU停止當前手頭的工作(正在執行的進程),保存下當前工作的現場後,轉入中斷處理程序。如果在中斷處理程序的執行中能否發生調度,即中斷處理程序還沒有執行完,又切換到其他進程。這裏要説明的是,系統調用也是通過中斷機制來實現的。所以,也就是説要看系統調用的執行過程中,或者中斷處理程序的執行過程中能否發生調度(搶佔)。 [1] 
參考資料