System.ArgumentOutOfRangeException: 索引和長度必須引用該字符串內(nèi)的位置。 參數(shù)名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技術(shù)實(shí)現(xiàn)步驟摘要】
本申請涉及嵌入式操作系統(tǒng),特別是一種嵌入式操作系統(tǒng)運(yùn)行過程中的內(nèi)存檢測方法。
技術(shù)介紹
1、在嵌入式實(shí)時(shí)操作系統(tǒng)領(lǐng)域,特別是在那些支持多進(jìn)程并運(yùn)行于安全性要求極高的環(huán)境(如防務(wù)系統(tǒng)、軌道交通控制系統(tǒng)及核能設(shè)施監(jiān)控系統(tǒng))中的系統(tǒng),內(nèi)存的穩(wěn)定性和可靠性是保障整個(gè)系統(tǒng)安全運(yùn)行的基石。內(nèi)存作為操作系統(tǒng)及其應(yīng)用程序運(yùn)行的核心資源,其狀態(tài)直接影響系統(tǒng)的穩(wěn)定性和可靠性,任何內(nèi)存故障都可能導(dǎo)致系統(tǒng)異常、數(shù)據(jù)丟失甚至災(zāi)難性后果。因此,對內(nèi)存進(jìn)行全面的檢測是確保系統(tǒng)穩(wěn)定運(yùn)行的關(guān)鍵措施。
2、目前,嵌入式操作系統(tǒng)在啟動(dòng)后,僅對有限的內(nèi)存區(qū)域進(jìn)行檢測,這主要受到mmu(memory?management?unit,內(nèi)存管理單元)或mpu(memory?protection?unit,內(nèi)存保護(hù)單元)的限制。這些硬件保護(hù)機(jī)制有效隔離了用戶態(tài)空間與內(nèi)核態(tài)空間的訪問,確保了系統(tǒng)的安全性,但同時(shí)也使得用戶態(tài)下的內(nèi)存檢測程序無法直接訪問內(nèi)核態(tài)下的內(nèi)存物理地址。也就是說,現(xiàn)有的內(nèi)存檢測機(jī)制往往無法覆蓋所有關(guān)鍵的內(nèi)存區(qū)域,尤其是那些受保護(hù)的內(nèi)核態(tài)空間。
3、具體的,如圖1所示的嵌入式操作系統(tǒng)的內(nèi)存布局。它主要分為兩個(gè)部分:用戶態(tài)空間和內(nèi)核態(tài)空間。其中,用戶態(tài)空間包括多個(gè)進(jìn)程(進(jìn)程1到進(jìn)程n)以及用戶態(tài)空閑空間,每個(gè)進(jìn)程都有自己的獨(dú)立內(nèi)存空間,用于存儲(chǔ)程序代碼、數(shù)據(jù)、堆棧等信息,用戶態(tài)空閑空間則是未分配給任何進(jìn)程使用的內(nèi)存區(qū)域。內(nèi)核態(tài)空間則包含了內(nèi)核態(tài)已用空間和內(nèi)核態(tài)空閑空間,內(nèi)核態(tài)已用空間是指已經(jīng)被操作系統(tǒng)內(nèi)核占用的內(nèi)存區(qū)域,而內(nèi)核態(tài)空閑空間則
4、在嵌入式操作系統(tǒng)運(yùn)行過程中,由于內(nèi)核態(tài)空間處于被使用狀態(tài),無法對內(nèi)核態(tài)已用空間和代碼段進(jìn)行內(nèi)存檢測。這是因?yàn)閮?nèi)存檢測需要修改內(nèi)存中的數(shù)據(jù),如果對代碼段和內(nèi)核態(tài)已用空間進(jìn)行寫操作,可能會(huì)導(dǎo)致整個(gè)嵌入式操作系統(tǒng)的異常退出。此外,這些區(qū)域通常由內(nèi)核態(tài)使用mmu或mpu進(jìn)行保護(hù),因此自檢程序也無法進(jìn)行內(nèi)存讀寫操作。
技術(shù)實(shí)現(xiàn)思路
1、鑒于現(xiàn)有技術(shù)的以上問題,本申請?zhí)峁┵|(zhì)一種嵌入式操作系統(tǒng)運(yùn)行過程中的內(nèi)存檢測方法、裝置、設(shè)備及存儲(chǔ)介質(zhì),解決了現(xiàn)在技術(shù)中的嵌入式操作系統(tǒng)無法在運(yùn)行過程中進(jìn)行全區(qū)域內(nèi)存自檢的問題。
2、為達(dá)到上述目的,本申請第一方面提供了一種嵌入式操作系統(tǒng)運(yùn)行過程中的內(nèi)存檢測方法,所述方法包括:
3、響應(yīng)所述內(nèi)存檢測方法的啟動(dòng),進(jìn)入異常處理程序,以獲得內(nèi)存管理權(quán)限;
4、獲取當(dāng)前內(nèi)存的分配信息,包括第一空間和當(dāng)前空閑空間,所述第一空間為當(dāng)前已使用空間;
5、根據(jù)所述第一空間的大小,從內(nèi)存的當(dāng)前空閑空間中分配一備份空間;
6、在分配所述備份空間后的內(nèi)存的當(dāng)前空閑空間中加載并啟動(dòng)第一內(nèi)存檢測程序,使用所述第一內(nèi)存檢測程序,對所述備份空間,或?qū)λ鰝浞菘臻g和啟動(dòng)第一內(nèi)存檢測程序后的內(nèi)存的當(dāng)前空閑空間進(jìn)行內(nèi)存檢測;
7、所述第一內(nèi)存檢測程序檢測通過后,判斷所述備份空間大于所述第一空間時(shí),將所述第一空間中的數(shù)據(jù)遷移至所述備份空間中;
8、在所述備份空間中加載并啟動(dòng)第二內(nèi)存檢測程序,使用所述第二內(nèi)存檢測程序?qū)λ鰞?nèi)存尚未檢測的空間進(jìn)行內(nèi)存檢測;
9、所述第二內(nèi)存檢測程序檢測完成后,將所述備份空間中的所遷移的數(shù)據(jù)恢復(fù)至所述第一空間中。
10、如此,嵌入式操作系統(tǒng)通過進(jìn)入異常處理程序,能夠獲得較高的內(nèi)存管理權(quán)限,可以繞過mmu或mpu的保護(hù)機(jī)制,從而能夠訪問和操作全部的內(nèi)存空間。具體地,本申請采用兩次檢測機(jī)制,在檢測過程中,首先通過對備份空間進(jìn)行檢測,在確保備份空間無誤且足夠容納已使用數(shù)據(jù)時(shí),將已使用數(shù)據(jù)遷移至備份空間,然后在備份空間中重新加載并啟動(dòng)內(nèi)存檢測程序,再次檢測剩余內(nèi)存,最后恢復(fù)已遷移的數(shù)據(jù)至原位置,從而完成了整個(gè)內(nèi)存檢測過程。因此,本申請實(shí)現(xiàn)了對內(nèi)存區(qū)域進(jìn)行全面檢測,能夠及時(shí)發(fā)現(xiàn)潛在的內(nèi)存錯(cuò)誤,防止因內(nèi)存問題導(dǎo)致的安全漏洞,增強(qiáng)了嵌入式操作系統(tǒng)的安全性。
11、作為第一方面的一種可能的實(shí)現(xiàn)方式,還包括:
12、所述第一內(nèi)存檢測程序檢測通過后,判斷所述備份空間小于所述第一空間時(shí),將所述第一空間劃分為多個(gè)第一子空間;
13、在所述備份空間中加載并啟動(dòng)第二內(nèi)存檢測程序,并針對所述多個(gè)第一子空間,依次執(zhí)行:將當(dāng)前一第一子空間中的數(shù)據(jù)遷移至所述備份空間中,使用第二內(nèi)存檢測程序?qū)λ霎?dāng)前的第一子空間進(jìn)行內(nèi)存檢測,檢測完成后,將所述備份空間中的所遷移的數(shù)據(jù)恢復(fù)至所述當(dāng)前的第一子空間中;
14、使用所述第二內(nèi)存檢測程序,對內(nèi)存的尚未檢測的空間進(jìn)行內(nèi)存檢測。
15、如此,即使面對第一空間較大的情況,本申請仍然能夠通過劃分第一空間的方式,以確保整個(gè)第一空間都能得到充分的檢測,避免了因備份空間不足而無法進(jìn)行全面檢測的問題,提高了內(nèi)存檢測方法的通用性和適應(yīng)性。
16、作為第一方面的一種可能的實(shí)現(xiàn)方式,還包括:
17、進(jìn)入異常處理程序時(shí),記錄所述嵌入式操作系統(tǒng)的當(dāng)前程序運(yùn)行指針;
18、所述內(nèi)存的全部空間已完成檢測、且所述第一空間中的數(shù)據(jù)已恢復(fù)后,退出所述異常處理程序,并根據(jù)所記錄的所述程序運(yùn)行指針恢復(fù)相應(yīng)程序的運(yùn)行。
19、如此,記錄當(dāng)前程序運(yùn)行指針可以確保在內(nèi)存檢測完成后,系統(tǒng)能夠準(zhǔn)確地恢復(fù)到檢測前的狀態(tài),也就是說,在內(nèi)存檢測結(jié)束后,通過恢復(fù)記錄的程序運(yùn)行指針,系統(tǒng)可以無縫地繼續(xù)執(zhí)行之前的任務(wù),保證了任務(wù)的連續(xù)性。此外,用戶在系統(tǒng)進(jìn)行內(nèi)存檢測時(shí)幾乎不會(huì)察覺到系統(tǒng)狀態(tài)的變化,因?yàn)橄到y(tǒng)可以在檢測后立即恢復(fù)到之前的運(yùn)行狀態(tài),從而提升了用戶體驗(yàn)。
20、作為第一方面的一種可能的實(shí)現(xiàn)方式,所述內(nèi)存的空閑空間包括用戶態(tài)空閑空間和內(nèi)核態(tài)空閑空間;
21、所述從內(nèi)存的當(dāng)前空閑空間中分配一備份空間,包括:
22、從所述用戶態(tài)空閑空間中分配出所述備份空間;
23、或,從所述內(nèi)核態(tài)空閑空間中分配出所述備份空間。
24、如此,本申請?jiān)试S從用戶態(tài)空閑空間或內(nèi)核態(tài)空閑空間中選擇備份空間,使得檢測過程更加靈活,可以根據(jù)當(dāng)前系統(tǒng)狀態(tài)和可用資源情況做出最優(yōu)選擇,提高設(shè)計(jì)的靈活性,以滿足不同場景的需求。
25、作為第一方面的一種可能的實(shí)現(xiàn)方式,所述內(nèi)存檢測方法啟動(dòng)前,還包括:
26、獲取所述嵌入式操作系統(tǒng)當(dāng)前運(yùn)行狀態(tài);
27、當(dāng)所述運(yùn)行狀態(tài)對應(yīng)具有空閑資源時(shí),執(zhí)行所述內(nèi)存檢測方法的啟動(dòng)。
28、如此,確保了內(nèi)存檢測方法在合適的時(shí)機(jī)啟動(dòng),避免在系統(tǒng)繁忙時(shí)占用資源,使得系統(tǒng)資源都得到合理的利用,而不是在系統(tǒng)繁忙時(shí)增加額外負(fù)擔(dān),最大限度的減少對系統(tǒng)正常運(yùn)行的影響。
29、作為第一方面的一種可能的實(shí)現(xiàn)方式,對所述內(nèi)存的檢測,包括:
30、對內(nèi)存空間進(jìn)行讀寫操作;
31、若讀出的數(shù)據(jù)與寫入的數(shù)據(jù)一致時(shí),確定為該內(nèi)存空間檢測通過;
32、若讀出的本文檔來自技高網(wǎng)...
【技術(shù)保護(hù)點(diǎn)】
1.一種嵌入式操作系統(tǒng)運(yùn)行過程中的內(nèi)存檢測方法,其特征在于,所述方法包括:
2.根據(jù)權(quán)利要求1所述的內(nèi)存檢測方法,其特征在于,還包括:
3.根據(jù)權(quán)利要求1所述的內(nèi)存檢測方法,其特征在于,還包括:
4.根據(jù)權(quán)利要求1所述的內(nèi)存檢測方法,其特征在于,所述內(nèi)存的空閑空間包括用戶態(tài)空閑空間和內(nèi)核態(tài)空閑空間;
5.根據(jù)權(quán)利要求1或2所述的內(nèi)存檢測方法,其特征在于,所述內(nèi)存檢測方法啟動(dòng)前,還包括:
6.根據(jù)權(quán)利要求1所述的內(nèi)存檢測方法,其特征在于,對所述內(nèi)存的檢測,包括:
7.一種嵌入式操作系統(tǒng)運(yùn)行過程中的內(nèi)存檢測裝置,其特征在于,所述裝置包括:
8.根據(jù)權(quán)利要求7所述的內(nèi)存檢測裝置,其特征在于,還包括:
9.一種計(jì)算設(shè)備,其特征在于,包括:
10.一種存儲(chǔ)介質(zhì),其特征在于,其上存儲(chǔ)有程序指令,所述程序指令當(dāng)被計(jì)算機(jī)執(zhí)行時(shí)使得所述計(jì)算機(jī)執(zhí)行權(quán)利要求1至6任一所述的內(nèi)存檢測方法。
【技術(shù)特征摘要】
1.一種嵌入式操作系統(tǒng)運(yùn)行過程中的內(nèi)存檢測方法,其特征在于,所述方法包括:
2.根據(jù)權(quán)利要求1所述的內(nèi)存檢測方法,其特征在于,還包括:
3.根據(jù)權(quán)利要求1所述的內(nèi)存檢測方法,其特征在于,還包括:
4.根據(jù)權(quán)利要求1所述的內(nèi)存檢測方法,其特征在于,所述內(nèi)存的空閑空間包括用戶態(tài)空閑空間和內(nèi)核態(tài)空閑空間;
5.根據(jù)權(quán)利要求1或2所述的內(nèi)存檢測方法,其特征在于,所述內(nèi)存檢測方法啟動(dòng)前,還包括:
【專利技術(shù)屬性】
技術(shù)研發(fā)人員:余世清,趙俊才,
申請(專利權(quán))人:科東廣州軟件科技有限公司,
類型:發(fā)明
國別省市:
還沒有人留言評論。發(fā)表了對其他瀏覽者有用的留言會(huì)獲得科技券。