程序排程:實質是一種資源分配。決定將cpu分配給就緒佇列中的某個程序。
發生程序排程原因:
(1)正在執行的程序執行完畢;
(2)執行中的程序因發生i/o請求或等事件而暫停執行
(3)時間片用完;
(4)在程序通訊或同步過程中執行了某項原語操作,如p操作(wait操作);
(5)高優先順序進入。
作業排程:簡單來說就是決定將外存後備佇列的哪一作業調入記憶體。
程序排程與作業排程的關係:
作業排程屬於高階排程,排程物件是作業。
程序排程屬於低階排程,排程物件是程序。多道批處理、分時和實時os中都必須配置這級排程。
按一定的演算法從磁碟上的「輸入井」中選擇資源能得到滿足的作業裝入記憶體,使作業有機會去占用處理器執行。但是,乙個作業能否占用處理器,什麼時間能夠占用處理器,必須由程序排程來決定。所以,作業排程選中 了乙個作業且把它裝入記憶體時,就應為該作業建立乙個程序,若有多個作業被裝入記憶體,則記憶體中同時存在多個程序,這些程序的初始狀態為就緒狀態,然後,由程序排程(優先數)來選擇當前可占用處理器的程序,程序執行中由於某種原因狀態發生變化,當它讓出處理器時,程序排程就再選另乙個作業的程序執行。 因此,作業排程與程序排程相互配合才能實現多道作業的並行執行。
簡單來說:比如兩道作業管理程序的批處理系統。記憶體中乙個作業執行,乙個作業就緒。不是每個作業都有就緒的機會,具體哪乙個作業會得到這個機會,取決於程序排程演算法。
一、先來先服務排程演算法
fcfs是一種非搶占方式,既可用於作業排程,也可用於程序排程。
在作業排程中採用該演算法時:每次排程從後備作業佇列中選擇乙個或多個最先進入該佇列的作業,將他們調入記憶體,為他們分配資源、建立程序,然後放入就緒佇列;
在程序排程中採用該演算法時:每次排程是從就緒佇列中選擇乙個最先進入該佇列的程序,為之分配處理機,使之投入執行。
fcfs演算法有利於於長作業(程序),而不利於短作業(程序);有利於cpu繁忙型作業(程序),而不利於i/o繁忙型作業(程序)。
二、短作業(程序)優先排程演算法
短作業優先排程演算法是從後備佇列中選擇乙個或若干個估計執行時間最短的作業,將他們調入記憶體執行;
短程序優先排程演算法是從就緒佇列中選擇乙個估計執行時間最短的程序,將處理機分配給它,使它立即執行直到完成。
缺點:
(1)該演算法對長作業不利;
(2)完全未考慮作業的緊迫程度;
(3)作業或程序的長短是由使用者提供的估計執行時間,使用者有可能有意或者無意的縮短估計執行時間,使其不一定能做到短作業或短程序優先排程。
三、優先權排程演算法
由於短作業優先排程演算法照顧不到緊迫型作業,引入了最高優先權排程演算法。
作業排程時,系統將從後備佇列中選擇若干個優先權最高的作業裝入記憶體;
程序排程時,把處理及分配給就緒佇列中優先權最高的程序。
(1)非搶占式優先演算法
系統一旦把處理機分配給就緒佇列中優先權最高的程序後,該程序一直執行下去,直至完成。主要用於批處理系統,也可用於要求不嚴的實時系統。
(2)搶占式優先演算法
系統把處理機分配給就緒佇列中優先權最高的程序後,在該程序執行期間,一旦出現了另乙個優先權更高的程序,程序排程立即停止當前程序的執行,重新把處理機分配給新到的優先權最高的程序。常用於要求較嚴格的實時系統以及對效能要求較高的批處理和分時系統。
四、時間片輪轉
僅適用於程序排程。
系統將所有就緒程序按先來先服務的原則排成乙個佇列,每次排程時,把cpu分配給隊首程序,並令其執行乙個時間片。當執行的時間片用完時,由乙個計數器發出時鐘中斷請求,排程程式便停止該程序執行,把它送往就緒佇列末端,然後再把處理機分配給就緒佇列新的隊首程序,同時也讓它執行乙個時間片。
時間片的選擇:選很小的時間片有利於短作業,因為它能較快的完成,但會頻繁的發生中斷、程序上下文的切換,從而增加系統開銷;反之,選擇太長的時間片,使每個程序都能在乙個時間片內完成,那就退化成為fcfs演算法,乙個可取的大小是時間片略大於一次典型的互動所需要的時間。
常見的程序排程演算法
程序排程程式按一定的策略,動態地把處理機 分配給處於就緒佇列中的某乙個程序 以使之執行。1.先來先服務 fcfs 排程演算法 原理 系統將按照作業到達的先後次序來進行作業排程,或者說它是優先考慮在系統中等待時間最長的作業,而不管該作業所需執行時間的長短,從後備作業佇列中優先選擇幾個最先進入該佇列的作...
常見程序排程演算法總結
程序排程也稱為低階排程,它所排程的物件為程序 或者核心級執行緒 而程序排程演算法主要有以下幾種 先來先服務排程演算法是一種最簡單的排程演算法,可用於作業排程,也可用於程序排程。在程序排程中採用先來先服務演算法時候,每次排程就從就緒佇列中選乙個最先進入該佇列的程序,為之分配處理機。即誰第乙個排隊的誰就...
程序排程的常見演算法
1.程序排程的常見演算法 1 先來先服務排程演算法 fcfs,first come first server 處於就緒態的程序按先後順序鏈入到就緒佇列中,而fcfs排程演算法按就緒程序進入就緒佇列的先後次序選擇當前最先進入就緒佇列的程序來執行,直到此程序阻塞或結束,才進行下一次的程序選擇排程。fcf...