一種可配置式內(nèi)存管理方法
【專利摘要】一種可配置式內(nèi)存管理方法,屬于信息【技術(shù)領(lǐng)域】。將內(nèi)存區(qū)結(jié)構(gòu)劃分到創(chuàng)建、管理零代碼化。在服務(wù)器安裝配置數(shù)據(jù)庫,各客戶端內(nèi)存區(qū)劃分情況均從配置數(shù)據(jù)庫讀取。各客戶端安裝:內(nèi)存配置獲取模塊、內(nèi)存創(chuàng)建模塊、內(nèi)存監(jiān)控模塊。由以上模塊讀取配置信息,創(chuàng)建、監(jiān)控內(nèi)存區(qū)。根據(jù)配置數(shù)據(jù)庫中各數(shù)據(jù)結(jié)構(gòu)之間的關(guān)聯(lián)關(guān)系,客戶端內(nèi)存獲取模塊在本地將其轉(zhuǎn)換為非關(guān)系數(shù)據(jù)結(jié)構(gòu),轉(zhuǎn)換成大量直觀的內(nèi)存配置數(shù)據(jù)。內(nèi)存創(chuàng)建模塊根據(jù)配置創(chuàng)建內(nèi)存后,再由內(nèi)存監(jiān)控模塊顯示、更改、監(jiān)測內(nèi)存區(qū)變量值,省略對關(guān)系數(shù)據(jù)庫查詢時(shí)間,大大提高了內(nèi)存管理響應(yīng)速度。本發(fā)明還可自動(dòng)生成定義文件,以方便在工程上的應(yīng)用,大大節(jié)省了編程人員消耗在內(nèi)存管理上的時(shí)間。
【專利說明】—種可配置式內(nèi)存管理方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于信息【技術(shù)領(lǐng)域】,特別涉及一種可配置式內(nèi)存管理方法。是一種集內(nèi)存配置、創(chuàng)建、維護(hù)為一體的管理方法。
【背景技術(shù)】
[0002]在熱連軋工程開發(fā)中,采用星型拓?fù)渚W(wǎng)絡(luò)。粗軋、精軋、層冷、數(shù)據(jù)中心各客戶端與服務(wù)器通過TCP/IP協(xié)議進(jìn)行通訊。各客戶端中既有相同結(jié)構(gòu)的內(nèi)存區(qū)(這些內(nèi)存區(qū)結(jié)構(gòu)應(yīng)始終保持一致,以下稱“通用內(nèi)存區(qū)”),也有各自結(jié)構(gòu)不同的內(nèi)存區(qū)(以下稱“專用內(nèi)存區(qū)”)。在開發(fā)中發(fā)現(xiàn)以下問題:為保持通用內(nèi)存區(qū)劃分同步,某客戶端更改相同結(jié)構(gòu)內(nèi)存區(qū)的劃分時(shí),需在其他客戶端同步更新,工作繁復(fù),易出錯(cuò);實(shí)現(xiàn)內(nèi)存區(qū)劃分、創(chuàng)建、管理需要大量代碼,易出錯(cuò);內(nèi)存管理往往都是在后臺(tái)程序進(jìn)行,不直觀。
【發(fā)明內(nèi)容】
[0003]本發(fā)明的目的在于提供一種可配置式內(nèi)存管理方法,將內(nèi)存區(qū)結(jié)構(gòu)劃分方式存儲(chǔ)于服務(wù)器關(guān)系數(shù)據(jù)庫,根據(jù)各數(shù)據(jù)結(jié)構(gòu)之間的關(guān)聯(lián)關(guān)系,客戶端通過內(nèi)存獲取模塊在本地將其轉(zhuǎn)換為非關(guān)系數(shù)據(jù)結(jié)構(gòu),轉(zhuǎn)換成大量直觀的內(nèi)存配置數(shù)據(jù)。由客戶端內(nèi)存創(chuàng)建模塊根據(jù)配置創(chuàng)建內(nèi)存,再由客戶端內(nèi)存監(jiān)控模塊顯示、更改、監(jiān)測內(nèi)存區(qū)變量值,省略對關(guān)系數(shù)據(jù)庫查詢時(shí)間,大大提高了內(nèi)存管理響應(yīng)速度。如圖1,當(dāng)某客戶端修改通用內(nèi)存區(qū)時(shí),只需更新服務(wù)器上數(shù)據(jù)庫,在各客戶端運(yùn)行三個(gè)模塊(內(nèi)存獲取模塊、內(nèi)存創(chuàng)建模塊、內(nèi)存監(jiān)控模塊)即可。
[0004]在服務(wù)器一多個(gè)客戶端網(wǎng)絡(luò)工程開發(fā)中,多客戶端需采用相同內(nèi)存區(qū)結(jié)構(gòu)劃分時(shí),可采用該方法進(jìn)行同步管理。
[0005]本發(fā)明將內(nèi)存區(qū)結(jié)構(gòu)劃分到創(chuàng)建、管理零代碼化;并采用自動(dòng)生成代碼技術(shù)生成內(nèi)存定義頭文件,以方便在工程上的應(yīng)用,大大節(jié)省了編程人員消耗在內(nèi)存管理上的時(shí)間。
[0006]以下將詳細(xì)介紹本發(fā)明實(shí)現(xiàn)步驟(包括內(nèi)存獲取模塊、內(nèi)存創(chuàng)建模塊、內(nèi)存監(jiān)控模塊的實(shí)現(xiàn)方法等):
[0007]步驟1、在服務(wù)器上安裝配置數(shù)據(jù),各客戶端配置監(jiān)聽。各客戶端都通過對服務(wù)器配置數(shù)據(jù)庫的配置,對內(nèi)存區(qū)結(jié)構(gòu)進(jìn)行劃分。
[0008]由于內(nèi)存定義中可能出現(xiàn)多層數(shù)據(jù)結(jié)構(gòu)、結(jié)構(gòu)體嵌套等情況,本發(fā)明對配置數(shù)據(jù)庫進(jìn)行了規(guī)范化管理:各類表的名稱、各表結(jié)構(gòu),相互引用的表之間外鍵聯(lián)系。
[0009]根據(jù)需求在服務(wù)器配置數(shù)據(jù)庫上創(chuàng)建表、及填寫數(shù)據(jù)如下:
[0010]
【權(quán)利要求】
1.一種可配置式內(nèi)存管理方法,將內(nèi)存區(qū)結(jié)構(gòu)劃分方式存儲(chǔ)于服務(wù)器關(guān)系數(shù)據(jù)庫,根據(jù)各數(shù)據(jù)結(jié)構(gòu)之間的關(guān)聯(lián)關(guān)系,客戶端通過內(nèi)存獲取模塊在本地將其轉(zhuǎn)換為非關(guān)系數(shù)據(jù)結(jié)構(gòu),轉(zhuǎn)換成大量直觀的內(nèi)存配置數(shù)據(jù);由客戶端內(nèi)存創(chuàng)建模塊根據(jù)配置創(chuàng)建內(nèi)存,再由客戶端內(nèi)存監(jiān)控模塊顯示、更改、監(jiān)測內(nèi)存區(qū)變量值,省略對關(guān)系數(shù)據(jù)庫查詢時(shí)間,當(dāng)某客戶端修改通用內(nèi)存區(qū)時(shí),只需更新服務(wù)器上數(shù)據(jù)庫,在各客戶端運(yùn)行三個(gè)模塊;工藝步驟如下: 步驟1、在服務(wù)器上安裝配置數(shù)據(jù),各客戶端配置監(jiān)聽。各客戶端都通過對服務(wù)器配置數(shù)據(jù)庫的配置,對內(nèi)存區(qū)結(jié)構(gòu)進(jìn)行劃分; 對配置數(shù)據(jù)庫進(jìn)行了規(guī)范化管理,各表以內(nèi)存名或變量名字段為主鍵,確保輸入內(nèi)存名或變量名的唯一性;各表間外鍵依賴關(guān)系預(yù)防了邏輯錯(cuò)誤; 步驟2、實(shí)現(xiàn)內(nèi)存配置獲取模塊: 客戶端上內(nèi)存配置獲取模塊讀服務(wù)器數(shù)據(jù)庫表;從內(nèi)存信息匯總表獲取與該客戶端相關(guān)的內(nèi)存信息,包括通用內(nèi)存區(qū)及與該客戶端相關(guān)的專用內(nèi)存區(qū),內(nèi)存配置獲取模塊根據(jù)與該客戶端相關(guān)的內(nèi)存信息,在本地創(chuàng)建中間數(shù)據(jù)文件,供內(nèi)存創(chuàng)建模塊、內(nèi)存監(jiān)控模塊使用; 內(nèi)存監(jiān)控模塊根據(jù)內(nèi)存塊中各成員偏移地址來管理內(nèi)存成員,需在中間數(shù)據(jù)文件中將偏移地址準(zhǔn)備好,以備內(nèi)存管理使用; 計(jì)算內(nèi)存成員偏移地址,需將各類型長度包括自定義結(jié)構(gòu)體長度準(zhǔn)備好;內(nèi)存配置獲取模塊從數(shù)據(jù)庫表中調(diào)取結(jié)構(gòu)體信息,通過結(jié)構(gòu)體成員維數(shù)及長度乘以類型長度,計(jì)算用戶定義結(jié)構(gòu)體大小,有嵌套結(jié)構(gòu)體時(shí),遞歸調(diào)用; 內(nèi)存配置獲取模塊將配置數(shù)據(jù)庫從關(guān)系型數(shù)據(jù)解析成非關(guān)系型數(shù)據(jù),存儲(chǔ)到中間數(shù)據(jù)文件中;每一塊內(nèi)存區(qū)對應(yīng)生成一個(gè)中間數(shù)據(jù)文件,其中內(nèi)容包括內(nèi)存塊內(nèi)每一最底層變量的名稱、類型、長度、偏移地址; 步驟3、實(shí)現(xiàn)內(nèi)存配置獲取模塊: 客戶端內(nèi)存配置獲取模塊根據(jù)服務(wù)器上配置數(shù)據(jù)庫,根據(jù)該客戶端內(nèi)存信息,為每一塊內(nèi)存、及結(jié)構(gòu)體、常數(shù)表都生成一個(gè)定義文件,當(dāng)有嵌套結(jié)構(gòu)體時(shí),定義文件代碼中包含該嵌套結(jié)構(gòu)體定義的頭文件; 步驟4、實(shí)現(xiàn)內(nèi)存創(chuàng)建模塊: 客戶端內(nèi)存創(chuàng)建模塊根據(jù)內(nèi)存配置獲取模塊生成的本地中間數(shù)據(jù)文件,根據(jù)各個(gè)內(nèi)存塊的大小,創(chuàng)建內(nèi)存。將內(nèi)存塊名稱、子區(qū)數(shù)、子區(qū)長度、內(nèi)存塊數(shù),存入程序內(nèi)存信息列表;內(nèi)存監(jiān)控模塊進(jìn)行內(nèi)存管理時(shí),只需映射內(nèi)存;當(dāng)不使用內(nèi)存時(shí),也需從內(nèi)存創(chuàng)建模塊釋放空間; 步驟5、實(shí)現(xiàn)內(nèi)存監(jiān)控模塊: 步驟6、每個(gè)客戶端上安裝以上內(nèi)存配置獲取模塊、內(nèi)存創(chuàng)建模塊、內(nèi)存監(jiān)控模塊; 順序運(yùn)行以上三個(gè)模塊,即自動(dòng)創(chuàng)建適合該客戶端的內(nèi)存,并從內(nèi)存監(jiān)控模塊監(jiān)測、修改內(nèi)存區(qū)的值。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于:偏移地址的計(jì)算重在計(jì)算結(jié)構(gòu)體大小,計(jì)算結(jié)構(gòu)體s_A的大小,具體步驟如下: (I)讀結(jié)構(gòu)體表,將結(jié)構(gòu)體成員名、類型、各維長度存儲(chǔ)于[結(jié)構(gòu)體數(shù)組列表]。首位成員在結(jié)構(gòu)體中的偏移地址記為O ;(2)根據(jù)結(jié)構(gòu)體成員類型,從基礎(chǔ)類型表中查詢該類型長度。如果查詢到,則結(jié)構(gòu)體成員是基礎(chǔ)類型,則根據(jù)其位數(shù)計(jì)算字節(jié)數(shù);反之,結(jié)構(gòu)體成員類型是結(jié)構(gòu)體類型s_B即結(jié)構(gòu)體內(nèi)嵌套結(jié)構(gòu)體,在[結(jié)構(gòu)體數(shù)組列表]中查找;如果沒有找到,則進(jìn)行遞歸調(diào)用,計(jì)算結(jié)構(gòu)體s_B的大小;計(jì)算完成后,返回結(jié)構(gòu)體s_B的值; 如果找到該結(jié)構(gòu)體,則從[結(jié)構(gòu)體數(shù)組列表]中獲取結(jié)構(gòu)體大?。? (3)根據(jù)結(jié)構(gòu)體成員類型長度及各維長度,計(jì)算該成員所占字節(jié)大小,與其偏移地址累加,即下一成員偏移地;。 (4)如該成員是結(jié)構(gòu)體最后一員,則下一成員的偏移地址即為結(jié)構(gòu)體s_A的大小,至此計(jì)算結(jié)構(gòu)體大小完成;如該成員不是結(jié)構(gòu)體最后一員,則循環(huán)以上過程(2)~(4),直至結(jié)構(gòu)體大小計(jì)算完畢,并將結(jié)構(gòu)體相應(yīng)信息存入類型數(shù)組列表。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于:以表名+.h作為定義文件名稱,根據(jù)配置表中內(nèi)存名稱、內(nèi)存變量、變量類型制作內(nèi)存定義頭文件;根據(jù)配置表中結(jié)構(gòu)體名稱、結(jié)構(gòu)體變量、變量類型制作結(jié)構(gòu)體定義頭文件;根據(jù)配置表中常量、常量值制作宏定義頭文件; 生成定義文件保存在統(tǒng)一路徑文件夾中,文件夾命名方式“ Include」+YYYYMMDD型生成日期作為后綴,保存多版本生成的頭文件,定期按生成時(shí)間進(jìn)行刪除。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于:實(shí)現(xiàn)內(nèi)存監(jiān)控模塊的步驟如下: (O當(dāng)打開客戶 端內(nèi)存監(jiān)控模塊內(nèi)存管理程序時(shí),自動(dòng)映射共享內(nèi)存,并顯示共享內(nèi)存連接狀;。當(dāng)共享內(nèi)存連接失敗時(shí),可手動(dòng)連接共享內(nèi)存; (2)實(shí)現(xiàn)內(nèi)存區(qū)變量顯示:在顯示參數(shù)區(qū)域列出由內(nèi)存創(chuàng)建模塊創(chuàng)建的本地共享內(nèi)存名稱,根據(jù)用戶選擇的共享內(nèi)存名稱、子區(qū)號、變量數(shù)顯示內(nèi)存區(qū)變量;在變量顯示區(qū)顯示:序號、變量類型、變量值、偏移地址、注釋;內(nèi)存監(jiān)控模塊定時(shí)刷新內(nèi)存數(shù)據(jù),將新內(nèi)存數(shù)據(jù)更新至畫面; (3)實(shí)現(xiàn)內(nèi)存區(qū)變量修改:內(nèi)存連接成功、監(jiān)測畫面顯示變量后,修改、提交變量值;內(nèi)存監(jiān)控模塊程序?qū)⑿薷暮笾祵懭雰?nèi)存,并刷新畫面顯示; (4)實(shí)現(xiàn)曲線實(shí)時(shí)監(jiān)控:以曲線形式實(shí)時(shí)監(jiān)控內(nèi)存中變量的變化情況,以內(nèi)存區(qū)變量值為縱坐標(biāo),以時(shí)間為橫坐標(biāo)節(jié)點(diǎn)向前繪制曲線,折線顯示多個(gè)記錄點(diǎn),實(shí)現(xiàn)實(shí)時(shí)觀測數(shù)據(jù)變化趨勢功能。
【文檔編號】G06F9/44GK103729443SQ201310744572
【公開日】2014年4月16日 申請日期:2013年12月30日 優(yōu)先權(quán)日:2013年12月30日
【發(fā)明者】龔彩軍, 趙強(qiáng), 劉暢 申請人:北京首鋼自動(dòng)化信息技術(shù)有限公司