两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

一種msvl程序內(nèi)存管理方法

文檔序號(hào):6629743閱讀:315來(lái)源:國(guó)知局
一種msvl程序內(nèi)存管理方法
【專利摘要】本發(fā)明公開(kāi)了一種MSVL程序內(nèi)存管理方法,包括框架變量存儲(chǔ)區(qū)和非框架變量存儲(chǔ)區(qū);本發(fā)明基于MSVL語(yǔ)言中的框架技術(shù),實(shí)現(xiàn)了一種MSVL語(yǔ)言的內(nèi)存管理方法,使得在MSVL程序的執(zhí)行過(guò)程中,能夠動(dòng)態(tài)地為變量分配和釋放內(nèi)存,節(jié)省了內(nèi)存空間;針對(duì)MSVL程序中框架變量和非框架變量的特點(diǎn),對(duì)兩種變量的內(nèi)存空間進(jìn)行區(qū)分,使得程序從一個(gè)狀態(tài)遷移到下一狀態(tài)時(shí),不需要在符號(hào)表中查找哪些變量是非框架變量,只需要直接刪除非框架變量符號(hào)表中的符號(hào),提高了程序的執(zhí)行效率;針對(duì)框架變量的特點(diǎn),用棧的方式對(duì)框架變量進(jìn)行存儲(chǔ),當(dāng)一個(gè)框架語(yǔ)句對(duì)應(yīng)的區(qū)間結(jié)束時(shí),該區(qū)間對(duì)應(yīng)的框架變量將被刪除,有效節(jié)省了內(nèi)存空間。本發(fā)明可應(yīng)用于MSV建模、仿真和驗(yàn)證工具中。
【專利說(shuō)明】—種MSVL程序內(nèi)存管理方法

【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于可信計(jì)算【技術(shù)領(lǐng)域】,尤其涉及一種MSVL程序內(nèi)存管理方法,該方法主要用于MSV建模、仿真和驗(yàn)證工具中。

【背景技術(shù)】
[0002]建模、仿真和驗(yàn)證語(yǔ)言(MSVL)是一種時(shí)序邏輯語(yǔ)言,可以用來(lái)對(duì)軟件系統(tǒng)和硬件系統(tǒng)進(jìn)行建模、仿真和驗(yàn)證;MSVL語(yǔ)言中實(shí)現(xiàn)了多種數(shù)據(jù)類型如整型、字符型、浮點(diǎn)型以及數(shù)組和指針等;現(xiàn)有的MSV工具可以對(duì)MSVL程序進(jìn)行建模、仿真和驗(yàn)證。
[0003]和傳統(tǒng)編程語(yǔ)言(如C語(yǔ)言)不同,在C語(yǔ)言中,當(dāng)一個(gè)變量被聲明時(shí),系統(tǒng)會(huì)為該變量分配一個(gè)內(nèi)存單元,系統(tǒng)會(huì)維持該內(nèi)存單元直到該變量的作用域結(jié)束,如果變量沒(méi)有被賦予新的值,內(nèi)存單元中的值將保持不變。在MSVL程序中,變量被分為框架的(framed)和非框架的(unframed),只有框架變量的值會(huì)在下一狀態(tài)被繼承。在一個(gè)MSVL程序中,一個(gè)變量可以在一段區(qū)間上是框架的而在另一段區(qū)間上是非框架的。在MSVL程序中,一組變量的取值是一個(gè)狀態(tài),一個(gè)區(qū)間由一個(gè)狀態(tài)或多個(gè)狀態(tài)組成。
[0004]隨著軟件系統(tǒng)和硬件系統(tǒng)規(guī)模的日益增大,描述系統(tǒng)的MSVL程序也日益增大,如何提高M(jìn)SV工具執(zhí)行MSVL程序的效率以及使MSV工具有效地利用內(nèi)存成為MSVL語(yǔ)言亟待解決的關(guān)鍵問(wèn)題之一。


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

[0005]本發(fā)明實(shí)施例的目的在于提供一種MSVL程序內(nèi)存管理方法,旨在解決現(xiàn)有技術(shù)不能完成MSVL程序的內(nèi)存動(dòng)態(tài)申請(qǐng)和釋放的問(wèn)題,以進(jìn)一步提高M(jìn)SV工具的執(zhí)行效率和內(nèi)存使用效率,從而使得MSV工具可以用于執(zhí)行更大更復(fù)雜的MSVL程序。
[0006]本發(fā)明實(shí)施例是這樣實(shí)現(xiàn)的,一種MSVL程序內(nèi)存管理方法,該MSVL程序內(nèi)存管理方法包括框架變量存儲(chǔ)區(qū)和非框架變量存儲(chǔ)區(qū),它能對(duì)不同生命周期的框架變量進(jìn)行分開(kāi)存儲(chǔ),在一個(gè)狀態(tài)結(jié)束后刪除該狀態(tài)的非框架變量,并且刪除時(shí)不用進(jìn)行查找操作;在一個(gè)框架語(yǔ)句對(duì)應(yīng)的區(qū)間結(jié)束時(shí)刪除該區(qū)間對(duì)應(yīng)的框架變量,并且刪除時(shí)不用進(jìn)行查找操作。
[0007]進(jìn)一步,非框架變量存儲(chǔ)區(qū)由一個(gè)符號(hào)表構(gòu)成,符號(hào)表是一個(gè)map結(jié)構(gòu),map的key值是變量名,value值是變量的類型,值信息。
[0008]進(jìn)一步,框架變量存儲(chǔ)區(qū)由一個(gè)框架變量棧構(gòu)成,棧中的每一個(gè)元素是一個(gè)符號(hào)表。
[0009]進(jìn)一步,在MSVL程序執(zhí)行的過(guò)程中遇到框架語(yǔ)句時(shí),新建一個(gè)符號(hào)表,并將相應(yīng)的框架變量存入符號(hào)表中,然后將符號(hào)表壓入框架變量棧中。
[0010]進(jìn)一步,在MSVL程序的執(zhí)行過(guò)程中遇到非框架變量時(shí),將非框架變量存入非框架變量符號(hào)表中。
[0011]進(jìn)一步,在一個(gè)狀態(tài)結(jié)束后,如果非框架變量符號(hào)表不為空,則刪除非框架變量符號(hào)表中的符號(hào)。
[0012]進(jìn)一步,在一個(gè)區(qū)間結(jié)束后,如果該區(qū)間有對(duì)應(yīng)的框架變量,則將框架變量棧的棧頂符號(hào)表彈棧,并刪除棧頂符號(hào)表中的符號(hào)。
[0013]進(jìn)一步,該MSVL程序內(nèi)存管理方法的實(shí)現(xiàn)方法是:
[0014]步驟一、將MSVL程序中的框架變量和非框架變量分開(kāi)存儲(chǔ),所有非框架變量存儲(chǔ)在非框架變量符號(hào)表中,相同生命周期的框架變量存儲(chǔ)在同一個(gè)符號(hào)表中,并將所有框架變量符號(hào)表壓入框架變量棧中;
[0015]步驟二,遇到框架語(yǔ)句時(shí),新建一個(gè)符號(hào)表,將相應(yīng)的框架變量存入該符號(hào)表中,并將新建的符號(hào)表壓入框架變量棧中;
[0016]步驟三,每個(gè)狀態(tài)結(jié)束時(shí),刪除非框架變量符號(hào)表中的所有變量;
[0017]步驟四,每個(gè)區(qū)間結(jié)束時(shí)釋放該區(qū)間對(duì)應(yīng)的框架變量。
[0018]本發(fā)明提供的MSVL程序內(nèi)存管理方法,結(jié)合時(shí)序邏輯語(yǔ)言中的框架技術(shù),將內(nèi)存單元的動(dòng)態(tài)分配和釋放結(jié)合到MSVL程序的執(zhí)行過(guò)程中;
[0019]本發(fā)明與現(xiàn)有技術(shù)相比具有以下優(yōu)點(diǎn):
[0020]1.本發(fā)明基于MSVL語(yǔ)言中的框架技術(shù),實(shí)現(xiàn)了一種MSVL語(yǔ)言的內(nèi)存管理方法,使得在程序的執(zhí)行過(guò)程中,能夠動(dòng)態(tài)地分配和釋放內(nèi)存,節(jié)省了內(nèi)存空間。
[0021]2.本發(fā)明中針對(duì)MSVL程序中框架變量和非框架變量的特點(diǎn),對(duì)兩種變量的內(nèi)存空間進(jìn)行區(qū)分,使得程序從一個(gè)狀態(tài)遷移到下一狀態(tài)時(shí),不需要在符號(hào)表中查找哪些變量是非框架變量,只需要直接刪除非框架變量符號(hào)表中的符號(hào),提高了程序的執(zhí)行效率。
[0022]3.本發(fā)明針對(duì)框架變量的特點(diǎn),用棧的方式對(duì)框架變量進(jìn)行存儲(chǔ),當(dāng)一個(gè)框架語(yǔ)句對(duì)應(yīng)的區(qū)間結(jié)束時(shí),該區(qū)間對(duì)應(yīng)的框架變量將被刪除,有效節(jié)省了內(nèi)存空間。

【專利附圖】

【附圖說(shuō)明】
[0023]圖1是本發(fā)明實(shí)施例提供的MSVL程序內(nèi)存示意圖;
[0024]圖中:(a)非框架變量符號(hào)表;(b)框架變量符號(hào)表?xiàng)#?br> [0025]圖2是本發(fā)明實(shí)施例提供的一個(gè)包含框架變量和非框架變量的MSVL程序示意圖;
[0026]圖3是本發(fā)明實(shí)施例提供的圖2中MSVL程序的計(jì)算圖,給出了程序中每個(gè)變量在每個(gè)狀態(tài)下的值;
[0027]圖4是本發(fā)明實(shí)施例提供的圖2中的MSVL程序在每個(gè)狀態(tài)下的內(nèi)存示意圖;
[0028]圖5是本發(fā)明實(shí)施例提供的用實(shí)現(xiàn)本發(fā)明后的MSV工具對(duì)圖2中的MSVL程序的執(zhí)行結(jié)果。
[0029]圖6是本發(fā)明實(shí)施例提供的在MSV工具中實(shí)現(xiàn)本發(fā)明后能有效節(jié)省內(nèi)存的示意圖。

【具體實(shí)施方式】
[0030]為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說(shuō)明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
[0031]下面結(jié)合附圖及具體實(shí)施例對(duì)本發(fā)明的應(yīng)用原理作進(jìn)一步描述。
[0032]如圖1所示,圖1中a是一個(gè)非框架變量符號(hào)表,b是一個(gè)框架變量棧,棧中的每個(gè)元素是一個(gè)符號(hào)表;本發(fā)明的內(nèi)存管理方法需要對(duì)MSVL程序中的框架變量和非框架變量分開(kāi)存儲(chǔ):所有非框架變量存儲(chǔ)在非框架變量符號(hào)表中;相同生命周期的框架變量存儲(chǔ)在一個(gè)符號(hào)表中,所有框架變量符號(hào)表存儲(chǔ)在一個(gè)框架變量棧中;
[0033]該MSVL程序內(nèi)存管理方法包括框架變量存儲(chǔ)區(qū)和非框架變量存儲(chǔ)區(qū),框架變量存儲(chǔ)區(qū)用于存儲(chǔ)框架變量,非框架變量存儲(chǔ)區(qū)用于存儲(chǔ)非框架變量;該MSVL程序內(nèi)存管理方法能對(duì)不同生命周期的框架變量進(jìn)行分開(kāi)存儲(chǔ),在一個(gè)狀態(tài)結(jié)束后刪除該狀態(tài)的非框架變量,并且刪除時(shí)不用進(jìn)行查找操作;在一個(gè)框架語(yǔ)句對(duì)應(yīng)的區(qū)間結(jié)束時(shí)刪除該區(qū)間對(duì)應(yīng)的框架變量,并且刪除時(shí)不用進(jìn)行查找操作。
[0034]需要說(shuō)明的是由于MSVL程序中的框架語(yǔ)句可以嵌套,并且不同框架語(yǔ)句中的框架變量的生命周期不同,且符合后進(jìn)先出的原則,因此采用一個(gè)棧結(jié)構(gòu)來(lái)存儲(chǔ)框架變量,稱作框架變量棧,棧中每個(gè)兀素是一個(gè)符號(hào)表;
[0035]需要說(shuō)明的是初始時(shí)非框架變量符號(hào)表為空,框架變量棧為空;
[0036]需要說(shuō)明的是,在MSVL程序執(zhí)行的過(guò)程中,會(huì)頻繁對(duì)符號(hào)表進(jìn)行插入和查找操作,因此符號(hào)表以map形式表示;map中每個(gè)元素的key值是變量名;value是一個(gè)符號(hào)類型的指針,該指針指向一個(gè)符號(hào)類型的對(duì)象;每個(gè)符號(hào)對(duì)象表示一個(gè)變量,包含變量名,變量類型,變量值,賦值標(biāo)志等信息。
[0037]本發(fā)明可應(yīng)用于MSV建模、仿真和驗(yàn)證工具中。MSV工具是一種建模,仿真和驗(yàn)證工具,該工具可以對(duì)MSVL程序進(jìn)行建模、仿真和驗(yàn)證。在建模模式下,MSV工具會(huì)給出MSVL程序中所有可能的執(zhí)行路徑,并給出圖形化表示;在仿真模式下,MSV工具會(huì)選擇MSVL程序中一條可能得執(zhí)行路徑執(zhí)行,并給出MSVL程序在每個(gè)狀態(tài)下的變量信息;在驗(yàn)證模式下,MSV工具可以對(duì)MSVL程序的一些期望的性質(zhì)進(jìn)行驗(yàn)證,在程序不滿足性質(zhì)時(shí),會(huì)給出程序違反性質(zhì)的反例路徑。在建模、仿真和驗(yàn)證三種模式下,都需要對(duì)MSVL程序進(jìn)行執(zhí)行。在執(zhí)行MSVL程序的過(guò)程中,需要用符號(hào)表對(duì)變量信息進(jìn)行存儲(chǔ)。本發(fā)明主要應(yīng)用于MSVL程序中的變量存儲(chǔ)問(wèn)題。
[0038]圖2是用于說(shuō)明本發(fā)明的一個(gè)MSVL程序的例子;該程序的功能是首先計(jì)算變量x和變量I的最大公約數(shù),存儲(chǔ)在變量g中;然后根據(jù)最大公約數(shù)g求得變量X和變量I的最小公倍數(shù),存儲(chǔ)在變量I中;該程序中包含框架變量和非框架變量,其中,變量X和變量y在整個(gè)區(qū)間上是框架的;變量xl,yl和變量g分別在不同的區(qū)間上是框架的;變量I是非框架的;變量X和變量I的生命周期相同,變量xl和變量yl的生命周期相同;
[0039]需要說(shuō)明的是在MSVL程序中,在未聲明變量類型的情況下,所有變量的類型默認(rèn)為整形;
[0040]在圖3中給出了圖2中的MSVL程序在每個(gè)狀態(tài)下的變量的值的信息,其中“? ”表示相應(yīng)變量在該狀態(tài)下的值是未知的;如在狀態(tài)O時(shí),所有變量的值都是未知的;在狀態(tài)I時(shí)變量X等于6,變量y等于4,其余變量的值是未知的;
[0041]需要說(shuō)明的是在MSVL程序中,框架變量在其生命周期內(nèi)的某個(gè)狀態(tài)如果沒(méi)有被賦值,則其會(huì)自動(dòng)繼承其上一個(gè)狀態(tài)的值;非框架變量如果在某個(gè)狀態(tài)沒(méi)有賦值,則其值在該狀態(tài)是未知的;
[0042]在圖4中給出了圖2中MSVL程序在每個(gè)狀態(tài)下的內(nèi)存分配情況:
[0043]圖a是在狀態(tài)O時(shí)的內(nèi)存分布示意圖;狀態(tài)O沒(méi)有非框架變量,因此非框架變量表為空;由于在狀態(tài)O時(shí)遇到了 frame (X,y)語(yǔ)句,因此需要為框架變量x和框架變量y分配內(nèi)存;具體過(guò)程是:新建一個(gè)符號(hào)表,生成兩個(gè)變量名分別為X和I的符號(hào),并插入到框架變量符號(hào)表中,然后將新生成的符號(hào)表壓棧;
[0044]需要說(shuō)明的是在一個(gè)狀態(tài)下遇到變量賦值語(yǔ)句時(shí)要先在所有框架變量符號(hào)表中查找被賦值的變量,如果沒(méi)有找到,則被賦值的變量是一個(gè)非框架變量;
[0045]圖b是在狀態(tài)I時(shí)的內(nèi)存分布示意圖,狀態(tài)I沒(méi)有非框架變量,因此非框架變量表為空;由于在狀態(tài)I時(shí)遇到了 frame (xl,yl)語(yǔ)句,因此需要為框架變量xl和框架變量yl分配內(nèi)存;具體過(guò)程是:新建一個(gè)符號(hào)表,生成兩個(gè)變量名分別為xl和yl的符號(hào),并插入到新建的框架變量符號(hào)表中,然后將新生成的符號(hào)表壓棧;
[0046]圖c是在狀態(tài)2和狀態(tài)3時(shí)的內(nèi)存分布示意圖,狀態(tài)2和狀態(tài)3沒(méi)有遇到框架語(yǔ)句,也沒(méi)有遇到非框架變量;因此狀態(tài)2和狀態(tài)3的內(nèi)存分配示意圖和狀態(tài)I的內(nèi)存分配示意圖相同;
[0047]需要說(shuō)明的是,本發(fā)明關(guān)心的重點(diǎn)是內(nèi)存分配和釋放。
[0048]需要說(shuō)明的是由于非框架變量的值不會(huì)被下一狀態(tài)繼承,因此當(dāng)程序從一個(gè)狀態(tài)遷移到另一個(gè)狀態(tài)時(shí),需要?jiǎng)h除當(dāng)前狀態(tài)下的非框架變量符號(hào)表中的符號(hào);由于框架變量的值會(huì)被下一狀態(tài)繼承,因此當(dāng)程序遷移到下一狀態(tài)時(shí),如果沒(méi)有框架語(yǔ)句對(duì)應(yīng)的區(qū)間結(jié)束,框架變量符號(hào)表中的變量應(yīng)保持不變;
[0049]圖d是狀態(tài)4時(shí)的內(nèi)存分布示意圖,狀態(tài)4沒(méi)有非框架變量,因此非框架變量符號(hào)表為空;由于狀態(tài)4時(shí)遇到了 frame (g)語(yǔ)句,因此需要為框架變量g分配內(nèi)存;具體過(guò)程是新建一個(gè)符號(hào)表生成變量名為g的符號(hào),并插入到框架變量符號(hào)表中,然后將該符號(hào)表壓棧;
[0050]圖e是在狀態(tài)5和狀態(tài)6時(shí)的內(nèi)存分布示意圖,狀態(tài)5和狀態(tài)6沒(méi)有遇到框架語(yǔ)句也沒(méi)有遇到非框架變量,因此狀態(tài)5和狀態(tài)6的內(nèi)存分配示意圖和狀態(tài)4的內(nèi)存分配示意圖相同;
[0051]圖f是在狀態(tài)6結(jié)束時(shí)釋放框架變量g后的內(nèi)存分布示意圖;狀態(tài)7時(shí)語(yǔ)句frame (g)對(duì)應(yīng)的區(qū)間結(jié)束,因此需要釋放框架變量g所對(duì)應(yīng)的內(nèi)存,具體過(guò)程是將棧頂符號(hào)表彈棧,并刪除棧頂符號(hào)表中的符號(hào);
[0052]圖g是在狀態(tài)6結(jié)束時(shí)釋放框架變量xl和框架變量yl后的內(nèi)存分布示意圖;狀態(tài)7時(shí)語(yǔ)句frame (xl,yl)對(duì)應(yīng)的區(qū)間結(jié)束,因此需要釋放框架變量xl和框架變量x2所對(duì)應(yīng)的內(nèi)存,具體過(guò)程是將棧頂符號(hào)表彈棧,并刪除棧頂符號(hào)表中的符號(hào);
[0053]圖h是在狀態(tài)7給非框架變量I分配內(nèi)存后的內(nèi)存分布示意圖,在狀態(tài)7時(shí),遇到非框架變量1,因此需要對(duì)變量I分配內(nèi)存,具體過(guò)程是生成一個(gè)符號(hào)名為I的符號(hào),并插入到非框架變量符號(hào)表中;
[0054]圖1是圖2中的MSVL程序執(zhí)行完之后的內(nèi)存分配示意圖;根據(jù)本發(fā)明的內(nèi)存管理方法,在每個(gè)狀態(tài)結(jié)束時(shí)會(huì)自動(dòng)釋放該狀態(tài)對(duì)應(yīng)的非框架變量,在整個(gè)程序結(jié)束時(shí)刪除非框架變量符號(hào)表;因?yàn)榇藭r(shí)圖2中的MSVL程序已經(jīng)執(zhí)行結(jié)束,因此刪除非框架變量符號(hào)表;又因?yàn)闋顟B(tài)7結(jié)束時(shí)語(yǔ)句frame (x, y)對(duì)應(yīng)的區(qū)間也結(jié)束,因此需要?jiǎng)h除棧頂?shù)姆?hào)表中的所有符號(hào),并將棧頂符號(hào)表彈棧。
[0055]如圖5所示,本發(fā)明實(shí)施例的MSVL程序內(nèi)存管理方法的實(shí)現(xiàn)方法包括以下步驟:
[0056]S501:將MSVL程序中的框架變量和非框架變量分開(kāi)存儲(chǔ),所有非框架變量存儲(chǔ)在非框架變量符號(hào)表中,相同生命周期的框架變量存儲(chǔ)在同一個(gè)符號(hào)表中,并將所有框架變量符號(hào)表壓入框架變量棧中;
[0057]S502:遇到框架語(yǔ)句時(shí),新建一個(gè)符號(hào)表,將相應(yīng)的框架變量存入該符號(hào)表中,并將新建的符號(hào)表壓入框架變量棧中;
[0058]S503:每個(gè)狀態(tài)結(jié)束時(shí),刪除非框架變量符號(hào)表中的所有變量;
[0059]S504:每個(gè)區(qū)間結(jié)束時(shí)釋放該區(qū)間對(duì)應(yīng)的框架變量。
[0060]圖6給出了在MSV工具中實(shí)現(xiàn)本發(fā)明之前和實(shí)現(xiàn)本發(fā)明之后內(nèi)存使用情況比較的一個(gè)例子。
[0061]圖a中是一個(gè)MSVL程序,該程序中變量i在整個(gè)區(qū)間上是框架的,變量a和變量b分別在兩個(gè)子區(qū)間上是框架的。
[0062]圖b是用未實(shí)現(xiàn)本發(fā)明的MSV工具對(duì)圖a中的程序執(zhí)行時(shí)所占用的最大內(nèi)存,大約為90M。
[0063]圖c是用實(shí)現(xiàn)本發(fā)明后的MSV工具對(duì)圖a中的程序執(zhí)行時(shí)所占用的最大內(nèi)存,大約為50M.
[0064]圖b和圖c中的MSV工具執(zhí)行時(shí)的軟硬件環(huán)境相同。其中,軟件環(huán)境:64位win7操作系統(tǒng);硬件環(huán)境:HP臺(tái)式機(jī),Inteli7處理器,SG內(nèi)存。從圖b和圖c可以看出,實(shí)現(xiàn)本發(fā)明后,節(jié)省了大約40M內(nèi)存。通過(guò)對(duì)圖a中的程序進(jìn)行分析也可以得到該結(jié)果。對(duì)于圖a中的程序,在實(shí)現(xiàn)本發(fā)明前,所占的最大內(nèi)存空間為變量i,a,b所占的內(nèi)存以及程序執(zhí)行過(guò)程中其他信息所占內(nèi)存;在實(shí)現(xiàn)本發(fā)明后,所占最大內(nèi)存空間為變量i,b所占的內(nèi)存以及程序執(zhí)行過(guò)程中其他信息所占的內(nèi)存。由于變量a所占內(nèi)存空間為40M,因此節(jié)約了 40M內(nèi)存。
[0065]需要說(shuō)明的是,在圖a的程序中,變量a和變量b均為大小為10,000,000的整形數(shù)組,數(shù)組中每個(gè)元素占4個(gè)字節(jié)(byte),因此變量a和變量b所占空間為40Mb。
[0066]以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
【權(quán)利要求】
1.一種MSVL程序內(nèi)存管理方法,其特征在于,該MSVL程序內(nèi)存管理方法包括框架變量存儲(chǔ)區(qū)和非框架變量存儲(chǔ)區(qū),框架變量存儲(chǔ)區(qū)用于存儲(chǔ)框架變量,非框架變量存儲(chǔ)區(qū)用于存儲(chǔ)非框架變量;該MSVL程序內(nèi)存管理方法能對(duì)不同生命周期的框架變量進(jìn)行分開(kāi)存儲(chǔ),在一個(gè)狀態(tài)結(jié)束后刪除該狀態(tài)的非框架變量,并且刪除時(shí)不用進(jìn)行查找操作;在一個(gè)框架語(yǔ)句對(duì)應(yīng)的區(qū)間結(jié)束時(shí)刪除該區(qū)間對(duì)應(yīng)的框架變量,并且刪除時(shí)不用進(jìn)行查找操作。
2.如權(quán)利要求1所述的MSVL程序內(nèi)存管理方法,其特征在于,該MSVL程序內(nèi)存管理方法的實(shí)現(xiàn)步驟為: 步驟一、將MSVL程序中的框架變量和非框架變量分開(kāi)存儲(chǔ),所有非框架變量存儲(chǔ)在非框架變量符號(hào)表中,相同生命周期的框架變量存儲(chǔ)在同一個(gè)符號(hào)表中,并將所有框架變量符號(hào)表壓入框架變量棧中; 步驟二,遇到框架語(yǔ)句時(shí),新建一個(gè)符號(hào)表,將相應(yīng)的框架變量存入該符號(hào)表中,并將新建的符號(hào)表壓入框架變量棧中; 步驟三,每個(gè)狀態(tài)結(jié)束時(shí),刪除非框架變量符號(hào)表中的所有變量; 步驟四,每個(gè)區(qū)間結(jié)束時(shí)釋放該區(qū)間對(duì)應(yīng)的框架變量。
3.如權(quán)利要求1所述的MSVL程序內(nèi)存管理方法,其特征在于,非框架變量存儲(chǔ)區(qū)由一個(gè)符號(hào)表構(gòu)成,符號(hào)表是一個(gè)map結(jié)構(gòu),map的key值是變量名,value值是變量的類型,值信息;框架變量存儲(chǔ)區(qū)由一個(gè)框架變量棧構(gòu)成,棧中的每一個(gè)元素是一個(gè)符號(hào)表。
4.如權(quán)利要求2所述的MSVL程序內(nèi)存管理方法,其特征在于,在MSVL程序執(zhí)行的過(guò)程中遇到框架語(yǔ)句時(shí),新建一個(gè)符號(hào)表,并將相應(yīng)的框架變量存入符號(hào)表中,然后將符號(hào)表壓入框架變量棧中;在MSVL程序的執(zhí)行過(guò)程中遇到非框架變量時(shí),將非框架變量存入非框架變量符號(hào)表中。
5.如權(quán)利要求2所述的MSVL程序內(nèi)存管理方法,其特征在于,在一個(gè)狀態(tài)結(jié)束后,如果非框架變量符號(hào)表不為空,則刪除非框架變量符號(hào)表中的符號(hào);在一個(gè)區(qū)間結(jié)束后,如果區(qū)間有對(duì)應(yīng)的框架變量,則將框架變量棧的棧頂符號(hào)表彈棧,并刪除棧頂符號(hào)表中的符號(hào)。
【文檔編號(hào)】G06F9/50GK104268023SQ201410531221
【公開(kāi)日】2015年1月7日 申請(qǐng)日期:2014年10月10日 優(yōu)先權(quán)日:2014年10月10日
【發(fā)明者】段振華, 楊凱, 田聰, 張南, 王小兵 申請(qǐng)人:西安電子科技大學(xué)
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
五原县| 大姚县| 惠水县| 临澧县| 长子县| 卓尼县| 太仓市| 和政县| 永靖县| 双江| 得荣县| 独山县| 靖宇县| 隆化县| 木里| 贵南县| 京山县| 柯坪县| 汝州市| 阿拉善左旗| 衡阳县| 高唐县| 长治县| 永嘉县| 赤城县| 林西县| 宣化县| 梓潼县| 永寿县| 许昌县| 巴彦县| 西安市| 镇雄县| 乌拉特后旗| 清苑县| 绥滨县| 苍南县| 巧家县| 湘乡市| 荥经县| 乐平市|