Linux程序排程之 大O 1 排程演算法

2021-09-10 06:32:02 字數 481 閱讀 2533

而大o(1)排程演算法其實就是一種非常好的排程演算法,它能讓程序排程的更加合理,更加快速。

我將該排程演算法總結為下面這張圖

對其中一些內容做出解釋:

1.首先將相同優先順序的程序放在同一佇列裡,然後有多少個優先順序,就建立多少個優先順序佇列,這些佇列可以用佇列陣列來表示。

2.如果某一優先順序佇列裡沒有程序,那麼cpu在排程時還要檢視該佇列是否為空,所以也會浪費時間,因此用位圖來表示每乙個佇列是否為空。(位圖就是一系列二進位制數,0 和 1)

3.當該佇列陣列中的程序排程完後,該佇列陣列就為空了,如果還要再次排程時,就得重新將那些程序再一 一加入佇列,依舊是會耗費大量的時間的,所以再建立乙個跟該佇列陣列一摸一樣的佇列陣列,用掉乙個程序,就把該程序放到新陣列相應的位置上,這樣就節省了很多時間。

ps:歡迎各路大神批評指正~!!

Linux如何實現O 1 程序排程

linux排程主要是在乙個runqueue結構體上操作。runqueue結構體有乙個prio array結構體陣列,該陣列中有個兩個prio array結構體。prio array結構體的定義如下 struct prio array 這兩個prio array,乙個掛著expired task 時間...

linux 程序排程1

程序分為實時程序和普通程序,分別對應實時排程策略和普通排程策略 在 task struct 中,有乙個成員變數,我們叫排程策略 unsigned int policy 它有以下幾個定義 define sched normal 0 define sched fifo 1 define sched rr...

程序排程 1

最近特別有感觸,各層面的設計似乎都可以從作業系統中找出相似的設計,作業系統幾乎是設計集大成者,所以重新又開始看作業系統相關的書籍。最近可能都是一些記錄性的文章,作業系統原理因為是教學課程,所以不會另做筆記。從重讀linux核心開始,記錄學習過程。本文均摘自 linux核心與實現 因為硬體資源總是有限...