搶占式排程與非搶占式排程

2021-10-10 11:56:03 字數 997 閱讀 8029

資料**

這是本人在作業系統期中考試前複習是碰到的問題,花了一些時間解決,現在記錄下來。

在學習 cpu 排程的時候,關於搶占式、非搶占式排程方式有不理解的地方,想不到google一下就出來了很好的解釋,看來還是要多搜尋多思考。

cpu 排程決策可以在如下四種環境下發生:

對於第1和第4兩種情況,沒有選擇只有排程。乙個新程序(如果就緒佇列中已有乙個程序存在)必須被選擇執行。不過,對於2和3兩種情況,可以進行選擇。

當排程只能發生在1和4兩種情況時,稱排程方案是非搶占的或者協作的,否則稱排程方案是搶占的。採用非搶占程序…

為什麼 2 和 3 是搶占式的呢?一開始很不理解,這種情況有什麼特殊之處。

搶占式排程(preemptive scheduling)是一種cpu排程技術,它通過將cpu的時隙劃分給給定的程序來工作。給定的時間間隔可能能夠完成整個過程,也可能無法完成。當程序的區間時間(burst time)大於cpu週期時,它將被放回到就緒佇列(ready queue)中,並在下乙個時機(chance)執行。當程序切換到就緒狀態時,會使用這種排程方式。

搶占式排程支援的演算法有迴圈排程(rr)、優先順序(priority)排程、srtf(剩餘時間最短優先,shortest remaining time first)。

非搶占排程(non-preemptive scheduling)是一種cpu排程技術,程序獲取資源(cpu時間)並持有它,直到程序終止或推送到等待狀態。程序不會被中斷,直到它完成,然後處理器切換到另乙個程序。

基於非搶占式排程的演算法具有非搶占式優先(non-preemptive priority)以及最短作業優先順序(shortest job first)。

現在應該可以理解為什麼2 3 是搶占式排程了,2 3 的程序之所以發生切換到就緒的狀態變化,就是因為其執行被中途打斷了,執行其他的程序,這就是搶占的思維。

希望對有類似問題的同學有幫助。

執行緒的搶占式和非搶占式排程

在乙個程序裡,執行緒的排程有搶占式或者非搶占的模式。在搶占模式下,作業系統負責分配 時間給各個程序,一旦當前的程序使用完分配給自己的 時間,作業系統將決定下乙個占用 時間的是哪乙個執行緒。因此作業系統將定期的中斷當前正在執行的執行緒,將 分配給在等待佇列的下乙個執行緒。所以任何乙個執行緒都不能獨佔 ...

執行緒的排程有搶占式或者非搶占

在乙個程序裡,執行緒的排程有搶占式或者非搶占的模式。在搶占模式下,作業系統負責分配 時間給各個程序,一旦當前的程序使用完分配給自己的 時間,作業系統將決定下乙個占用 時間的是哪乙個執行緒。因此作業系統將定期的中斷當前正在執行的執行緒,將 分配給在等待佇列的下乙個執行緒。所以任何乙個執行緒都不能獨佔 ...

程序的主動排程與搶占式排程

四 總結 上下文切換主要幹下面兩件事,是通過context switch函式實現的 static always inline struct rq context switch struct rq rq,struct task struct prev,struct task struct next,s...