[發明專利]一種Windows系統實時擴展的兩級調度方法有效
| 申請號: | 201410001033.8 | 申請日: | 2014-01-02 |
| 公開(公告)號: | CN103744726B | 公開(公告)日: | 2017-01-04 |
| 發明(設計)人: | 杜承烈;蔣澤軍;陳進朝;王麗芳;楊皓;秦楠;王兆文;黃云婷 | 申請(專利權)人: | 西北工業大學 |
| 主分類號: | G06F9/48 | 分類號: | G06F9/48 |
| 代理公司: | 西北工業大學專利中心61204 | 代理人: | 王鮮凱 |
| 地址: | 710072 *** | 國省代碼: | 臺灣;71 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 windows 系統 實時 擴展 兩級 調度 方法 | ||
技術領域
本發明屬于計算機應用技術領域,涉及一種Windows系統實時擴展的兩級調度方法。
背景技術
隨著嵌入式實時技術以及虛擬試驗技術的飛速發展,在工業領域中和仿真試驗中Windows操作系統也越來越多的被用作實時應用的系統平臺。為了滿足實時性的要求,增加Windows系統本身的實時能力非常必要?,F有的實時操作系統專利,多是有關實時操作系統理論有關的創新如調度、資源管理等,基本沒有關于Windows平臺對應實時方案?,F有Windows實時方案均為商業方案如:Windows?RTX、INtime。他們都是以接管HAL(硬件抽象層)的方式提供一套與Windows本身系統并行的體系。雖然他們解決了Windows本身實時能力不足的問題,但改造工作成本很高,一些常用驅動需要重新改寫,系統靈活性降低。其商業性質,更是導致用戶的使用成本大大增加,且不易定制。國內有專利《基于Windows驅動程序的實時系統》利用外部接口卡提供高精度定時,通過直接操作CPU寄存器完成實時任務切換。雖然基本滿足了實時要求,但是直接操作寄存器有較高風險,且主要是面向嵌入式實時加工。而本發明則主要利用Windows本身調度的任務切換,提供一種線程可控的兩級調度技術,從而提供實時基礎。在此基礎上可以方便的擴充或自定義實時調度方案,完成實時的用戶程序的編寫。
發明內容
要解決的技術問題
為了避免現有技術的不足之處,本發明提出一種Windows系統實時擴展的兩級調度方法,主要解決了現有技術方法中Windows系統中任務的切換代價大和定時精度低問題。
技術方案
一種Windows系統實時擴展的兩級調度方法,其特征在于步驟如下:
步驟1:利用Windows系統中進程和線程CPU親緣性標志位,對系統資源進行重新分配,把系統中所有進程和線程都指向非實時內核,空出運行實時任務的CPU核心,為實時任務提供足夠的運行資源;
步驟2:同時操作接口封裝、中斷管理以及內存鎖定與映射這三個部分來實現實時任務的運行:
a)借助于微軟公司提供的系統服務描述符表SSDT,利用已知的Windows接口特征碼,搜索系統內存指令,獲取進程和線程的創建、掛起、恢復、終止四個基本操作的函數入口地址,并根據系統函數原型,利用嵌入匯編進行調用,完成特定操作接口的封裝;
b)使用IOAPIC可編程中斷控制器編程把外部中斷分派給各個非實時內核,避免外部中斷對實時內核的干擾,通過設定實時內核內的初始計數寄存器上的計數值,產生10-100微秒的定時信號,為實時調度程序提供調度信號;
c)在內核態下預先申請連續的物理頁面,對其進行鎖定,防止該頁面的換入換出,利用MDL機制,對該物理頁面進行用戶態映射,使用戶態和內核態能夠操作同一塊物理空間,避免運行模式切換時造成的數據拷貝,將線程控制塊TCB和進程控制塊PCB映射為用戶可用地址,在用戶態下進行調度算法的編寫與調試;
步驟3:系統在執行具體任務時,根據不同的任務類型,采用不同的處理內核調度策略,普通任務、Windows系統任務和外部中斷使用非實時內核處理,采用Window系統自身的調度策略;實時任務、指定的特殊中斷將會被實時內核模塊處理,采用實時調度機制,從而實現Windows實時擴展的兩級調度。
所述步驟2中設定初始計數寄存器上的計數值的步驟如下:
步驟a:獲取CPU出廠的額定主頻和原始外頻,通過這兩個值計算出倍頻,三者之間的關系為:主頻等于外頻乘上倍頻;
步驟b:查詢注冊表或利用rdtsc匯編指令計算得出CPU當前真實主頻,根據步驟a計算的倍頻,反算得出真實的外頻,得到系統有效的總線頻率;
步驟c:初始計數寄存器所填充的數值即為:調度周期/總線頻率。
所述步驟3中實時調度機制的步驟如下:
步驟a:按照線程固有優先級將線程TCB插入READY_LIST;
步驟b:根據線程運行結果將狀態改變的線程TCB直接變換鏈表;
步驟c:利用軟中斷陷入內核進行任務切換,在調度時首先需要將DELAY_LIST中開始時間已到的線程插入READY_LIST中;
步驟d:對當前調度情形做判斷,查看最高優先級任務是否改變:若沒有改變則直接結束時鐘中斷處理,任務接著運行;若有改變則進入DPC例程進行相關調度,選出READY_LIST中優先級最高且狀態為READY的線程,恢復其運行。
有益效果
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于西北工業大學,未經西北工業大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201410001033.8/2.html,轉載請聲明來源鉆瓜專利網。





