非可搶佔式和搶佔式程式排程的區別是什麼?

追風箏的豬發表於2018-04-14
版權宣告:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/qq_34173549/article/details/79936219

1) 非搶佔式優先權演算法

在這種方式下,系統一旦把處理機分配給就緒佇列中優先權最高的程式後,該程式便一直執行下去,直至完成;或因發生某事件使該程式放棄處理機時,系統方可再將處理機重新分配給另一優先權最高的程式。這種排程演算法主要用於批處理系統中;也可用於某些對實時性要求不嚴的實時系統中。

2) 搶佔式優先權排程演算法

在這種方式下,系統同樣是把處理機分配給優先權最高的程式,使之執行。但在其執行期間,只要又出現了另一個其優先權更高的程式,程式排程程式就立即停止當前程式(原優先權最高的程式)的執行,重新將處理機分配給新到的優先權最高的程式。因此,在採用這種排程演算法時,是每當系統中出現一個新的就緒程式i 時,就將其優先權Pi與正在執行的程式j 的優先權Pj進行比較。如果Pi≤Pj,原程式Pj便繼續執行;但如果是Pi>Pj,則立即停止Pj的執行,做程式切換,使i 程式投入執行。顯然,這種搶佔式的優先權排程演算法能更好地滿足緊迫作業的要求,故而常用於要求比較嚴格的實時系統中,以及對效能要求較高的批處理和分時系統中。

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


相關文章