非搶占式

非搶占式(進程調度)是一種進程調度的方式,與其相對的是搶占式(進程調度)。

非搶占式讓原來正在運行的進程繼續運行,直至該進程完成或發生某種事件(如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停止當前手頭的工作(正在執行的進程),保存下當前工作的現場後,轉入中斷處理程式。如果在中斷處理程式的執行中能否發生調度,即中斷處理程式還沒有執行完,又切換到其他進程。這裡要說明的是,系統調用也是通過中斷機制來實現的。所以,也就是說要看系統調用的執行過程中,或者中斷處理程式的執行過程中能否發生調度(搶占)。

相關詞條

熱門詞條

聯絡我們