晶元設計中常用到的排程演算法總結

2021-10-14 06:42:24 字數 1166 閱讀 9809

1 sp(strict priority, 嚴格優先順序)

sp排程會給各個輸入佇列分配優先順序,當高優先順序的佇列非空時,優先排程高優先順序佇列。只有當高優先順序隊列為空時,才有可能排程低優先順序的佇列。

2 rr(round robin, 輪詢)

如何理解輪詢?所謂『輪』,是指rr排程中有乙個rr指標,每次排程成功後,rr指標就會移動一下,指向下乙個佇列,而且這個指標是依次迴圈的,比如從0,1...一直到n,最後又迴圈到0。所謂'詢',就是指每次排程時去看rr指標指向的佇列是否可用,如果可用的話,就排程rr指標指向的佇列,如果不可用的話,就看下乙個佇列是否可用。rr排程在晶元設計中比較常見到,它是一種比較公平的排程演算法。舉個例子:

如上圖所示,有4個佇列,假設在第t拍以後都沒有新的packet進入佇列了。rr排程的過程如下:

t+1拍:rr指標指向queue_1,但queue_1為空,指標+1後指向queue_2,queue_2有packet,queue_2贏得仲裁,p2被排程出來,指標+1指向queue_3;

t+2拍:queue_3贏得仲裁,p4被排程出來,指標+1指向queue_0;

t+3拍:queue_0贏得仲裁,p1被排程出來,指標+1指向queue_1;

t+4拍:queue_2贏得仲裁,p3被排程出來,指標+1指向queue_3。

3 wrr(weight rounf robin, 帶權重的輪詢)

wrr是在rr排程的基礎上,為各個排程源加入了權重(weight)。各個佇列的weight一般都是可配置的,也就是說軟體可以較為靈活的分配各個佇列的權重。可以認為rr排程是各個佇列權重都為1的wrr。wrr中的每個佇列都對應有乙個weight counter, weight counter在復位以後都被賦予初始值,這個初始值就是軟體分配的權重值。一旦某個佇列贏得一次仲裁後,其對應的weight counter就減一,當所有佇列的weight counter都為0後,所有的weight counter又被賦予初始值。排程流程與rr原理類似,都是基於rr指標的輪詢,當rr指標指向某乙個佇列時,佇列贏得仲裁的條件是佇列可用(非空)且其對應的weight counter不為0。

未完待續……

OS中常用的排程演算法總結

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

OS中常用的排程演算法總結

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

Java中常用到的演算法題

1.遍歷出乙個資料夾下的所有檔案,並展示出層級關係,資料夾優先顯示,最後以一定格式寫入文字中 遞迴實現 遍歷出乙個資料夾下的所有檔案,並展示出層級關係,資料夾優先顯示,最後以一定格式寫入文字中 param args public static void main string args privat...