[發明專利]一種優先級搶占時間片輪轉操作系統中任務定時調度方法有效
| 申請號: | 201310746023.2 | 申請日: | 2013-12-30 |
| 公開(公告)號: | CN103713948A | 公開(公告)日: | 2014-04-09 |
| 發明(設計)人: | 龔健;楊孟飛;喬磊;楊樺;顧斌;彭飛;王婧;徐建;劉波 | 申請(專利權)人: | 北京控制工程研究所 |
| 主分類號: | G06F9/48 | 分類號: | G06F9/48 |
| 代理公司: | 中國航天科技專利中心 11009 | 代理人: | 安麗 |
| 地址: | 100080 *** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 優先級 搶占 時間 輪轉 操作系統 任務 定時 調度 方法 | ||
技術領域
本發明涉及一種優先級搶占時間片輪轉操作系統中任務定時調度方法,屬于嵌入式操作系統領域。
背景技術
在大多數衛星控制計算機中,軟件主要以任務的形式被執行,并且這些任務需要按照控制周期定時進行調度,即在每個控制周期中,這些任務必須分別在控制周期內預先確定的時間點開始執行,且必須在規定的時間內執行完畢。因此任務的定時調度是衛星控制計算機系統軟件的重要功能。
目前新一代空間飛行器嵌入式操作系統的核心調度策略是優先級搶占并結合時間片輪轉進行任務調度。為了滿足衛星控制計算機任務定時調度的需求,需要在操作系統中實現實時定時調度。本專利作為空間飛行器嵌入式操作系統的一個組成部分,在核心調度策略的基礎上實現了定時調度的方法。如果不采用本專利所提供的方法,則無法滿足當前衛星控制計算機控制周期任務運行的需求。而采用本專利所提供的方法,則操作系統既能夠實現基于優先級的搶占式任務調度,又能夠實現控制周期任務的定時調度。這樣就滿足了當前不同空間飛行器的不同需求。
發明內容
本發明解決的技術問題是:克服現有技術的不足,提供了一種優先級搶占時間片輪轉操作系統中任務定時調度方法,使得操作系統既能夠實現基于優先級搶占和時間片輪轉的調度,又能實現基于控制周期的定時任務調度。
本發明的技術方案是:一種優先級搶占時間片輪轉操作系統中任務定時調度方法,步驟如下:
1)創建并封裝用戶任務;
11)創建任務前,將所有用戶任務控制塊指針定義為一個一維數組SYSTaskID[N],其中N為任務個數;
12)設操作系統任務創建接口函數為OSTaskSpawn(),用戶任務Task_N的函數為TaskFunc_N(),對函數TaskFunc_N()進行封裝,得到封裝后的函數TaskEncap_N(),具體封裝過程為:設操作系統任務掛起接口函數為OSTaskSuspend();則在TaskEncap_N()中,進入任務無限循環體時,采用操作系統任務掛起接口函數OSTaskSuspend()掛起當前任務,然后再調用用戶任務函數TaskFunc_N();
13)創建用戶任務SYSTaskID[N]=OSTaskSpawn(TaskEncap_N,param_1…param_n),其中param_1…param_n為操作系統任務創建接口函數OSTaskSpawn()中的其他參數;在調用接口函數OSTaskSpawn()創建Task_1到Task_N時,把任務Task_1到Task_N設置為相同的優先級;
2)利用位圖快速索引用戶任務的起始調度時刻以及用戶任務控制塊指針;
21)定義一個用戶任務的起始調度時刻位圖MapSchedeIndex[],位圖大小為根據用戶調度需求將位圖MapSchedeIndex[]中需要進行任務調度的位置置1,其余位置置0;
22)定義一個用戶任務的起始調度任務位圖MapSchedeTask[],位圖大小為將MapSchedeTask[]中與MapSchedeIndex[]中值為1的位置所對應的位置上,設置成需要調度的任務的索引值,所述的索引值為SYSTaskID[N]的索引值N;
3)時間片中斷時,利用時間片中斷鉤子函數控制任務的定時調度;
31)在操作系統內核的時間片中斷中,對時間片進行計數,然后根據位圖MapSchedeIndex[]判斷該時間片是否對新任務進行調度的時刻;
32)當MapSchedeIndex[]中的值為0時,不進行任何操作;當MapSchedeIndex[]中的值為1時,則該位置所對應的時刻為需要對新任務進行調度的時刻,并設操作系統任務恢復接口函數為OSTaskResume(),操作系統任務重啟動接口函數為OSTaskRestart(),將當前任務控制塊指針與SYSTaskID[N]中上一個時間段的任務控制塊指針相比較,如果當前任務控制塊指針與SYSTaskID[N]中上一個時間段的任務控制塊指針不相等則調用OSTaskResume()直接恢復本時間段任務;如果當前任務控制塊指針與SYSTaskID[N]中上一個時間段的任務控制塊指針相等,則需要調用OSTaskRestart()重新啟動上一個時間段的任務,然后再調用OSTaskResume()恢復本時間段任務;其中所述上一個時間段的任務和本時間段任務均通過位圖MapSchedeTask[]進行快速索引。
本發明與現有技術相比具有如下優點:
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于北京控制工程研究所,未經北京控制工程研究所許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201310746023.2/2.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:帶玻璃鑲嵌條的玻璃面板的制造方法及制造裝置
- 下一篇:一種金香菊花的栽培方法





