本申請涉及計算機,尤其涉及一種多核實時操作系統(tǒng)的棧越界檢測方法、裝置、電子設(shè)備及計算機可讀存儲系統(tǒng)。
背景技術(shù):
1、目前,在對多核實時操作系統(tǒng)進行棧越界檢測時,一種方法是通過加載及運行棧越界檢測可執(zhí)行程序,若該可執(zhí)行程序運行時異常退出,則判定出現(xiàn)內(nèi)存越界;若該可執(zhí)行程序正常運行達到測試時長,則判定沒有出現(xiàn)內(nèi)存越界,但是這種方式無法檢測多任務(wù)交互時的棧越界問題。另一種方法是,需要在堆棧的數(shù)據(jù)存儲區(qū)的前后兩端分別設(shè)置額外的存儲空間,并通過不斷對兩端的存儲空間進行檢測來確定該堆棧是否存在越界,并且只能夠在踩踏之后才能夠發(fā)現(xiàn),無法第一時間檢測到棧越界。
2、鑒于此,如何在實現(xiàn)對多任務(wù)交互時的多核實時操作系統(tǒng)進行棧越界檢測,降低檢測開銷,提高檢測及時性,成為本領(lǐng)域技術(shù)人員需要解決的問題。
技術(shù)實現(xiàn)思路
1、本申請?zhí)峁┝艘环N多核實時操作系統(tǒng)的棧越界檢測方法、裝置、電子設(shè)備及計算機可讀存儲系統(tǒng),以至少解決相關(guān)技術(shù)中棧越界檢測及時性差、開銷大的問題。
2、本申請?zhí)峁┝艘环N多核實時操作系統(tǒng)的棧越界檢測方法,包括:
3、在核出現(xiàn)數(shù)據(jù)訪問異常的情況下,獲取出現(xiàn)數(shù)據(jù)訪問異常時所述核訪問的數(shù)據(jù)地址;
4、根據(jù)各個任務(wù)??臻g的地址及各個中斷??臻g的地址,確定所述數(shù)據(jù)地址是否與??臻g相鄰;
5、在所述數(shù)據(jù)地址與??臻g相鄰的情況下,確定發(fā)生棧越界;其中:
6、所述多核實時操作系統(tǒng)的內(nèi)存空間中包括獨立的任務(wù)棧段和中斷棧段,與所述任務(wù)棧段和與所述中斷棧段相鄰的段的屬性均為只讀,所述任務(wù)棧段中任意相鄰的兩個任務(wù)??臻g分別歸屬于不同的核,所述中斷棧段中任意相鄰的兩個中斷??臻g分別歸屬于不同的核,每一個核只具有與其對應(yīng)的任務(wù)棧空間的訪問權(quán)限及具有與其對應(yīng)的中斷??臻g的訪問權(quán)限。
7、本申請還提供了一種多核實時操作系統(tǒng)的棧越界檢測裝置,包括:
8、第一獲取模塊,用于在核出現(xiàn)數(shù)據(jù)訪問異常的情況下,獲取出現(xiàn)數(shù)據(jù)訪問異常時所述核訪問的數(shù)據(jù)地址;
9、第一確定模塊,用于根據(jù)各個任務(wù)??臻g的地址及各個中斷??臻g的地址,確定所述數(shù)據(jù)地址是否與??臻g相鄰;
10、第二確定模塊,用于在所述數(shù)據(jù)地址與棧空間相鄰的情況下,確定發(fā)生棧越界;其中:
11、所述多核實時操作系統(tǒng)的內(nèi)存空間中包括獨立的任務(wù)棧段和中斷棧段,與所述任務(wù)棧段和與所述中斷棧段相鄰的段的屬性均為只讀,所述任務(wù)棧段中任意相鄰的兩個任務(wù)??臻g分別歸屬于不同的核,所述中斷棧段中任意相鄰的兩個中斷??臻g分別歸屬于不同的核,每一個核只具有與其對應(yīng)的任務(wù)??臻g的訪問權(quán)限及具有與其對應(yīng)的中斷??臻g的訪問權(quán)限。
12、本申請還提供了一種電子設(shè)備,包括:存儲器,用于存儲計算機程序;處理器,用于執(zhí)行計算機程序時實現(xiàn)上述任一種多核實時操作系統(tǒng)的棧越界檢測方法的步驟。
13、本申請還提供了一種計算機可讀存儲介質(zhì),計算機可讀存儲介質(zhì)中存儲有計算機程序,其中,計算機程序被處理器執(zhí)行時實現(xiàn)上述任一種多核實時操作系統(tǒng)的棧越界檢測方法的步驟。
14、本申請還提供了一種計算機程序產(chǎn)品,包括計算機程序,計算機程序被處理器執(zhí)行時實現(xiàn)上述任一種多核實時操作系統(tǒng)的棧越界檢測方法的步驟。
15、通過本申請,由于任務(wù)棧段和中斷棧段在內(nèi)存空間中均為獨立的段,并且任務(wù)棧段相鄰的兩個段的屬性為只讀,中斷棧段相鄰兩個段的屬性也均為只讀,因此任務(wù)棧段兩端的任務(wù)??臻g不會對與任務(wù)棧段相鄰的兩個段進行踩踏,中斷棧段兩端的中斷??臻g不會對與中段棧段相鄰的兩個段進行踩踏,又由于任務(wù)棧段內(nèi)的任意相鄰的兩個任務(wù)??臻g歸屬于不同的核,且不同的核只對與該核對應(yīng)的任務(wù)的任務(wù)??臻g具有訪問權(quán)限,中斷棧段的各個中斷??臻g與各個核是一一對應(yīng)的,并且每個核只具有與其對應(yīng)的中斷??臻g的訪問權(quán)限。當(dāng)任務(wù)??臻g出現(xiàn)越界的情況下,或中斷棧空間越界的情況下,系統(tǒng)會自動報錯,產(chǎn)生數(shù)據(jù)訪問異常,因此本申請中通過在確定核出現(xiàn)數(shù)據(jù)訪問異常的情況下,確定該核所訪問的數(shù)據(jù)地址是否與??臻g相鄰,即可確定是否發(fā)生棧越界。因此,可以解決無法對多任務(wù)運行時的棧越界進行檢測、開銷大、檢測及時性差的技術(shù)問題,達到在多任務(wù)運行時及時發(fā)現(xiàn)棧越界問題,無需增加額外的執(zhí)行程序或設(shè)置額外的存儲空間,降低檢測開銷,提高檢測及時性的技術(shù)效果。
1.一種多核實時操作系統(tǒng)的棧越界檢測方法,其特征在于,包括:
2.根據(jù)權(quán)利要求1所述的多核實時操作系統(tǒng)的棧越界檢測方法,其特征在于,在所述確定發(fā)生棧越界之后,還包括:
3.根據(jù)權(quán)利要求1所述的多核實時操作系統(tǒng)的棧越界檢測方法,其特征在于,所述根據(jù)所述棧異常級別,對所述棧越界的棧進行定位,包括:
4.根據(jù)權(quán)利要求3所述的多核實時操作系統(tǒng)的棧越界檢測方法,其特征在于,還包括:
5.根據(jù)權(quán)利要求1至4任意一項所述的多核實時操作系統(tǒng)的棧越界檢測方法,其特征在于,還包括:
6.根據(jù)權(quán)利要求5所述的多核實時操作系統(tǒng)的棧越界檢測方法,其特征在于,所述將各個所述任務(wù)分別對應(yīng)的任務(wù)??臻g在所述任務(wù)棧段交錯排布,使任意兩個相鄰的任務(wù)??臻g對應(yīng)的任務(wù)歸屬于不同的核,包括:
7.根據(jù)權(quán)利要5所述的多核實時操作系統(tǒng)的棧越界檢測方法,其特征在于,所述中斷棧段位于異常向量表和代碼段之間,所述任務(wù)棧段位于所述代碼段與只讀數(shù)據(jù)段之間。
8.一種多核實時操作系統(tǒng)的棧越界檢測裝置,其特征在于,包括:
9.一種電子設(shè)備,其特征在于,包括:
10.一種計算機可讀存儲介質(zhì),其特征在于,所述計算機可讀存儲介質(zhì)中存儲有計算機程序,其中,所述計算機程序被處理器執(zhí)行時實現(xiàn)如權(quán)利要求1至7任一項所述多核實時操作系統(tǒng)的棧越界檢測方法的步驟。