亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種堆棧容量的設(shè)置方法及系統(tǒng)的制作方法

文檔序號:9375379閱讀:431來源:國知局
一種堆棧容量的設(shè)置方法及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及操作系統(tǒng)技術(shù)領(lǐng)域,更具體地說,涉及一種堆棧容量的設(shè)置方法及系統(tǒng)。
【背景技術(shù)】
[0002]隨著嵌入式軟硬件技術(shù)的飛速發(fā)展,嵌入式系統(tǒng)已經(jīng)被廣泛應(yīng)用到各種科技領(lǐng)域,如自動控制、機(jī)械工程、交通工具、儀器儀表、航空航天等。并且,由于各個領(lǐng)域?qū)τ谇度胧较到y(tǒng)的性能要求越來越高,嵌入式實時操作系統(tǒng)應(yīng)運(yùn)而生。
[0003]嵌入式實時操作系統(tǒng)中的任務(wù)在執(zhí)行時需要使用硬件芯片的RAM(Random AccessMemory,隨機(jī)存取存儲器)空間的一部分,用于保存任務(wù)執(zhí)行過程中需要存儲的臨時數(shù)據(jù)、以及發(fā)生任務(wù)切換時需要存儲的硬件芯片通用寄存器數(shù)據(jù),這部分RAM空間被稱為“任務(wù)堆?!保叭蝿?wù)堆?!彼加玫倪@部分RAM空間的大小被稱為“任務(wù)堆棧”的“堆棧容量”。
[0004]嵌入式實時操作系統(tǒng)中,需要軟件開發(fā)人員預(yù)先設(shè)置任務(wù)堆棧的堆棧容量,當(dāng)堆棧容量設(shè)置過小,而任務(wù)實際使用的RAM空間超過預(yù)先設(shè)置的堆棧容量時,將發(fā)生堆棧溢出現(xiàn)象,堆棧溢出會使任務(wù)的執(zhí)行出現(xiàn)異常甚至導(dǎo)致系統(tǒng)崩潰。因此,為了保障任務(wù)和系統(tǒng)的正常運(yùn)行,在設(shè)置堆棧容量時,通常先將堆棧容量設(shè)置為一個預(yù)估值,在任務(wù)執(zhí)行過程中,如果由于該預(yù)估值過小而發(fā)生堆棧溢出,則需要在該預(yù)估值的基礎(chǔ)上適當(dāng)調(diào)大任務(wù)堆棧的堆棧容量,從而避免再發(fā)生堆棧溢出現(xiàn)象。
[0005]當(dāng)堆棧容量設(shè)置過大時,并不會發(fā)生堆棧溢出,但過大的堆棧容量會占用過多的RAM空間,過于浪費(fèi)有限的RAM資源,而現(xiàn)有技術(shù)卻只能在檢測到堆棧溢出時調(diào)大堆棧容量,無法在不發(fā)生堆棧溢出時設(shè)置合適的能夠避免RAM資源過于浪費(fèi)的堆棧容量。

【發(fā)明內(nèi)容】

[0006]有鑒于此,本發(fā)明提供一種堆棧容量的設(shè)置方法及系統(tǒng),以便在不發(fā)生堆棧溢出時設(shè)置合適的能夠避免RAM資源過于浪費(fèi)的堆棧容量。
[0007]為實現(xiàn)上述目的,本發(fā)明提供了如下技術(shù)方案:
[0008]一種堆棧容量的設(shè)置方法,包括:
[0009]為第一任務(wù)分配第一任務(wù)堆桟;所述第一任務(wù)堆桟為執(zhí)行所述第一任務(wù)時使用的隨機(jī)存取存儲器RAM空間;
[0010]在執(zhí)行所述第一任務(wù)的過程中,檢測所述第一任務(wù)堆棧是否發(fā)生堆棧溢出,并在所述第一任務(wù)堆棧沒有發(fā)生堆棧溢出時,檢測所述第一任務(wù)對于所述第一任務(wù)堆棧的第一實際使用量;
[0011]以所述第一任務(wù)對于所述第一任務(wù)堆棧的第一實際使用量為基準(zhǔn),設(shè)置所述第一任務(wù)堆棧的第一堆棧容量;所述第一堆棧容量大于或等于所述第一任務(wù)對于所述第一任務(wù)堆棧的第一實際使用量。
[0012]優(yōu)選地,所述檢測所述第一任務(wù)對于所述第一任務(wù)堆棧的第一實際使用量,包括:
[0013]檢測所述第一任務(wù)堆棧中的標(biāo)識數(shù)據(jù),并輸出檢測結(jié)果,根據(jù)所述檢測結(jié)果計算所述第一任務(wù)對于所述第一任務(wù)堆桟的第一實際使用量;
[0014]其中,所述標(biāo)識數(shù)據(jù)是預(yù)先在所述第一任務(wù)堆棧的每個存儲單元中寫入的標(biāo)識;所述標(biāo)識數(shù)據(jù)用于表征所述存儲單元未被使用,且在所述存儲單元被使用后消失。
[0015]優(yōu)選地,所述檢測所述第一任務(wù)堆棧中的標(biāo)識數(shù)據(jù),并輸出檢測結(jié)果,根據(jù)所述檢測結(jié)果計算所述第一任務(wù)對于所述第一任務(wù)堆棧的第一實際使用量,包括:
[0016]按照第一檢測順序依次檢測所述第一任務(wù)堆棧的存儲單元中的所述標(biāo)識數(shù)據(jù),直到檢測不到所述標(biāo)識數(shù)據(jù)時,輸出從所述第一任務(wù)堆棧中檢測到的所述標(biāo)識數(shù)據(jù)的標(biāo)識數(shù)量;所述第一檢測順序為從所述第一任務(wù)堆棧的棧頂?shù)刂返剿龅谝蝗蝿?wù)堆棧的起始地址的檢測順序;
[0017]計算所述第一任務(wù)堆棧的存儲單元的總量與所述標(biāo)識數(shù)量的差值,并將所述差值作為所述第一任務(wù)對于所述第一任務(wù)堆棧的第一實際使用量。
[0018]優(yōu)選地,所述檢測所述第一任務(wù)堆棧中的標(biāo)識數(shù)據(jù),并輸出檢測結(jié)果,根據(jù)所述檢測結(jié)果計算所述第一任務(wù)對于所述第一任務(wù)堆棧的第一實際使用量,包括:
[0019]按照第二檢測順序依次檢測所述第一任務(wù)堆棧的存儲單元中的所述標(biāo)識數(shù)據(jù),直到檢測到所述標(biāo)識數(shù)據(jù)時,輸出從所述第一任務(wù)堆棧中檢測到的不帶有所述標(biāo)識數(shù)據(jù)的存儲單元的單元數(shù)量;所述第二檢測順序為從所述第一任務(wù)堆棧的起始地址到所述第一任務(wù)堆棧的棧頂?shù)刂返臋z測順序;
[0020]將所述單元數(shù)量作為所述第一任務(wù)對于所述第一任務(wù)堆棧的第一實際使用量。
[0021]優(yōu)選地,還包括:
[0022]在所述第一任務(wù)堆棧發(fā)生堆棧溢出時,增大所述第一任務(wù)堆棧占用的RAM空間,并繼續(xù)檢測所述第一任務(wù)堆棧是否還會發(fā)生堆棧溢出,如果所述第一任務(wù)堆棧還會發(fā)生堆棧溢出則繼續(xù)增大所述第一任務(wù)堆棧占用的RAM空間,直到所述第一任務(wù)堆棧不再發(fā)生堆棧溢出時,檢測所述第一任務(wù)對于所述第一任務(wù)堆棧的第二實際使用量;
[0023]以所述第一任務(wù)對于所述第一任務(wù)堆棧的第二實際使用量為基準(zhǔn),設(shè)置所述第一任務(wù)堆棧的第二堆棧容量;所述第二堆棧容量大于或等于所述第一任務(wù)對于所述第一任務(wù)堆棧的第二實際使用量。
[0024]—種堆桟容量的設(shè)置系統(tǒng),包括:
[0025]分配模塊,用于為第一任務(wù)分配第一任務(wù)堆棧;所述第一任務(wù)堆棧為執(zhí)行所述第一任務(wù)時使用的隨機(jī)存取存儲器RAM空間;
[0026]第一檢測模塊,用于在執(zhí)行所述第一任務(wù)的過程中,檢測所述第一任務(wù)堆棧是否發(fā)生堆棧溢出,并在所述第一任務(wù)堆棧沒有發(fā)生堆棧溢出時,檢測所述第一任務(wù)對于所述第一任務(wù)堆棧的第一實際使用量;
[0027]第一設(shè)置模塊,用于以所述第一任務(wù)對于所述第一任務(wù)堆棧的第一實際使用量為基準(zhǔn),設(shè)置所述第一任務(wù)堆棧的第一堆棧容量;所述第一堆棧容量大于或等于所述第一任務(wù)對于所述第一任務(wù)堆棧的第一實際使用量。
[0028]優(yōu)選地,所述第一檢測模塊,包括:
[0029]檢測單元,用于檢測所述第一任務(wù)堆棧中的標(biāo)識數(shù)據(jù),并輸出檢測結(jié)果,根據(jù)所述檢測結(jié)果計算所述第一任務(wù)對于所述第一任務(wù)堆棧的第一實際使用量;
[0030]其中,所述標(biāo)識數(shù)據(jù)是預(yù)先在所述第一任務(wù)堆棧的每個存儲單元中寫入的標(biāo)識;所述標(biāo)識數(shù)據(jù)用于表征所述存儲單元未被使用,且在所述存儲單元被使用后消失。
[0031]優(yōu)選地,所述檢測單元,包括:
[0032]第一檢測子單元,用于按照第一檢測順序依次檢測所述第一任務(wù)堆棧的存儲單元中的所述標(biāo)識數(shù)據(jù),直到檢測不到所述標(biāo)識數(shù)據(jù)時,輸出從所述第一任務(wù)堆棧中檢測到的所述標(biāo)識數(shù)據(jù)的標(biāo)識數(shù)量;所述第一檢測順序為從所述第一任務(wù)堆棧的棧頂?shù)刂返剿龅谝蝗蝿?wù)堆找的起始地址的檢測順序;
[0033]第一計算子單元,用于計算所述第一任務(wù)堆棧的存儲單元的總量與所述標(biāo)識數(shù)量的差值,并將所述差值作為所述第一任務(wù)對于所述第一任務(wù)堆棧的第一實際使用量。
[0034]優(yōu)選地,所述檢測單元,包括:
[0035]第二檢測子單元,用于按照第二檢測順序依次檢測所述第一任務(wù)堆棧的存儲單元中的所述標(biāo)識數(shù)據(jù),直到檢測到所述標(biāo)識數(shù)據(jù)時,輸出從所述第一任務(wù)堆棧中檢測到的不帶有所述標(biāo)識數(shù)據(jù)的存儲單元的單元數(shù)量;所述第二檢測順序為從所述第一任務(wù)堆棧的起始地址到所述第一任務(wù)堆棧的棧頂?shù)刂返臋z測順序;
[0036]第二計算子單元,用于將所述單元數(shù)量作為所述第一任務(wù)對于所述第一任務(wù)堆棧的第一實際使用量。
[0037]優(yōu)選地,還包括:
[0038]第二檢測模塊,用于在所述第一任務(wù)堆棧發(fā)生堆棧溢出時,增大所述第一任務(wù)堆棧占用的RAM空間,并繼續(xù)檢測所述第一任務(wù)堆棧是否還會發(fā)生堆棧溢出,如果所述第一任務(wù)堆棧還會發(fā)
當(dāng)前第1頁1 2 3 4 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1