雖然從概念上看,有多個程序或執行緒在同時執行,但在單一cpu下,實際上在任何時刻只能有乙個程序或執行緒處於執行狀態,而其他執行緒則處於非執行狀態。程序/執行緒的排程任務就是怎麼選擇下乙個要運轉的程序。
cpu排程就是要達到極小化平均響應時間、極大化系統吞吐率、保持系統各個功能部件均處於繁忙狀態和提供某種貌似公平的機制。
極小化平均響應時間就是減少做一件工作平均等待的時間;極大化系統吞吐率就是要在單位時間內完成盡可能多的程式;保持系統各個功能部件繁忙就是要讓cpu和輸入輸出裝置均處於忙碌狀態。
就是誰先來,就先服務誰,這個演算法所有地球人都能想到。
但先來先服務演算法存在乙個問題,因為他的機制是乙個程式一旦啟動就一直執行到結束或者受阻塞為止,而如果前面有很長的工作,就會導致使用者的互動式體驗很差。
就像我們排隊辦理事情,你要辦理的事情只要幾分鐘就能辦好,而你前面的乙個人辦理的事情因為複雜需要1個小時。這個時候你等在他後面就十分不高興。
時間片輪轉演算法就是周期性地進行程序切換,例如每1秒鐘進行一次程序輪換,這樣短程式排在長程式後面也可以很快得到執行。因為長程式執行1秒後就得把cpu讓岀來,這樣整個系統的響應時間就得到改善。
但該演算法也有缺點:如果時間片選擇過大,時間片輪轉演算法將越來越像先來先服務排程演算法。而時間片如果選擇過小,則程序切換所用的系統消耗將太多,使得系統的大部分時間花在逬程的上下文切換上。
短任務優先演算法的核心是所有的程式並不都一樣,而是有優先順序的不同。貝體說來就是短任務的優先順序比長任務的高,而我們總是安排優先順序高的程式先運轉。
該演算法有兩個変種:一種是非搶占,一種是搶占。非搶占短任務優先演算法的原理是 讓已經在cpu上執行的程式執行到結束或阻塞,然後在所有候選的程式中選擇需要執行時間最短的程序來執行。搶占式短任務優先演算法則是每進來乙個新的程序就需要對所有程序(包括正在cpu上執行的程序)進行檢查,誰的時間短,就執行誰。
該演算法的缺點:可能造成長程式無法得到cpu時間而導致飢餓,另外,我們不知道每個程序還需要運轉多久。
該演算法原理是給每個程序賦予乙個優先順序,每次需要程序切換時,找乙個優先順序最高的程序進行排程。這樣,如果我們給長程序乙個高優先順序,則該程序就不會再有 飢餓。
優先順序排程演算法的缺點:響應時間不能保證。除非將乙個程序的優先順序設為最高,但如果每個人都將自己程序的優先順序設為最高,響應時間還是無法保證。
混合排程演算法:前面提到過的所有演算法都存在缺點,我們合併它們的優點,摒棄 它們的缺點。
該演算法的原理是將所有程序分成不同的大類,每個大類為乙個優先順序。如果兩個程序處於不同的大類,則處於高優先順序大類的程序優先執行;如果兩個逬程處於同乙個大類,則採用時間片輪轉來執行。
優先順序倒掛指的是乙個低優先順序任務持有乙個被高優先順序認為所需要的共享資源。這樣高優先順序任務因資源缺乏處於受阻狀態,一直到低優先順序任務釋放資源為止,這樣實際上造成了這兩個任務的優先順序倒掛。
如果此時有其他優先順序介於二者之間的任務,並且不需要這個共享資源,則該中級優先順序的程序將獲得cpu控制,從而超越這兩個任務。
有些時候,優先順序倒掛可能會引起嚴重後果,如果乙個高優先順序程序一直不能獲得資源,有可能造成系統故障或啟用事先定義的糾正措施,如系統復位等。
倒掛的解決方案:使用中斷禁止
這種辦法的核心是通過禁止中斷來保護臨界區。
在採用此策略的系統中只有兩個優先順序:可搶占優先順序和中斷禁止優先順序。前者為一般程序執行時的優先順序,後者為執行於臨界區的程序的優先順序。
由於不存在第三種優先順序,優先順序倒掛無法發生。由於系統裡只存在乙個鎖,亂序不會發生,因此死鎖也不會發生。又由於臨界區總能夠不被打斷而一直執行到結束,懸掛也不會發生。
程序排程演算法(程序排程策略)
程序排程演算法 排程演算法是指 根據系統的資源分配策略所規定的資源分配演算法。一 先來先服務和短作業 程序 優先排程演算法 1.先來先服務排程演算法。先來先服務 fcfs 排程演算法是一種最簡單的排程演算法,該演算法既可用於作業排程,也可用於程序排程。fcfs演算法比較有利於長作業 程序 而不利於短...
程序排程演算法
排程演算法是指 根據系統的資源分配策略所規定的資源分配演算法。一 先來先服務和短作業 程序 優先排程演算法 1.先來先服務排程演算法。先來先服務 fcfs 排程演算法是一種最簡單的排程演算法,該演算法既可用於作業排程,也可用於程序排程。fcfs演算法比較有利於長作業 程序 而不利於短作業 程序 由此...
程序排程演算法
先來先服務 first come first service,fcfs 排程演算法按照程序進入就緒佇列的先後順序選擇可以占用處理器的程序。這是一種不可搶占方式的排程演算法,優點是實現簡單,缺點是後來的程序等待cpu的時間較長。它現今主要用作輔助排程法 例如結合在優先順序排程演算法中使用,當有兩個最高...