處理機排程與常見演算法

2021-09-01 08:46:08 字數 1749 閱讀 1390

處理機排程:多道程式環境下,動態的把處理機分配給就緒佇列中的乙個程序使之執行。

提高處理機的利用率、改善系統效能,很大程度上取決於處理機排程的效能。

處理機排程便成為os設計的中心問題之一。分配的任務由處理機排程程式完成。

一、處理機排程的基本概念

作業進入系統駐留在外存的後備佇列上,再至調入記憶體執行完畢,可能要經歷下述**排程。

高階排程(high scheduling)

中級排程(intermediate-level scheduling)

低階排程(low level scheduling)

程序排程方式

1)非搶占方式(non-preemptive mode)

一旦處理機分配給某程序,該程序一直執行。決不允許其他程序搶占已分配執行程序的處理機。

2)搶占方式(preemptive mode)

允許排程程式根據某種原則,暫停某個正在執行的程序,將處理機重新分配給另一程序。

針對批處理系統的效能指標。作業從提交到完成所經歷的時間。

cpu執行用時ts

總的等待時間tw = 在後備佇列中等待 + 就緒佇列上等待

短作業(程序)優先排程演算法sjf/spf

高優先權優先排程演算法hpf

基於時間片的輪轉排程演算法rr

(1)時間片輪轉演算法

1.將系統中所有的就緒程序按照fcfs原則,排成乙個佇列。

2.每次排程時將cpu分派給隊首程序,讓其執行乙個時間片。時間片的長度從幾個ms到幾百ms。

3.在乙個時間片結束時,發生時鐘中斷。

4.排程程式據此暫停當前程序的執行,將其送到就緒佇列的末尾,並通過上下文切換執行當前就緒的隊首程序。

程序阻塞情況發生時,未用完時間片也要出讓cpu

(2)多級反饋佇列演算法fb

1)設定多個就緒佇列,各佇列有不同的優先順序,優先順序從第乙個佇列依次降低。

2) 賦予各佇列程序執行時間片大小不同, 優先權越高,時間片越短。

3)當乙個新程序進入記憶體,引發的排程過程

準備排程:先將它放入第乙個佇列的末尾,按fcfs原則排隊等待排程。

if時間片內完成,便可準備撤離系統;

if時間片內未能完成,排程程式便將該程序轉入第二佇列的末尾等待再次被排程執行。

當第一佇列中的程序都執行完,系統再按fcfs原則排程第二佇列。在第二佇列的稍放長些的時間片內仍未完成,再依次將它放入第三佇列。

依次降到第n佇列後,在第n佇列中便採取按時間片輪轉的方式執行。

常用的幾種實時排程演算法

目前有許多實時排程演算法,其中兩種實時排程演算法:

最早截止時間優先edf(earliest deadline first)演算法

最低鬆弛度優先llf(least laxity first)演算法

1)最早截止時間優先edf

根據任務的開始截止時間來確定任務的優先順序。截止時間越早,其優先順序越高。

系統保持乙個實時任務就緒佇列

佇列按各任務截止時間的早晚排序

排程程式總是選擇就緒佇列中的第乙個任務,分配處理機使之投入執行。

新任務產生時,是否等當前程式執行完:

搶占式/非搶占式

可能會使作業錯過,但可適用於軟實時系統

2)最低鬆弛度優先llf

根據任務緊急(或鬆弛)的程度,來確定任務的優先順序。任務的緊急程度越高(鬆弛度值越小),優先順序就越高。

鬆弛度= 截止完成時間 – 還需執行時間 - 當前時間

可理解為當前時刻到開始截止時刻間的差距,隨著時間的推進,這個差值逐漸變小,任務越來越緊迫。

處理機排程 排程演算法

先來先服務 fcfs 排程演算法 短作業 程序 優先排程演算法sjf spf 根據作業的長短在就緒佇列中排好隊,若採取非搶占方式則根據佇列順序依次執行 若為搶占方式,時間片完或新程序的作業比執行態的作業長度短,則搶占當前正在執行的程序,被搶占程序按照時間長短在就緒佇列排隊等待。特別注意就緒佇列中的排...

處理機排程 排程演算法

將使用者作業和就緒程序按提交順序或變為就緒狀態的先後排成佇列,按照先來先服務的方式進行排程處理。1.直 該演算法在一般意義下是公平的。即每個作業或程序都按照它們在佇列中等待時間長短決定它們是否優先享受服務 2.但如果執行時間較短的作業或程序在某些執行時間很長的作業或程序之後到達,則它們將等待很長時間...

處理機排程 排程演算法

將使用者作業和就緒程序按提交順序或變為就緒狀態的先後排成佇列,按照先來先服務的方式進行排程處理。1.直 該演算法在一般意義下是公平的。即每個作業或程序都按照它們在佇列中等待時間長短決定它們是否優先享受服務 2.但如果執行時間較短的作業或程序在某些執行時間很長的作業或程序之後到達,則它們將等待很長時間...