本發(fā)明涉及嵌入式實(shí)時(shí)操作系統(tǒng)技術(shù)領(lǐng)域,更具體地說,涉及一種CPU負(fù)載率計(jì)算方法及裝置。
背景技術(shù):
在ECU(Electronic Control Unit,電子控制器)的設(shè)計(jì)和開發(fā)過程中,為確保程序的可靠運(yùn)行,需要實(shí)時(shí)計(jì)算CPU(Central Processing Unit,中央處理器)的負(fù)載率。
目前檢測CPU負(fù)載率通常和嵌入式實(shí)時(shí)操作系統(tǒng)相結(jié)合,通過統(tǒng)計(jì)測試時(shí)段內(nèi)系統(tǒng)靜態(tài)配置的任務(wù)運(yùn)行時(shí)長以及中斷運(yùn)行時(shí)長來計(jì)算CPU負(fù)載率,其中,上述任務(wù)包括基本任務(wù)和擴(kuò)展任務(wù),但是,由于測試時(shí)段內(nèi)任務(wù)激活、結(jié)束、搶占的時(shí)長以及中斷預(yù)處理、后處理的時(shí)長均未統(tǒng)計(jì),這就導(dǎo)致計(jì)算得到的CPU負(fù)載率誤差很大。
技術(shù)實(shí)現(xiàn)要素:
有鑒于此,本發(fā)明提供一種CPU負(fù)載率計(jì)算方法及裝置,以解決現(xiàn)有的CPU負(fù)載率計(jì)算誤差很大的問題。技術(shù)方案如下:
一種CPU負(fù)載率計(jì)算方法,包括:
當(dāng)接收到攜帶有測試時(shí)段的測試通知時(shí),根據(jù)嵌入式實(shí)時(shí)操作系統(tǒng)的系統(tǒng)時(shí)間實(shí)時(shí)更新預(yù)設(shè)標(biāo)識(shí)的狀態(tài),并在所述嵌入式實(shí)時(shí)操作系統(tǒng)的空閑任務(wù)運(yùn)行線程之前添加第一接口函數(shù)線程;
開啟所述第一接口函數(shù)線程,并根據(jù)所述嵌入式實(shí)時(shí)操作系統(tǒng)的第一當(dāng)前系統(tǒng)時(shí)間判斷所述預(yù)設(shè)標(biāo)識(shí)的狀態(tài)是否為無效狀態(tài),所述無效狀態(tài)用于表征所述第一當(dāng)前系統(tǒng)時(shí)間未到達(dá)所述測試時(shí)段內(nèi)的測試終止時(shí)間;
當(dāng)所述預(yù)設(shè)標(biāo)識(shí)的狀態(tài)為所述無效狀態(tài),并且所述第一當(dāng)前系統(tǒng)時(shí)間在所述測試時(shí)段內(nèi)時(shí),將所述第一當(dāng)前系統(tǒng)時(shí)間確定為空閑任務(wù)的啟動(dòng)時(shí)間;
開啟所述空閑任務(wù)運(yùn)行線程,并在運(yùn)行所述空閑任務(wù)過程中根據(jù)所述嵌入式實(shí)時(shí)操作系統(tǒng)的第二當(dāng)前系統(tǒng)時(shí)間判斷所述預(yù)設(shè)標(biāo)識(shí)的狀態(tài)是否為第一有效狀態(tài),所述第一有效狀態(tài)用于表征所述第二當(dāng)前系統(tǒng)時(shí)間等于所述測試終止時(shí)間;
當(dāng)所述預(yù)設(shè)標(biāo)識(shí)的狀態(tài)為所述第一有效狀態(tài)時(shí),將所述第二當(dāng)前系統(tǒng)時(shí)間確定為所述空閑任務(wù)的結(jié)束時(shí)間,并根據(jù)所述空閑任務(wù)的啟動(dòng)時(shí)間和所述空閑任務(wù)的結(jié)束時(shí)間計(jì)算所述空閑任務(wù)的運(yùn)行時(shí)長;
根據(jù)所述空閑任務(wù)的運(yùn)行時(shí)長和所述測試時(shí)段的時(shí)長計(jì)算CPU負(fù)載率。
優(yōu)選的,所述開啟所述空閑任務(wù)運(yùn)行線程,并在運(yùn)行所述空閑任務(wù)過程中根據(jù)所述嵌入式實(shí)時(shí)操作系統(tǒng)的第二當(dāng)前系統(tǒng)時(shí)間判斷所述預(yù)設(shè)標(biāo)識(shí)的狀態(tài)是否為第一有效狀態(tài),之后,還包括:
當(dāng)所述預(yù)設(shè)標(biāo)識(shí)的狀態(tài)不為所述第一有效狀態(tài)時(shí),判斷所述嵌入式實(shí)時(shí)操作系統(tǒng)中是否存在任務(wù)搶占;
當(dāng)所述嵌入式實(shí)時(shí)操作系統(tǒng)中存在任務(wù)搶占時(shí),在所述空閑任務(wù)運(yùn)行線程之后添加第二接口函數(shù)線程;
開啟所述第二接口函數(shù)線程,并根據(jù)所述嵌入式實(shí)時(shí)操作系統(tǒng)的第三當(dāng)前系統(tǒng)時(shí)間判斷所述預(yù)設(shè)標(biāo)識(shí)的狀態(tài)是否為第二有效狀態(tài),所述第二有效狀態(tài)用于表征所述第三當(dāng)前系統(tǒng)時(shí)間等于所述測試終止時(shí)間;
當(dāng)所述預(yù)設(shè)標(biāo)識(shí)的狀態(tài)為所述第二有效狀態(tài)時(shí),將所述第三當(dāng)前系統(tǒng)時(shí)間確定為所述空閑任務(wù)的結(jié)束時(shí)間,并根據(jù)所述空閑任務(wù)的啟動(dòng)時(shí)間和所述空閑任務(wù)的結(jié)束時(shí)間計(jì)算所述空閑任務(wù)的運(yùn)行時(shí)長;
根據(jù)所述空閑任務(wù)的運(yùn)行時(shí)長和所述測試時(shí)段的時(shí)長計(jì)算CPU負(fù)載率。
優(yōu)選的,還包括:
當(dāng)所述預(yù)設(shè)標(biāo)識(shí)的狀態(tài)不為所述無效狀態(tài),或者所述第一當(dāng)前系統(tǒng)時(shí)間不在所述測試時(shí)段內(nèi)時(shí),開啟所述空閑任務(wù)運(yùn)行線程并運(yùn)行所述空閑任務(wù)。
優(yōu)選的,上述任意一項(xiàng)技術(shù)方案中,所述根據(jù)所述空閑任務(wù)的運(yùn)行時(shí)長和所述測試時(shí)段的時(shí)長計(jì)算CPU負(fù)載率,包括:
根據(jù)所述測試時(shí)段的時(shí)長和所述空閑任務(wù)的運(yùn)行時(shí)長計(jì)算靜態(tài)配置運(yùn)行時(shí)長;
依據(jù)所述靜態(tài)配置運(yùn)行時(shí)長和所述測試時(shí)段的時(shí)長計(jì)算CPU負(fù)載率。
一種CPU負(fù)載率計(jì)算裝置,包括:更新添加模塊、第一開啟判斷模塊、時(shí)間確定模塊、第二開啟判斷模塊、第一確定計(jì)算模塊和第一計(jì)算模塊;
所述更新添加模塊,用于當(dāng)接收到攜帶有測試時(shí)段的測試通知時(shí),根據(jù)嵌入式實(shí)時(shí)操作系統(tǒng)的系統(tǒng)時(shí)間實(shí)時(shí)更新預(yù)設(shè)標(biāo)識(shí)的狀態(tài),并在所述嵌入式實(shí)時(shí)操作系統(tǒng)的空閑任務(wù)運(yùn)行線程之前添加第一接口函數(shù)線程;
所述第一開啟判斷模塊,用于開啟所述第一接口函數(shù)線程,并根據(jù)所述嵌入式實(shí)時(shí)操作系統(tǒng)的第一當(dāng)前系統(tǒng)時(shí)間判斷所述預(yù)設(shè)標(biāo)識(shí)的狀態(tài)是否為無效狀態(tài),所述無效狀態(tài)用于表征所述第一當(dāng)前系統(tǒng)時(shí)間未到達(dá)所述測試時(shí)段內(nèi)的測試終止時(shí)間;
所述時(shí)間確定模塊,用于當(dāng)所述預(yù)設(shè)標(biāo)識(shí)的狀態(tài)為所述無效狀態(tài),并且所述第一當(dāng)前系統(tǒng)時(shí)間在所述測試時(shí)段內(nèi)時(shí),將所述第一當(dāng)前系統(tǒng)時(shí)間確定為空閑任務(wù)的啟動(dòng)時(shí)間;
所述第二開啟判斷模塊,用于開啟所述空閑任務(wù)運(yùn)行線程,并在運(yùn)行所述空閑任務(wù)過程中根據(jù)所述嵌入式實(shí)時(shí)操作系統(tǒng)的第二當(dāng)前系統(tǒng)時(shí)間判斷所述預(yù)設(shè)標(biāo)識(shí)的狀態(tài)是否為第一有效狀態(tài),所述第一有效狀態(tài)用于表征所述第二當(dāng)前系統(tǒng)時(shí)間等于所述測試終止時(shí)間;
所述第一確定計(jì)算模塊,用于當(dāng)所述預(yù)設(shè)標(biāo)識(shí)的狀態(tài)為所述第一有效狀態(tài)時(shí),將所述第二當(dāng)前系統(tǒng)時(shí)間確定為所述空閑任務(wù)的結(jié)束時(shí)間,并根據(jù)所述空閑任務(wù)的啟動(dòng)時(shí)間和所述空閑任務(wù)的結(jié)束時(shí)間計(jì)算所述空閑任務(wù)的運(yùn)行時(shí)長;
所述第一計(jì)算模塊,用于根據(jù)所述空閑任務(wù)的運(yùn)行時(shí)長和所述測試時(shí)段的時(shí)長計(jì)算CPU負(fù)載率。
優(yōu)選的,所述第二開啟判斷模塊,之后,還包括:判斷模塊、添加模塊、第三開啟判斷模塊、第二確定計(jì)算模塊和第二計(jì)算模塊;
所述判斷模塊,用于當(dāng)所述預(yù)設(shè)標(biāo)識(shí)的狀態(tài)不為所述第一有效狀態(tài)時(shí),判斷所述嵌入式實(shí)時(shí)操作系統(tǒng)中是否存在任務(wù)搶占;
所述添加模塊,用于當(dāng)所述嵌入式實(shí)時(shí)操作系統(tǒng)中存在任務(wù)搶占時(shí),在所述空閑任務(wù)運(yùn)行線程之后添加第二接口函數(shù)線程;
所述第三開啟判斷模塊,用于開啟所述第二接口函數(shù)線程,并根據(jù)所述嵌入式實(shí)時(shí)操作系統(tǒng)的第三當(dāng)前系統(tǒng)時(shí)間判斷所述預(yù)設(shè)標(biāo)識(shí)的狀態(tài)是否為第二有效狀態(tài),所述第二有效狀態(tài)用于表征所述第三當(dāng)前系統(tǒng)時(shí)間等于所述測試終止時(shí)間;
所述第二確定計(jì)算模塊,用于當(dāng)所述預(yù)設(shè)標(biāo)識(shí)的狀態(tài)為所述第二有效狀態(tài)時(shí),將所述第三當(dāng)前系統(tǒng)時(shí)間確定為所述空閑任務(wù)的結(jié)束時(shí)間,并根據(jù)所述空閑任務(wù)的啟動(dòng)時(shí)間和所述空閑任務(wù)的結(jié)束時(shí)間計(jì)算所述空閑任務(wù)的運(yùn)行時(shí)長;
所述第二計(jì)算模塊,用于根據(jù)所述空閑任務(wù)的運(yùn)行時(shí)長和所述測試時(shí)段的時(shí)長計(jì)算CPU負(fù)載率。
優(yōu)選的,還包括:開啟運(yùn)行模塊;
所述開啟運(yùn)行模塊,用于當(dāng)所述預(yù)設(shè)標(biāo)識(shí)的狀態(tài)不為所述無效狀態(tài),或者所述第一當(dāng)前系統(tǒng)時(shí)間不在所述測試時(shí)段內(nèi)時(shí),開啟所述空閑任務(wù)運(yùn)行線程并運(yùn)行所述空閑任務(wù)。
優(yōu)選的,上述任意一項(xiàng)技術(shù)方案中,所述第一計(jì)算模塊,具體用于:
根據(jù)所述測試時(shí)段的時(shí)長和所述空閑任務(wù)的運(yùn)行時(shí)長計(jì)算靜態(tài)配置運(yùn)行時(shí)長;依據(jù)所述靜態(tài)配置運(yùn)行時(shí)長和所述測試時(shí)段的時(shí)長計(jì)算CPU負(fù)載率。
優(yōu)選的,所述第二計(jì)算模塊,具體用于:
根據(jù)所述測試時(shí)段的時(shí)長和所述空閑任務(wù)的運(yùn)行時(shí)長計(jì)算靜態(tài)配置運(yùn)行時(shí)長;依據(jù)所述靜態(tài)配置運(yùn)行時(shí)長和所述測試時(shí)段的時(shí)長計(jì)算CPU負(fù)載率。
相較于現(xiàn)有技術(shù),本發(fā)明實(shí)現(xiàn)的有益效果為:
以上本發(fā)明提供的一種CPU負(fù)載率計(jì)算方法及裝置,該方法通過統(tǒng)計(jì)測試時(shí)段內(nèi)嵌入式實(shí)時(shí)操作系統(tǒng)中空閑任務(wù)運(yùn)行的運(yùn)行時(shí)長計(jì)算CPU負(fù)載率,由于空閑任務(wù)在嵌入式實(shí)時(shí)操作系統(tǒng)中的優(yōu)先級(jí)最低,因此,避免了統(tǒng)計(jì)測試時(shí)段內(nèi)任務(wù)激活、結(jié)束、搶占的時(shí)長以及中斷預(yù)處理、后處理的時(shí)長,從而提高了CPU負(fù)載率的計(jì)算準(zhǔn)確度。
附圖說明
為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)提供的附圖獲得其他的附圖。
圖1為本發(fā)明實(shí)施例一公開的一種CPU負(fù)載率計(jì)算方法流程圖;
圖2為本發(fā)明實(shí)施例二公開的一種CPU負(fù)載率計(jì)算方法流程圖;
圖3為本發(fā)明實(shí)施例三公開的一種CPU負(fù)載率計(jì)算方法部分流程圖;
圖4為本發(fā)明實(shí)施例四公開的一種CPU負(fù)載率計(jì)算裝置結(jié)構(gòu)示意圖;
圖5為本發(fā)明實(shí)施例五公開的一種CPU負(fù)載率計(jì)算裝置結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
實(shí)施例一
本發(fā)明實(shí)施例一公開了一種CPU負(fù)載率計(jì)算方法,應(yīng)用于CPU負(fù)載率計(jì)算裝置,方法流程圖如圖1所示,該CPU負(fù)載率計(jì)算方法包括如下步驟:
S101,當(dāng)接收到攜帶有測試時(shí)段的測試通知時(shí),根據(jù)嵌入式實(shí)時(shí)操作系統(tǒng)的系統(tǒng)時(shí)間實(shí)時(shí)更新預(yù)設(shè)標(biāo)識(shí)的狀態(tài),并在嵌入式實(shí)時(shí)操作系統(tǒng)的空閑任務(wù)運(yùn)行線程之前添加第一接口函數(shù)線程;
在執(zhí)行步驟S101的過程中,根據(jù)嵌入式實(shí)時(shí)操作系統(tǒng)的系統(tǒng)時(shí)間實(shí)時(shí)更新預(yù)設(shè)標(biāo)識(shí)的狀態(tài),狀態(tài)包括有效狀態(tài)以及無效狀態(tài),無效狀態(tài)用于表征系統(tǒng)時(shí)間未到達(dá)測試時(shí)段內(nèi)的測試終止時(shí)間;
需要說明的是,由于在嵌入式實(shí)時(shí)操作系統(tǒng)中空閑任務(wù)的優(yōu)先級(jí)最低,系統(tǒng)默認(rèn)啟動(dòng)且不可刪除,因此,在嵌入式實(shí)時(shí)操作系統(tǒng)中如果沒有靜態(tài)配置的任務(wù)處于就緒狀態(tài)或中斷發(fā)生時(shí),空閑任務(wù)就會(huì)投入運(yùn)行,因此可通過統(tǒng)計(jì)測試時(shí)段內(nèi)空閑任務(wù)運(yùn)行時(shí)間來計(jì)算CPU負(fù)載率。
S102,開啟第一接口函數(shù)線程,并根據(jù)嵌入式實(shí)時(shí)操作系統(tǒng)的第一當(dāng)前系統(tǒng)時(shí)間判斷預(yù)設(shè)標(biāo)識(shí)的狀態(tài)是否為無效狀態(tài),所述無效狀態(tài)用于表征第一當(dāng)前系統(tǒng)時(shí)間未到達(dá)測試時(shí)段內(nèi)的測試終止時(shí)間;當(dāng)判斷預(yù)設(shè)標(biāo)識(shí)的狀態(tài)為無效狀態(tài)時(shí),執(zhí)行步驟S103;
S103,當(dāng)?shù)谝划?dāng)前系統(tǒng)時(shí)間在測試時(shí)段內(nèi)時(shí),將第一當(dāng)前系統(tǒng)時(shí)間確定為空閑任務(wù)的啟動(dòng)時(shí)間;
在執(zhí)行步驟S103的過程中,可為當(dāng)前空閑任務(wù)啟動(dòng)時(shí)間分配唯一的存儲(chǔ)區(qū)域進(jìn)行存儲(chǔ)。
S104,開啟空閑任務(wù)運(yùn)行線程,并在運(yùn)行空閑任務(wù)過程中根據(jù)嵌入式實(shí)時(shí)操作系統(tǒng)的第二當(dāng)前系統(tǒng)時(shí)間判斷預(yù)設(shè)標(biāo)識(shí)的狀態(tài)是否為第一有效狀態(tài),所述第一有效狀態(tài)用于表征第二當(dāng)前系統(tǒng)時(shí)間等于測試終止時(shí)間;當(dāng)判斷預(yù)設(shè)標(biāo)識(shí)的狀態(tài)為第一有效狀態(tài)時(shí),執(zhí)行步驟S105;
S105,將第二當(dāng)前系統(tǒng)時(shí)間確定為空閑任務(wù)的結(jié)束時(shí)間,并根據(jù)空閑任務(wù)的啟動(dòng)時(shí)間和空閑任務(wù)的結(jié)束時(shí)間計(jì)算空閑任務(wù)的運(yùn)行時(shí)長;
在執(zhí)行步驟S105的過程中,可為計(jì)算得到的空閑任務(wù)的運(yùn)行時(shí)長分配唯一的存儲(chǔ)區(qū)域進(jìn)行存儲(chǔ)。
S106,根據(jù)空閑任務(wù)的運(yùn)行時(shí)長和測試時(shí)段的時(shí)長計(jì)算CPU負(fù)載率;
在執(zhí)行步驟S106的過程中,根據(jù)測試時(shí)段內(nèi)空閑任務(wù)的運(yùn)行時(shí)長計(jì)算靜態(tài)配置運(yùn)行時(shí)長,該靜態(tài)配置運(yùn)行時(shí)長包括靜態(tài)配置的任務(wù)運(yùn)行時(shí)長、靜態(tài)配置的中斷運(yùn)行時(shí)長、以及任務(wù)激活、結(jié)束、搶占的時(shí)長以及中斷預(yù)處理、后處理的時(shí)長,也就是說靜態(tài)配置時(shí)長就用于表征測試時(shí)段內(nèi)完整的任務(wù)和中斷時(shí)長;根據(jù)靜態(tài)配置運(yùn)行時(shí)長和測試時(shí)段的時(shí)長計(jì)算CPU負(fù)載率;
因此,在執(zhí)行步驟S106的過程中,CPU負(fù)載率可采取如下公式(1)進(jìn)行計(jì)算:
其中,a為空閑任務(wù)的運(yùn)行時(shí)長,b為測試時(shí)段的時(shí)長。
還需要說明的是,本實(shí)施例公開的CPU負(fù)載率計(jì)算方法,還可包括:當(dāng)預(yù)設(shè)標(biāo)識(shí)的狀態(tài)不為無效狀態(tài),或者第一當(dāng)前系統(tǒng)時(shí)間不在測試時(shí)段內(nèi)時(shí),開啟空閑任務(wù)運(yùn)行線程并運(yùn)行空閑任務(wù)。
本發(fā)明實(shí)施例公開的一種CPU負(fù)載率計(jì)算方法,該方法通過統(tǒng)計(jì)測試時(shí)段內(nèi)嵌入式實(shí)時(shí)操作系統(tǒng)中空閑任務(wù)運(yùn)行的運(yùn)行時(shí)長計(jì)算CPU負(fù)載率,由于空閑任務(wù)在嵌入式實(shí)時(shí)操作系統(tǒng)中的優(yōu)先級(jí)最低,因此,避免了統(tǒng)計(jì)測試時(shí)段內(nèi)任務(wù)激活、結(jié)束、搶占的時(shí)長以及中斷預(yù)處理、后處理的時(shí)長,從而提高了CPU負(fù)載率的計(jì)算準(zhǔn)確度。
實(shí)施例二
結(jié)合上述本發(fā)明實(shí)施例一公開的CPU負(fù)載率計(jì)算方法,本實(shí)施例二還公開一種CPU負(fù)載率計(jì)算方法,方法流程圖如圖2所示,如圖1示出的步驟S104之后,還包括如下步驟:
S107,當(dāng)預(yù)設(shè)標(biāo)識(shí)的狀態(tài)不為第一有效狀態(tài)時(shí),判斷嵌入式實(shí)時(shí)操作系統(tǒng)中是否存在任務(wù)搶占;當(dāng)判斷嵌入式實(shí)時(shí)操作系統(tǒng)中存在任務(wù)搶占時(shí),執(zhí)行步驟S108;
在執(zhí)行步驟S107的過程中,由于在嵌入式實(shí)時(shí)操作系統(tǒng)中空閑任務(wù)的優(yōu)先級(jí)最低,因此,由于網(wǎng)絡(luò)環(huán)境的變化,可能導(dǎo)致嵌入式實(shí)時(shí)操作系統(tǒng)運(yùn)行空閑任務(wù)的過程中出現(xiàn)其他任務(wù)或中斷,此時(shí),嵌入式實(shí)時(shí)操作系統(tǒng)中就會(huì)存在任務(wù)搶占。
S108,在空閑任務(wù)運(yùn)行線程之后添加第二接口函數(shù)線程;
S109,開啟第二接口函數(shù)線程,并根據(jù)嵌入式實(shí)時(shí)操作系統(tǒng)的第三當(dāng)前系統(tǒng)時(shí)間判斷預(yù)設(shè)標(biāo)識(shí)的狀態(tài)是否為第二有效狀態(tài),所述第二有效狀態(tài)用于表征第三當(dāng)前系統(tǒng)時(shí)間等于測試終止時(shí)間;當(dāng)判斷預(yù)設(shè)標(biāo)識(shí)的狀態(tài)為第二有效狀態(tài)時(shí),執(zhí)行步驟S110;
S110,將第三當(dāng)前系統(tǒng)時(shí)間確定為空閑任務(wù)的結(jié)束時(shí)間,并根據(jù)空閑任務(wù)的啟動(dòng)時(shí)間和空閑任務(wù)的結(jié)束時(shí)間計(jì)算空閑任務(wù)的運(yùn)行時(shí)長;
S111,根據(jù)空閑任務(wù)的運(yùn)行時(shí)長和測試時(shí)段的時(shí)長計(jì)算CPU負(fù)載率。
需要說明的是,本實(shí)施例公開的CPU負(fù)載率計(jì)算方法,還可包括:當(dāng)判斷嵌入式實(shí)時(shí)操作系統(tǒng)中不存在任務(wù)搶占時(shí),執(zhí)行步驟S112;
S112,開啟空閑任務(wù)運(yùn)行線程并運(yùn)行空閑任務(wù)。
本實(shí)施例公開的CPU負(fù)載率計(jì)算方法,還可包括:當(dāng)判斷預(yù)設(shè)標(biāo)識(shí)的狀態(tài)不為第二有效狀態(tài)時(shí),執(zhí)行步驟S113;
S113,退出計(jì)算。
還需要說明的是,當(dāng)用戶輸入的統(tǒng)計(jì)時(shí)段內(nèi)包含多個(gè)測試時(shí)段時(shí),每個(gè)測試時(shí)段內(nèi)的空閑任務(wù)的運(yùn)行時(shí)長計(jì)算過程如上述各步驟所示,并根據(jù)統(tǒng)計(jì)時(shí)段內(nèi)計(jì)算得到的各個(gè)空閑任務(wù)的運(yùn)行時(shí)長計(jì)算空閑任務(wù)的運(yùn)行總時(shí)長,最終根據(jù)統(tǒng)計(jì)時(shí)段的時(shí)長以及空閑任務(wù)的運(yùn)行總時(shí)長計(jì)算該統(tǒng)計(jì)時(shí)段內(nèi)的CPU負(fù)載率。
本發(fā)明實(shí)施例公開的一種CPU負(fù)載率計(jì)算方法,該方法通過統(tǒng)計(jì)測試時(shí)段內(nèi)嵌入式實(shí)時(shí)操作系統(tǒng)中空閑任務(wù)運(yùn)行的運(yùn)行時(shí)長計(jì)算CPU負(fù)載率,由于空閑任務(wù)在嵌入式實(shí)時(shí)操作系統(tǒng)中的優(yōu)先級(jí)最低,因此,避免了統(tǒng)計(jì)測試時(shí)段內(nèi)任務(wù)激活、結(jié)束、搶占的時(shí)長以及中斷預(yù)處理、后處理的時(shí)長,從而提高了CPU負(fù)載率的計(jì)算準(zhǔn)確度。
實(shí)施例三
結(jié)合上述本發(fā)明實(shí)施例一和實(shí)施例二公開的CPU負(fù)載率計(jì)算方法,如圖1和圖2示出的步驟S106和S111中,根據(jù)空閑任務(wù)的運(yùn)行時(shí)長和測試時(shí)段的時(shí)長計(jì)算CPU負(fù)載率的具體執(zhí)行過程,如圖3所示,包括如下步驟:
S201,根據(jù)測試時(shí)段的時(shí)長和空閑任務(wù)的運(yùn)行時(shí)長計(jì)算靜態(tài)配置運(yùn)行時(shí)長;
S202,依據(jù)靜態(tài)配置運(yùn)行時(shí)長和測試時(shí)段的時(shí)長計(jì)算CPU負(fù)載率。
本發(fā)明實(shí)施例公開的一種CPU負(fù)載率計(jì)算方法,該方法通過統(tǒng)計(jì)測試時(shí)段內(nèi)嵌入式實(shí)時(shí)操作系統(tǒng)中空閑任務(wù)運(yùn)行的運(yùn)行時(shí)長計(jì)算CPU負(fù)載率,由于空閑任務(wù)在嵌入式實(shí)時(shí)操作系統(tǒng)中的優(yōu)先級(jí)最低,因此,避免了統(tǒng)計(jì)測試時(shí)段內(nèi)任務(wù)激活、結(jié)束、搶占的時(shí)長以及中斷預(yù)處理、后處理的時(shí)長,從而提高了CPU負(fù)載率的計(jì)算準(zhǔn)確度。
實(shí)施例四
基于上述本發(fā)明實(shí)施例一、實(shí)施例二和實(shí)施例三公開的CPU負(fù)載率計(jì)算方法,本發(fā)明實(shí)施例四則對應(yīng)公開了執(zhí)行上述CPU負(fù)載率計(jì)算方法的裝置,其結(jié)構(gòu)示意圖如圖4所示,CPU負(fù)載率計(jì)算裝置100包括:更新添加模塊101、第一開啟判斷模塊102、時(shí)間確定模塊103、第二開啟判斷模塊104、第一確定計(jì)算模塊105和第一計(jì)算模塊106;
更新添加模塊101,用于當(dāng)接收到攜帶有測試時(shí)段的測試通知時(shí),根據(jù)嵌入式實(shí)時(shí)操作系統(tǒng)的系統(tǒng)時(shí)間實(shí)時(shí)更新預(yù)設(shè)標(biāo)識(shí)的狀態(tài),并在嵌入式實(shí)時(shí)操作系統(tǒng)的空閑任務(wù)運(yùn)行線程之前添加第一接口函數(shù)線程;
第一開啟判斷模塊102,用于開啟第一接口函數(shù)線程,并根據(jù)嵌入式實(shí)時(shí)操作系統(tǒng)的第一當(dāng)前系統(tǒng)時(shí)間判斷預(yù)設(shè)標(biāo)識(shí)的狀態(tài)是否為無效狀態(tài),所述無效狀態(tài)用于表征第一當(dāng)前系統(tǒng)時(shí)間未到達(dá)測試時(shí)段內(nèi)的測試終止時(shí)間;
時(shí)間確定模塊103,用于當(dāng)預(yù)設(shè)標(biāo)識(shí)的狀態(tài)為無效狀態(tài),并且第一當(dāng)前系統(tǒng)時(shí)間在測試時(shí)段內(nèi)時(shí),將第一當(dāng)前系統(tǒng)時(shí)間確定為空閑任務(wù)的啟動(dòng)時(shí)間;
第二開啟判斷模塊104,用于開啟空閑任務(wù)運(yùn)行線程,并在運(yùn)行空閑任務(wù)過程中根據(jù)嵌入式實(shí)時(shí)操作系統(tǒng)的第二當(dāng)前系統(tǒng)時(shí)間判斷預(yù)設(shè)標(biāo)識(shí)的狀態(tài)是否為第一有效狀態(tài),所述第一有效狀態(tài)用于表征第二當(dāng)前系統(tǒng)時(shí)間等于測試終止時(shí)間;
第一確定計(jì)算模塊105,用于當(dāng)預(yù)設(shè)標(biāo)識(shí)的狀態(tài)為第一有效狀態(tài)時(shí),將第二當(dāng)前系統(tǒng)時(shí)間確定為空閑任務(wù)的結(jié)束時(shí)間,并根據(jù)空閑任務(wù)的啟動(dòng)時(shí)間和空閑任務(wù)的結(jié)束時(shí)間計(jì)算空閑任務(wù)的運(yùn)行時(shí)長;
第一計(jì)算模塊106,用于根據(jù)空閑任務(wù)的運(yùn)行時(shí)長和測試時(shí)段的時(shí)長計(jì)算CPU負(fù)載率。
需要說明的是,本實(shí)施例公開的CPU負(fù)載率計(jì)算裝置100還可包括:開啟運(yùn)行模塊;
開啟運(yùn)行模塊,用于當(dāng)預(yù)設(shè)標(biāo)識(shí)的狀態(tài)不為無效狀態(tài),或者第一當(dāng)前系統(tǒng)時(shí)間不在測試時(shí)段內(nèi)時(shí),開啟空閑任務(wù)運(yùn)行線程并運(yùn)行空閑任務(wù)。
本發(fā)明實(shí)施例公開的一種CPU負(fù)載率計(jì)算裝置,通過統(tǒng)計(jì)測試時(shí)段內(nèi)嵌入式實(shí)時(shí)操作系統(tǒng)中空閑任務(wù)運(yùn)行的運(yùn)行時(shí)長計(jì)算CPU負(fù)載率,由于空閑任務(wù)在嵌入式實(shí)時(shí)操作系統(tǒng)中的優(yōu)先級(jí)最低,因此,避免了統(tǒng)計(jì)測試時(shí)段內(nèi)任務(wù)激活、結(jié)束、搶占的時(shí)長以及中斷預(yù)處理、后處理的時(shí)長,從而提高了CPU負(fù)載率的計(jì)算準(zhǔn)確度。
實(shí)施例五
結(jié)合上述本發(fā)明實(shí)施例四公開的CPU負(fù)載率計(jì)算裝置,本實(shí)施例五還公開一種CPU負(fù)載率計(jì)算裝置,其結(jié)構(gòu)示意圖如圖5所示,第二啟動(dòng)判斷模塊104,之后,還包括:判斷模塊107、添加模塊108、第三開啟判斷模塊109、第二確定計(jì)算模塊110和第二計(jì)算模塊111;
判斷模塊107,用于當(dāng)預(yù)設(shè)標(biāo)識(shí)的狀態(tài)不為第一有效狀態(tài)時(shí),判斷嵌入式實(shí)時(shí)操作系統(tǒng)中是否存在任務(wù)搶占;
添加模塊108,用于當(dāng)嵌入式實(shí)時(shí)操作系統(tǒng)中存在任務(wù)搶占時(shí),在空閑任務(wù)運(yùn)行線程之后添加第二接口函數(shù)線程;
第三開啟判斷模塊109,用于開啟第二接口函數(shù)線程,并根據(jù)嵌入式實(shí)時(shí)操作系統(tǒng)的第三當(dāng)前系統(tǒng)時(shí)間判斷預(yù)設(shè)標(biāo)識(shí)的狀態(tài)是否為第二有效狀態(tài),所述第二有效狀態(tài)用于表征第三當(dāng)前系統(tǒng)時(shí)間等于測試終止時(shí)間;
第二確定計(jì)算模塊110,用于當(dāng)預(yù)設(shè)標(biāo)識(shí)的狀態(tài)為第二有效狀態(tài)時(shí),將第三當(dāng)前系統(tǒng)時(shí)間確定為空閑任務(wù)的結(jié)束時(shí)間,并根據(jù)空閑任務(wù)的啟動(dòng)時(shí)間和空閑任務(wù)的結(jié)束時(shí)間計(jì)算空閑任務(wù)的運(yùn)行時(shí)長;
第二計(jì)算模塊111,用于根據(jù)空閑任務(wù)的運(yùn)行時(shí)長和測試時(shí)段的時(shí)長計(jì)算CPU負(fù)載率。
還需要說明的是,優(yōu)選的,如圖4和5示出的第一計(jì)算模塊106具體用于:
根據(jù)測試時(shí)段的時(shí)長和空閑任務(wù)的運(yùn)行時(shí)長計(jì)算靜態(tài)配置運(yùn)行時(shí)長;依據(jù)靜態(tài)配置運(yùn)行時(shí)長和測試時(shí)段的時(shí)長計(jì)算CPU負(fù)載率。
還需要說明的是,優(yōu)選的,如圖5示出的第二計(jì)算模塊111,具體用于:
根據(jù)測試時(shí)段的時(shí)長和空閑任務(wù)的運(yùn)行時(shí)長計(jì)算靜態(tài)配置運(yùn)行時(shí)長;依據(jù)靜態(tài)配置運(yùn)行時(shí)長和測試時(shí)段的時(shí)長計(jì)算CPU負(fù)載率。
本發(fā)明實(shí)施例公開的一種CPU負(fù)載率計(jì)算裝置,通過統(tǒng)計(jì)測試時(shí)段內(nèi)嵌入式實(shí)時(shí)操作系統(tǒng)中空閑任務(wù)運(yùn)行的運(yùn)行時(shí)長計(jì)算CPU負(fù)載率,由于空閑任務(wù)在嵌入式實(shí)時(shí)操作系統(tǒng)中的優(yōu)先級(jí)最低,因此,避免了統(tǒng)計(jì)測試時(shí)段內(nèi)任務(wù)激活、結(jié)束、搶占的時(shí)長以及中斷預(yù)處理、后處理的時(shí)長,從而提高了CPU負(fù)載率的計(jì)算準(zhǔn)確度。
以上對本發(fā)明所提供的一種CPU負(fù)載率計(jì)算方法及裝置進(jìn)行了詳細(xì)介紹,本文中應(yīng)用了具體個(gè)例對本發(fā)明的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想;同時(shí),對于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在具體實(shí)施方式及應(yīng)用范圍上均會(huì)有改變之處,綜上所述,本說明書內(nèi)容不應(yīng)理解為對本發(fā)明的限制。
需要說明的是,本說明書中的各個(gè)實(shí)施例均采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說明的都是與其他實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同相似的部分互相參見即可。對于實(shí)施例公開的裝置而言,由于其與實(shí)施例公開的方法相對應(yīng),所以描述的比較簡單,相關(guān)之處參見方法部分說明即可。
還需要說明的是,在本文中,諸如第一和第二等之類的關(guān)系術(shù)語僅僅用來將一個(gè)實(shí)體或者操作與另一個(gè)實(shí)體或操作區(qū)分開來,而不一定要求或者暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備所固有的要素,或者是還包括為這些過程、方法、物品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個(gè)……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設(shè)備中還存在另外的相同要素。
對所公開的實(shí)施例的上述說明,使本領(lǐng)域?qū)I(yè)技術(shù)人員能夠?qū)崿F(xiàn)或使用本發(fā)明。對這些實(shí)施例的多種修改對本領(lǐng)域的專業(yè)技術(shù)人員來說將是顯而易見的,本文中所定義的一般原理可以在不脫離本發(fā)明的精神或范圍的情況下,在其它實(shí)施例中實(shí)現(xiàn)。因此,本發(fā)明將不會(huì)被限制于本文所示的這些實(shí)施例,而是要符合與本文所公開的原理和新穎特點(diǎn)相一致的最寬的范圍。