百度面試(程序排程 排程演算法)

2021-07-16 09:08:45 字數 4469 閱讀 8950

一、常見的批處理作業排程演算法

1.先來先服務排程演算法(fcfs):

就是按照各個作業進入系統的自然次序來排程作業。這種排程演算法的優點是實現簡單,公平。其缺點是沒有考慮到系統中各種資源的綜合使用情況,往往使短作業的使用者不滿意,因為短作業等待處理的時間可能比實際執行時間長得多。

2.短作業優先排程演算法(spf):

就是優先排程並處理短作業,所謂短是指作業的執行時間短。而在作業未投入執行時,並不能知道它實際的執行時間的長短,因此需要使用者在提交作業時同時提交作業執行時間的估計值。 

3.最高響應比優先演算法(hrn):fcfs

4.基於優先數排程演算法(hpf):每乙個作業規定乙個表示該作業優先順序別的整數,當需要將新的作業由輸入並調入記憶體處理時,優先選擇優先數最高的作業。

5.均衡排程演算法,即多級佇列排程演算法

基本概念:

作業周轉時間(ti)=完成時間(tei)-提交時間(tsi)

響應比=(等待時間+執行時間)/執行時間

二、程序排程演算法

1.先進先出演算法(fifo):按照程序進入就緒佇列的先後次序來選擇。即每當進入程序排程,總是把就緒佇列的隊首程序投入執行。

2.時間片輪轉演算法(rr):分時系統的一種排程演算法。輪轉的基本思想是,將cpu的處理時間劃分成乙個個的時間片,就緒佇列中的程序輪流執行乙個時間片。當時間片結束時,就強迫程序讓出cpu,該程序進入就緒佇列,等待下一次排程,同時,程序排程又去選擇就緒佇列中的乙個程序,分配給它乙個時間片,以投入執行。

3.最高優先順序演算法(hpf):程序排程每次將處理機分配給具有最高優先順序的就緒程序。最高優先順序演算法可與不同的cpu方式結合形成可搶占式最高優先順序演算法和不可搶占式最高優先順序演算法。

4.多級佇列反饋法:幾種排程演算法的結合形式多級佇列方式。

三、空閒分割槽分配演算法

1.

首先適應演算法:當接到記憶體申請時,查詢分割槽說明表,找到第乙個滿足申請長度的空閒區,將其分割並分配。此演算法簡單,可以快速做出分配決定。

2.最佳適應演算法:當接到記憶體申請時,查詢分割槽說明表,找到第乙個能滿足申請長度的最小空閒區,將其進行分割並分配。此演算法最節約空間,因為它盡量不分割到大的空閒區,其缺點是可能會形成很多很小的空閒分割槽,稱為「碎片」。

3.最壞適應演算法:當接到記憶體申請時,查詢分割槽說明表,找到能滿足申請要求的最大的空閒區。該演算法的優點是避免形成碎片,而缺點是分割了大的空閒區後,在遇到較大的程式申請記憶體時,無法滿足的可能性較大。

四、虛擬頁式儲存管理中的頁面置換演算法

1.理想頁面置換演算法(opt):這是一種理想的演算法,在實際中不可能實現。該演算法的思想是:發生缺頁時,選擇以後永不使用或在最長時間內不再被訪問的記憶體頁面予以淘汰。

2.先進先出頁面置換演算法(fifo):選擇最先進入記憶體的頁面予以淘汰。

3.最近最久未使用演算法(lru):選擇在最近一段時間內最久沒有使用過的頁,把它淘汰。

4.

最少使用演算法(lfu):選擇到當前時間為止被訪問次數最少的頁轉換。

五、磁碟排程

1.

先來先服務(fcfs):是按請求訪問者的先後次序啟動磁碟驅動器,而不考慮它們要訪問的物理位置

2.

最短尋道時間優先(sstf):讓離當前磁軌最近的請求訪問者啟動磁碟驅動器,即是讓查詢時間最短的那個作業先執行,而不考慮請求訪問者到來的先後次序,這樣就克服了先來先服務排程演算法中磁臂移動過大的問題

3.

掃瞄演算法(scan)或電梯排程演算法:總是從磁臂當前位置開始,沿磁臂的移動方向去選擇離當前磁臂最近的那個柱面的訪問者。如果沿磁臂的方向無請求訪問時,就改變磁臂的移動方向。在這種排程方法下磁臂的移動類似於電梯的排程,所以它也稱為電梯排程演算法。

4.

迴圈掃瞄演算法(cscan):迴圈掃瞄排程演算法是在掃瞄演算法的基礎上改進的。磁臂改為單項移動,由外向裡。當前位置開始沿磁臂的移動方向去選擇離當前磁臂最近的那個柱面的訪問者。如果沿磁臂的方向無請求訪問時,再回到最外,訪問柱面號最小的作業請求。

重點介紹以下幾種程序排程演算法:

1

.優先權排程演算法的型別

為了照顧緊迫型作業,使之在進入系統後便獲得優先處理,引入了最高優先權(fpf)排程演算法。此演算法常被用於批處理系統中,作為作業排程演算法,也作為多種作業系統

中的程序排程演算法,還可用於實時系統中。當把該演算法用於作業排程時,系統將從後備佇列中選擇若干個優先權較高的作業裝入記憶體。當用於程序排程時,該演算法是把處理機分配給就緒佇列中優先權最高的程序,這時,又可進一步把該演算法分成如下兩種。

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

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

搶占式優先權排程演算法

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

2.高響應比優先排程演算法

在批處理系統中,短作業優先演算法是一種比較好的演算法,其主要的不足之處是長作業的執行得不到保證。如果我們能為每個作業引入前面所述的動態優先權,並使作業的優先順序隨著等待時間的增加而以速率a 提高,則長作業在等待一定的時間後,必然有機會分配到處理機。該優先權的變化規律可描述為:

由於等待時間與服務時間之和就是系統對該作業的響應時間,故該優先權又相當於響應比rp。據此,又可表示為:

優先權=(等待時間+要求服務時間)/要求服務時間;

(1)如果作業的等待時間相同,則要求服務的時間愈短,其優先權愈高,因而該演算法有利於短作業。

(2)當要求服務的時間相同時,作業的優先權決定於其等待時間,等待時間愈長,其優先權愈高,因而它實現的是先來先服務。

(3)對於長作業,作業的優先順序可以隨等待時間的增加而提高,當其等待時間足夠長時,其優先順序便可公升到很高,從而也可獲得處理機。簡言之,該演算法既照顧了短作業,又考慮了作業到達的先後次序,不會使長作業長期得不到服務。因此,該演算法實現了一種較好的折中。當然,在利用該演算法時,每要進行排程之前,都須先做響應比的計算,這會增加系統開銷。

3

.多級反饋佇列排程演算法

多級反饋佇列排程演算法不必事先知道各種程序所需的執行時間,而且還可以滿足各種型別程序的需要,因而它是目前被公認的一種較好的程序排程演算法。在採用多級反饋佇列排程演算法的系統中,排程演算法的實施過程如下所述。

(1)設定多個就緒佇列,並為各個佇列賦予不同的優先順序。第乙個佇列的優先順序最高,第二個佇列次之,其餘各佇列的優先權逐個降低。該演算法賦予各個佇列中程序執行時間片的大小也各不相同,在優先權愈高的佇列中,為每個程序所規定的執行時間片就愈小。例如,第二個佇列的時間片要比第乙個佇列的時間片長一倍,……,第i+1個佇列的時間片要比第i個佇列的時間片長一倍。

(2)當乙個新程序進入記憶體後,首先將它放入第一佇列的末尾,按fcfs原則排隊等待排程。當輪到該程序執行時,如它能在該時間片內完成,便可準備撤離系統;如果它在乙個時間片結束時尚未完成,排程程式便將該程序轉入第二佇列的末尾,再同樣地按fcfs原則等待排程執行;如果它在第二佇列中執行乙個時間片後仍未完成,再依次將它放入第三佇列,……,如此下去,當乙個長作業(程序)從第一佇列依次降到第n佇列後,在第n 佇列便採取按時間片輪轉的方式執行。

(3)僅當第一佇列空閒時,排程程式才排程第二佇列中的程序執行;僅當第1~(i-1)佇列均空時,才會排程第i佇列中的程序執行。如果處理機正在第i佇列中為某程序服務時,又有新程序進入優先權較高的佇列(第1~(i-1)中的任何乙個佇列),則此時新程序將搶占正在執行程序的處理機,即由排程程式把正在執行的程序放回到第i佇列的末尾,把處理機分配給新到的高優先權程序。

百度筆試題 頁面排程演算法

通過題意得描述,我們大概可以得知這是乙個作業系統排程演算法的問題,需要實現乙個fifo演算法,然後根據所設計的演算法來計算各種情況下的缺頁次數。這個題其實不是很難,但是需要自己實現乙個類似於佇列的資料結構,但是這個資料結構提供遍歷功能。其實使用vector就可以實現,時間主要集中在實現上面。因為這個...

程序排程演算法(程序排程策略)

程序排程演算法 排程演算法是指 根據系統的資源分配策略所規定的資源分配演算法。一 先來先服務和短作業 程序 優先排程演算法 1.先來先服務排程演算法。先來先服務 fcfs 排程演算法是一種最簡單的排程演算法,該演算法既可用於作業排程,也可用於程序排程。fcfs演算法比較有利於長作業 程序 而不利於短...

程序排程演算法

排程演算法是指 根據系統的資源分配策略所規定的資源分配演算法。一 先來先服務和短作業 程序 優先排程演算法 1.先來先服務排程演算法。先來先服務 fcfs 排程演算法是一種最簡單的排程演算法,該演算法既可用於作業排程,也可用於程序排程。fcfs演算法比較有利於長作業 程序 而不利於短作業 程序 由此...