一種基于信息共享處理機制的分區(qū)操作系統(tǒng)時間監(jiān)控方法
【技術領域】
[0001]本發(fā)明屬于嵌入式實時操作系統(tǒng)開發(fā)領域,具體涉及一種基于信息共享處理機制的分區(qū)操作系統(tǒng)時間監(jiān)控方法。
【背景技術】
[0002]隨著綜合化、模塊化系統(tǒng)的發(fā)展,嵌入式操作系統(tǒng)從單一平板式結構的操作系統(tǒng),發(fā)展到復雜的多分區(qū)結構的操作系統(tǒng)。在分區(qū)操作系統(tǒng)中,存在兩個層次的調(diào)度。
[0003]在核心中,多個分區(qū)按照調(diào)度表配置分配的時間順序運行,在一個分區(qū)時間窗口運行完成后,會切換到下一個分區(qū)運行;
[0004]在分區(qū)中,分區(qū)中的進程采用基于優(yōu)先級的調(diào)度算法,分區(qū)內(nèi)虛中斷也會占用分區(qū)的運行時間,進程和虛中斷無法感知在其運行時間是否發(fā)生了分區(qū)切換。時間對嵌入式應用是極其關鍵的資源,嵌入式系統(tǒng)開發(fā)者通常很關心分區(qū)和分區(qū)內(nèi)進程、虛中斷的執(zhí)行時間,需要通過時間監(jiān)控數(shù)據(jù)獲取系統(tǒng)的真實運行信息。對于分區(qū)操作系統(tǒng),由于分區(qū)內(nèi)進程、虛中斷無法感知核心中分區(qū)的切換,給監(jiān)控分區(qū)內(nèi)的進程、虛中斷真實運行時間帶來了困難。
【發(fā)明內(nèi)容】
[0005]為了解決【背景技術】中的問題,本發(fā)明提供一種使系統(tǒng)開發(fā)者可以獲取分區(qū)及分區(qū)內(nèi)進程、虛中斷的時間監(jiān)控數(shù)據(jù)的基于信息共享處理機制的分區(qū)操作系統(tǒng)時間監(jiān)控方法。
[0006]本發(fā)明的具體技術方案:
[0007]1)在操作系統(tǒng)核心初始化階段為每個分區(qū)分配一個供核心和分區(qū)共同訪問的共享數(shù)據(jù)塊;所述共享數(shù)據(jù)塊用于每個分區(qū)的分區(qū)外運行時間、分區(qū)的本次切入時間;
[0008]2)在分區(qū)初始化過程中,初始化累積器資源;所述累積器資源包括用于記錄一個分區(qū)運行時間同時記錄分區(qū)的上一次更新時間的分區(qū)累積器,用于記錄一個虛中斷運行時間的虛中斷累積器,用于記錄多個進程運行時間的多個進程累積器;
[0009]3)計算分區(qū)外運行時間;
[0010]3.1)獲取分區(qū)切出時間
[0011]在核心操作系統(tǒng)運行中,當發(fā)生分區(qū)切換時,對于每一個分區(qū),核心操作系統(tǒng)記錄此分區(qū)上一次切出的時間;
[0012]3.2)獲取分區(qū)本次切入時間
[0013]當再次切入此分區(qū)時,核心操作系統(tǒng)記錄切入此分區(qū)的本次切入時間;
[0014]3.3)計算分區(qū)外運行時間;
[0015]根據(jù)分區(qū)上一次切出的時間和分區(qū)的本次切入時間,計算此分區(qū)的分區(qū)外運行時間;
[0016]4)將此分區(qū)外運行時間,分區(qū)的本次切入時間記錄到此分區(qū)對應的共享數(shù)據(jù)塊上;
[0017]5)對分區(qū)內(nèi)運行實體進行時間監(jiān)控;所述運行實體包括分區(qū)本體、分區(qū)內(nèi)進程以及分區(qū)內(nèi)虛中斷
[0018]A、分區(qū)內(nèi)進程的時間監(jiān)控;
[0019]在分區(qū)操作系統(tǒng)運行中,當進程發(fā)生切換時,首先查詢步驟4)所述的共享數(shù)據(jù)塊中記錄的分區(qū)外運行時間,判斷是否發(fā)生了分區(qū)切換;
[0020]若未發(fā)生分區(qū)切換,則根據(jù)進程開始運行時間和進程結束時間,求差算出分區(qū)內(nèi)進程的本次運行時間;將分區(qū)內(nèi)進程的本次運行時間增加到進程累積器中;
[0021]若發(fā)生了分區(qū)切換,則對本次運行時間進行修正,將分區(qū)內(nèi)進程的本次運行時間減去分區(qū)外運行時間;將修正后的分區(qū)內(nèi)進程的本次運行時間增加到進程累積器中;
[0022]B、分區(qū)內(nèi)虛中斷的時間監(jiān)控;
[0023]在分區(qū)操作系統(tǒng)運行中,當切換到虛中斷處理時,記錄虛中斷處理的開始時間,退出虛中斷時,記錄結束時間;
[0024]若未發(fā)生分區(qū)切換,根據(jù)結束時間和開始時間計算本次虛中斷處理時間;
[0025]若發(fā)生分區(qū)切換,則根據(jù)虛中斷開始時間和結束時間,求差算出分區(qū)內(nèi)虛中斷本次運行時間;將分區(qū)內(nèi)虛中斷本次運行時間增加到虛中斷累積器中;
[0026]C、對分區(qū)運行時間進行監(jiān)控;
[0027]在分區(qū)操作系統(tǒng)運行中,在進程或虛中斷發(fā)生切換時,檢查是否發(fā)生分區(qū)切換,如果發(fā)生了分區(qū)切換,則同時對分區(qū)本次運行時間進行計算;具體如下:
[0028]通過分區(qū)累計器內(nèi)的上一次分區(qū)的更新時間、步驟3)所述的分區(qū)外運行時間和當前時間進行計算,公式為:
[0029]分區(qū)本次運行時間=(當前時間)_(上一次分區(qū)的更新時間)_(分區(qū)外運行時間)
[0030]將分區(qū)本次運行時間增加到分區(qū)累積器中;
[0031]6)重復步驟3)至步驟5),實現(xiàn)對操作系統(tǒng)內(nèi)所有分區(qū)、分區(qū)內(nèi)進程和分區(qū)內(nèi)虛中斷的事件監(jiān)控。
[0032]本發(fā)明的優(yōu)點在于:
[0033]1、本發(fā)明的方法實現(xiàn)了對分區(qū)、分區(qū)內(nèi)進程和虛中斷運行時間的時間監(jiān)控,幫助嵌入式實時操作系統(tǒng)開發(fā)者從運行時間角度獲取系統(tǒng)真實運行信息。
【附圖說明】
[0034]圖1計算分區(qū)外運行時間的示意圖。
[0035]圖2核心和分區(qū)通過共享數(shù)據(jù)塊完成時間監(jiān)控信息傳遞的示意圖。
[0036]圖3分區(qū)內(nèi)進程、分區(qū)內(nèi)虛中斷時間監(jiān)控流程圖。
【具體實施方式】
[0037]本發(fā)明提供了一種基于信息共享處理機制的分區(qū)操作系統(tǒng)時間監(jiān)控方法,該方法的具體步驟是:
[0038]1)在操作系統(tǒng)核心初始化階段為每個分區(qū)分配一個供核心和分區(qū)共同訪問的共享數(shù)據(jù)塊;所述共享數(shù)據(jù)塊用于每個分區(qū)的分區(qū)外運行時間、分區(qū)的本次切入時間;
[0039]2)在分區(qū)初始化過程中,初始化累積器資源;所述累積器資源包括用于記錄一個分區(qū)運行時間同時記錄分區(qū)的上一次更新時間的分區(qū)累積器,用于記錄一個虛中斷運行時間的虛中斷累積器,用于記錄多個進程運行時間的多個進程累積器;
[0040]3)計算分區(qū)外運行時間;
[0041]3.1)獲取分區(qū)切出時間
[0042]在核心操作系統(tǒng)運行中,當發(fā)生分區(qū)切換時,對于每一個分區(qū),核心操作系統(tǒng)記錄此分區(qū)上一次切出的時間;
[0043]3.2)獲取分區(qū)本次切入時間
[0044]當再次切入此分區(qū)時,核心操作系統(tǒng)記錄切入此分區(qū)的本次切入時間;