專利名稱:分區操作系統的綜合化調度算法的制作方法
分區操作系統的綜合化調度算法
技術領域分區
本發明是一種針對分區操作系統的綜合化調度算法。
背景描述
目前,不同類型的分區操作系統調度算法有差異又有共性,有必要研究其中的差 異和共性技術,降低研發和維護成本,并且需要保證調度的高可靠和實時性,因此這就需要 提供一種針對分區操作系統的綜合化調度算法。發明內容
本發明包含具體的功能內容有
分區分類為核心分區和普通分區
任務分類為空閑任務和分區內任務
用四個就緒鏈表管理就緒優先級調度分區和核心分區與普通分區內就緒任務
采用8x32的位圖管理就緒優先級調度分區和就緒任務0-255的優先級
高可靠實時多級調度具體實施方式
1.分區分類為核心分區和普通分區
分區是資源的管理者,分區分類為核心態運行的唯一核心分區和用戶態運行的時 間調度表和優先級調度的普通分區。優先級調度分區的優先級為0-255。核心態分區主要 應用于監控和管理時間調度表和優先級調度分區。普通分區由于核心分區的監控,可靠性 得到提聞。
2.任務分類為空閑任務和分區內任務
系統中存在唯一的空閑任務,它不屬于任何分區,運行在核心態。分區內任務是由 分區創建和啟動,它是分區中的執行單元,優先級為0-255。僅在核心分區和普通分區內任 務不運行時,空閑任務才運行。
3.采用四個就緒鏈表管理就緒優先級調度分區和核心分區與普通分區內就緒任 務
系統使用一個就緒鏈表管理優先級為0-255的所有就緒優先級調度分區。核心分 區、時間調度表分區和優先級分區分別使用一個就緒鏈表來管理本分區內優先級為0-255 的所有就緒任務。一個就緒鏈表由256條就緒鏈組成,每條就緒鏈管理一個優先級的就緒 分區或者任務。空閑任務不在任何就緒鏈上。
4.采用8x32的位圖管理就緒優先級調度分區和就緒任務0_255的優先級
8x32的位圖管理中,優先級調度分區或者分區內任務優先級為0-255,優先級右 移5位后的值0-7作為優先級主索引號,優先級低有效5位的值0-31作為優先級次索引號, 使用8位圖作為優先級主索引號位圖,使用8組32位圖作為優先級8個主索引號對應的次 索引號位圖,優先級次索引號位圖為第主索引號組對應的32位圖,位圖中對應位的索引號為優先級的主索引號或者次索引號。
優先級調度分區或者任務變為就緒態時,在優先級主索引號位圖中將優先級主索 引號對應的位置位,在優先級次索引號位圖中將優先級次索引號對應的位置位,并且將就 緒分區或者任務加到對應優先級就緒鏈上。
就緒優先級調度分區或者就緒任務變為非就緒態時,將非就緒分區或者任務從對 應優先級就緒鏈上摘除。如果非就緒分區或者任務對應優先級就緒鏈上沒有分區或者任 務,則在優先級次索引號位圖中將優先級次索引號對應的位清除。如果優先級次索引號位 圖中的每位值都為0,則在優先級主索引號位圖中將優先級主索引號對應的位清除。
在獲取優先級調度分區的最高優先級就緒分區或者分區內最高優先級就緒任務 時,如果優先級主索引號位圖中的每位值都為0,則所有優先級調度分區或者任務所屬分區 放棄調度。否則,在優先級主索引號位圖中獲取位值為I的最低位索引號作為最高優先級 主索引號,在最高優先級次索引號位圖中獲取位值為I的最低位索引號作為最高優先級次 索引號,最高優先級為最高優先級主索引號左移5位后的值加上最高優先級次索引號。最 高優先級分區就緒鏈上的第一個分區是參與優先級分區調度的最高優先級就緒分區,最高 優先級任務就緒鏈上的第一個任務是參與分區內任務調度的最高優先級就緒任務。在獲取 就緒分區和任務的最高優先級時,無論最高優先級是多少,獲取的時間都是一樣的,而且獲 取最高優先級的算法是高可靠和快速的。
5.高可靠實時多級調度
分區調度支持時間調度表、優先級和時間片三種調度方式。系統中允許有多個時 間調度表,可以在運行時更換時間調度表,但任何時刻至多有一個時間調度表參與調度。時 間調度表調度分區必須在時間調度表中配置時間窗口,并且當系統使用了該時間調度表進 行調度時才能參與調度。時間調度表調度在非空閑時間窗口時是時間窗口分區與核心分區 在運行。優先級調度分區只能夠在時間調度表調度的空閑時間窗口和時間窗口分區的空閑 時間運行,優先級相同的分區支持時間片調度。
任務調度時,任務存在是否被搶占的屬性,當任務不允許搶占時,只有當任務主動 放棄處理器,其它任務才能被調度獲取處理器;當任務允許搶占時,分區內同優先級任務按 照時間片輪轉方式調度。高優先級任務需要通過指定高優先級來保證其被優先執行。
在調度時,系統從如下三個就緒鏈表中選擇被調度任務當前正在進行時間調度 表調度的時間窗口分區就緒鏈表(如果是空閑時間窗口或者時間窗口分區不是正常態的, 此鏈表上任務不參與調度),核心分區就緒鏈表(如果核心分區不是正常態的,此鏈表上任 務不參與調度),優先級調度分區中最高優先級分區就緒鏈表(如果最高優先級調度分區 不是正常態的,此鏈表上任務不參與調度)。如果三個就緒鏈表上任務都不參與調度或者就 緒鏈表上沒有任務,則運行空閑任務。系統首先判斷當前時間窗口是否是空閑窗口,時間窗 口調度分區是否正常態,分區中是否存在就緒任務
當前時間窗口是空閑窗口或者時間窗口調度分區不是正常態或者正常態的時間 窗口分區中不存在就緒任務將核心分區的最高優先級就緒任務與優先級調度分區的最高 優先級就緒任務進行優先級比較,兩者中取高優先級任務運行,優先級相同運行核心分區 的最高優先級就緒任務;
當前時間窗口存在分區并且分區是正常態和分區中存在就緒任務將核心分區的最高優先級就緒任務與時間調度表調度分區的最高優先級就緒任務進行優先級比較,兩者 中取高優先級任務運行,優先級相同運行時間調度表調度分區的最高優先級就緒任務。
說明書附圖中圖1是優先級為42的就緒任務在位圖中的位設置示例;圖2是時 間調度表調度分區在時間調度表上的時間窗口 ;圖3是運行分區和運行任務的選擇過程。
權利要求
1. 一種針對分區操作系統的綜合化調度算法,完成一次功能完整的調度過程含以下幾 ①時間調度表調度在非空閑時間窗口時是時間窗口分區與核心分區在運行。
②優先級調度分區只能夠在時間調度表調度的空閑時間窗口和時間窗口分區的空閑時間運行。
采用8x32的位圖管理就緒優先級調度分區和就緒任務0-255的優先級,能快速可靠的選擇優先級調度分區中的最高優先級就緒分區和分區內的最高優先級就緒任務。
③核心分區內最高優先級就緒任務與時間調度表調度分區內最高優先級就緒任務以及優先級調度分區內最高優先級就緒任務通過比較優先級的方式來確定最終運行的任務。
④在調度時,系統從如下三個就緒鏈表中選擇被調度任務當前正在進行時間調度表調度的時間窗口分區就緒鏈表(如果是空閑時間窗口或者時間窗口分區不是正常態的,此鏈表上任務不參與調度),核心分區就緒鏈表(如果核心分區不是正常態的,此鏈表上任務不參與調度),優先級調度分區中最高優先級分區就緒鏈表(如果最高優先級調度分區不是正常態的,此鏈表上任務不參與調度)。如果三個就緒鏈表上任務都不參與調度或者就緒鏈表上沒有任務,則運行空閑任務。系統首先判斷當前時間窗口是否是空閑窗口,時間窗口調度分區是否正常態,分區中是否存在就緒任務 ⑤當前時間窗口是空閑窗口或者時間窗口調度分區不是正常態或者正常態的時間窗口分區中不存在就緒任務將核心分區的最高優先級就緒任務與優先級調度分區的最高優先級就緒任務進行優先級比較,兩者中取高優先級任務運行,優先級相同運行核心分區的最聞優先級就緒任務; ⑥當前時間窗口存在分區并且分區是正常態和分區中存在就緒任務將核心分區的最高優先級就緒任務與時間調度表調度分區的最高優先級就緒任務進行優先級比較,兩者中取高優先級任務運行,優先級相同運行時間調度表調度分區的最高優先級就緒任務。
全文摘要
本發明是一種針對分區操作系統的綜合化調度算法,該方法將分區分類為核心分區和普通分區,對普通分區進行時間調度表、優先級和時間片調度,對分區內任務進行優先級和時間片調度,采用8x32的位圖管理就緒優先級調度分區和就緒任務0-255的優先級,能快速可靠的選擇優先級調度分區中的最高優先級就緒分區和分區內的最高優先級就緒任務,對比核心分區和普通分區中的任務,選擇優先級高的任務進行運行,從而為分區操作系統提供高可靠、實時運行的調度機制。
文檔編號G06F9/46GK103049311SQ20111030596
公開日2013年4月17日 申請日期2011年10月11日 優先權日2011年10月11日
發明者李燕, 尹立孟, 戴凱 申請人:北京科銀京成技術有限公司