專利名稱:非揮發(fā)信息存儲管理方法
技術領域:
本發(fā)明涉及一種信息存儲管理方法。
目前,對這些非揮發(fā)信息的存儲基本采用以下兩種方法一種是將所有的信息作為一個完整的文件,每條信息沒有明確的位置,對其中的某條信息的操作必須針對整個文件;另一種方法是將每條信息獨立存儲,其起始位置固定在某個地址,每條信息允許的最大長度和格式也固定設置,通過軟件維護一張表來記錄每條信息的起始位置和長度。
采用第一種方法時,如果要修改其中的一條信息,就會造成其后所有信息都要移動;當要讀取指定的信息時,也必須對整個文件進行分析和解釋才能獲得指定信息,運行效率較低。
采用第二種方法實現(xiàn)了信息的獨立,雖然可以單獨寫入和查詢,但由于格式定義簡單,預先設定后缺乏靈活性和可擴展性,如果系統(tǒng)新的版本中出現(xiàn)信息的長度超過了規(guī)定的最大長度,就只能重新設計和編寫整個信息存儲模塊的代碼。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種既能實現(xiàn)信息獨立訪問又能適應各種記錄長度的非揮發(fā)信息存儲管理方法。
為實現(xiàn)上述目的,本發(fā)明采用的技術方案是先將用于存儲非揮發(fā)信息的存儲區(qū)域劃分為整數(shù)個等長度的段作為存取操作的基本單元,并對各段依次編號,其中首段作為用于描述段的結構的描述段,其余段為用于信息存儲的記錄段;所述描述段包括用于表示段的大小的粒度域和用于表示記錄段中的指針域長度的指針長度域,所述記錄段包括下述域(1)指針域,用于表示同一記錄的各段間的順序關系;(2)記錄名域,用于唯一地標識每個記錄;(3)格式域,用于描述記錄的格式;(4)記錄數(shù)據(jù)域,用于存儲記錄的內(nèi)容;非揮發(fā)信息存儲管理是對經(jīng)上述劃分的存儲區(qū)域執(zhí)行下述操作a、對段作初始化;b、獲取記錄的相關數(shù)據(jù);c、設置或修改記錄;d、刪除記錄。
采用上述技術方案后,存儲空間動態(tài)劃分為多個段,對記錄的存取操作以段為單位進行,每個記錄至少占據(jù)一個段,描述段與記錄段結合的方法使存儲空間的利用具有靈活性,信息的存取、修改及刪除均可通過對其中域的運算實現(xiàn),既可對信息獨立訪問又能適應各種記錄長度的信息存儲。
圖1是本發(fā)明方法中存儲區(qū)域劃分結構圖。
圖2是對段作初始化的實施方式流程圖。
圖3是獲取當前的記錄數(shù)目的實施方式流程圖。
圖4是獲取指定記錄名的記錄內(nèi)容的實施方式流程圖。
圖5是獲取指定序號的記錄的實施方式流程圖。
圖6是設置或修改記錄的實施方式流程圖。
圖7是刪除指定記錄名的記錄的實施方式流程圖。
參照圖1,首先將非易失存儲介質的整個存儲區(qū)域劃分成整數(shù)個連續(xù)的段,每個段的大小相同。每個段只能被一條記錄獨占,不能多個記錄使用同一個段;一條記錄至少占用一個段,當記錄比較長時,一個記錄可使用多個段。對各段依次編號,具體實施中,可以從低地址到高地址從0開始編號,依次向上遞增。其中首段,即第0號段固定用于描述段的結構,作為描述段,其后編號從1開始的段都用來存放記錄,作為記錄段。作為本發(fā)明的具體實施方式
,可將描述段的前2個字節(jié)作為粒度域,用來表示段的大小,以字節(jié)為單位。由于粒度域占用2個字節(jié),因此粒度為小于64k字節(jié)的數(shù)值。粒度的大小可根據(jù)記錄的特點選擇適當值。描述段還包括用于表示記錄段中的指針域長度的指針長度域,具體實施中,可用粒度后的1個字節(jié)作為指針長度域,以字節(jié)為單位。描述段中還可以設置保留區(qū)域,以便結合需要增加其他自描述內(nèi)容,如用于記錄存儲介質好壞的介質狀態(tài)標識域。
描述段后均為記錄段,具體實施中,記錄段可按如下結構設置記錄段的開頭為一個指針域,其長度是由描述段中的指針長度域決定。指針域的最高比特位用于指示本記錄段是否是記錄的第一個段,該位如果是0就表示是記錄的第一個段,是1就表示不是第一個段。從次高位開始是真正的指針,該指針用于指向本記錄的下一個段的編號。如果是0,則表示這個段尚未被用作記錄,是可用的;如果是全1,則表示本段是記錄的最后一個段。執(zhí)行程序通過查找第一個比特位為0,且指針為非0的記錄段,就可以遍歷所有的記錄。初始狀態(tài)為整個存儲區(qū)域為全0,表示所有的記錄段都是空的。指針域后面是記錄名域,由可打印字符組成,以一個字節(jié)的格式域作結束符,記錄名用來唯一的標識每個記錄。格式域設置為一個字節(jié),具有兩個作用,一是作為記錄名的結束符,二是描述記錄的格式。可將格式域的取值范圍限定于0至31,對應于ASCII(信息交換標準代碼)中的控制字符,用來標識記錄名的結束位置。且0至31的值僅占用一個字節(jié)中的最低5個比特,其中高位的兩個比特用來標識記錄類型,如以0標識字符類型,以1標識二進制類型,2和3保留。具體實施中,格式域后還可以跟標識記錄長度的記錄長度域,使用格式域的最低位的三個比特來描述這個記錄長度域,以0表示格式域后不跟記錄長度區(qū)域,1表示記錄長度域占用1個字節(jié),依此類推。采用該種變長記錄長度域可以提高存儲空間的利用率,尤其對于字符型記錄,可以不需要記錄長度域,而用一個NULL(空)字符表示字符串的結束。記錄段中的記錄數(shù)據(jù)域用于存儲記錄的內(nèi)容,如果一個段不夠存儲一個記錄,可以使用多個段,每個段起始的指針域指向下一個段。采用以上實施方式劃分存儲空間,用一個描述段來描述段的結構,用一個格式域來描述記錄的類型和結構,具有較完善的自描述特性、靈活性和可擴展性。
經(jīng)上述劃分后,對非揮發(fā)信息的存儲管理包括下述操作a、對段作初始化;b、獲取記錄的相關數(shù)據(jù);c、設置或修改記錄;d、刪除記錄。
圖2所示是對段作初始化的實施方式的流程,其操作步驟包括a1、描述段中寫入粒度值;a2、描述段中寫入指針長度值;a3、對所有記錄段的域賦0值;a4、返回主程序。
所述獲取記錄的相關數(shù)據(jù),包括獲取當前的記錄數(shù)目、獲取指定記錄名的記錄內(nèi)容并返回記錄類型和長度以及獲取指定序號的記錄,并返回記錄名,類型和長度;圖3所示是獲取當前的記錄數(shù)目的實施方式的流程,具體操作步驟包括b1、對當前遍歷段號變量m賦初值1,記錄計數(shù)變量n賦初值0;b2、判斷段號為m的段之0比特位的值是否等于0而且該段指針域的值不等于0,判斷結果如果是真,執(zhí)行步驟b3;如果否,執(zhí)行步驟b4;b3、變量n增加1;b4、變量m增加1;
b5、判斷變量m的值是否大于總段數(shù),如果否,返回步驟b2;如果是,執(zhí)行步驟b6;b6、返回變量n的值。
圖4所示是獲取指定記錄名的記錄內(nèi)容的實施方式的流程,具體操作步驟包括c1、對當前搜索段號變量m賦初值1;c2、判斷段號為m的段之0比特位的值是否等于0而且該段指針域的值不等于0,判斷結果如果是真,執(zhí)行步驟c3;如果否,執(zhí)行步驟c8;c3、搜索格式域;c4、判斷記錄名與搜索記錄是否一致,如果是,執(zhí)行步驟c5;如果否,執(zhí)行步驟c8;c5、處理記錄長度;c6、返回記錄內(nèi)容、類型和長度;c7、返回主程序;c8、變量m增加1;c9、判斷變量m的值是否大于總段數(shù),如果否,返回步驟c2;如果是,執(zhí)行步驟c10;c10、返回查找失敗結果。
圖5所示是獲取指定序號的記錄的實施方式的流程,具體操作步驟包括d1、對當前搜索段號變量m賦初值1,當前記錄號變量n賦初值0;
d2、判斷段號為m的段之0比特位的值是否等于0而且該段指針域的值不等于0,判斷結果如果是真,執(zhí)行步驟d3;如果否,執(zhí)行步驟d8;d3、變量n增加1;d4、判斷當前記錄號變量n的值是否等于指定記錄號,如果是,執(zhí)行步驟d5;如果否,執(zhí)行步驟d8;d5、處理格式域和記錄長度;d6、返回記錄名,類型和長度;d7、返回主程序;d8、變量m增加1;d9、判斷變量m的值是否大于總段數(shù),如果否,返回步驟d2;如果是,執(zhí)行步驟d10;d10、返回查找失敗結果。
圖6所示是設置或修改記錄的實施方式流程,具體操作步驟包括e1、對當前搜索段號變量m賦初值1;e2、判斷段號為m的段之0比特位的值是否等于0而且該段指針域的值不等于0,判斷結果如果是真,執(zhí)行步驟e3;如果否,執(zhí)行步驟e9;e3、搜索格式域;e4、判斷記錄名與搜索記錄是否一致,如果是,執(zhí)行步驟e5;如果否,執(zhí)行步驟e9;e5、刪除該記錄;
e6、搜尋空白段;e7、寫入記錄;e8、返回主程序;e9、變量m增加1;刪除記錄的操作包括刪除指定記錄名的記錄和刪除所有記錄,其中,圖7所示是刪除指定記錄名的記錄的實施方式流程,步驟包括f1、對當前搜索段號變量m賦初值1;f2、判斷段號為m的段之0比特位的值是否等于0而且該段指針域的值不等于0,判斷結果如果是真,執(zhí)行步驟f3;如果否,執(zhí)行步驟f7;f3、搜索格式域;f4、判斷記錄名與搜索記錄是否一致,如果是,執(zhí)行步驟f5;如果否,執(zhí)行步驟f7;f5、記錄數(shù)據(jù)域清零;f6、返回主程序;f7、變量m增加1;f8、判斷變量m的值是否大于總段數(shù),如果否,返回步驟f2;如果是,執(zhí)行步驟f9;f9、返回查找失敗結果。
刪除所有的記錄的操作是將所有記錄段的內(nèi)容清零,即將所有記錄數(shù)據(jù)域清零。
權利要求
1.一種非揮發(fā)信息存儲管理方法,其特征在于將用于存儲非揮發(fā)信息的存儲區(qū)域劃分為整數(shù)個等長度的段作為存取操作的基本單元,并對各段依次編號,其中首段作為用于描述段的結構的描述段,其余段為用于信息存儲的記錄段;所述描述段包括用于表示段的大小的粒度域和用于表示記錄段中的指針域長度的指針長度域,所述記錄段包括下述域(1)指針域,用于表示同一記錄的各段間的順序關系;(2)記錄名域,用于唯一地標識每個記錄;(3)格式域,用于描述記錄的格式;(4)記錄數(shù)據(jù)域,用于存儲記錄的內(nèi)容;非揮發(fā)信息存儲管理是對經(jīng)上述劃分的存儲區(qū)域執(zhí)行下述操作a、對段作初始化;b、獲取記錄的相關數(shù)據(jù);c、設置或修改記錄;d、刪除記錄。
2.如權利要求1所述的非揮發(fā)信息存儲管理方法,其特征在于所述描述段還包括用于記錄存儲介質好壞的介質狀態(tài)標識域。
3.如權利要求1所述的非揮發(fā)信息存儲管理方法,其特征在于所述記錄段的格式域中可選擇地設置標識記錄長度的記錄長度域,如果記錄內(nèi)容為字符型,不設置該記錄長度域;如果記錄內(nèi)容為非字符型,該記錄長度域值決定記錄的長度。
4.如權利要求1所述的非揮發(fā)信息存儲管理方法,其特征在于所述對段作初始化的操作包括下述步驟a1、描述段中寫入粒度值;a2、描述段中寫入指針長度值;a3、對所有記錄段的域賦0值;a4、返回主程序。
5.如權利要求1所述的非揮發(fā)信息存儲管理方法,其特征在于所述獲取記錄的相關數(shù)據(jù)包括獲取當前的記錄數(shù)目、獲取指定記錄名的記錄內(nèi)容并返回記錄類型和長度以及獲取指定序號的記錄,并返回記錄名,類型和長度;
6.如權利要求5所述的非揮發(fā)信息存儲管理方法,其特征在于所述獲取當前的記錄數(shù)目的操作包括下述步驟b1、對當前遍歷段號變量m賦初值1,記錄計數(shù)變量n賦初值0;b2、判斷段號為m的段之0比特位的值是否等于0而且該段指針域的值不等于0,判斷結果如果是真,執(zhí)行步驟b3;如果否,執(zhí)行步驟b4;b3、變量n增加1;b4、變量m增加1;b5、判斷變量m的值是否大于總段數(shù),如果否,返回步驟b2;如果是,執(zhí)行步驟b6;b6、返回變量n的值。
7.如權利要求5所述的非揮發(fā)信息存儲管理方法,其特征在于所述獲取指定記錄名的記錄內(nèi)容并返回記錄類型和長度的操作包括下述步驟c1、對當前搜索段號變量m賦初值1;c2、判斷段號為m的段之0比特位的值是否等于0而且該段指針域的值不等于0,判斷結果如果是真,執(zhí)行步驟c3;如果否,執(zhí)行步驟c8;c3、搜索格式域;c4、判斷記錄名與搜索記錄是否一致,如果是,執(zhí)行步驟c5;如果否,執(zhí)行步驟c8;c5、處理記錄長度;c6、返回記錄內(nèi)容、類型和長度;c7、返回主程序;c8、變量m增加1;c9、判斷變量m的值是否大于總段數(shù),如果否,返回步驟c2;如果是,執(zhí)行步驟c10;c10、返回查找失敗結果。
8.如權利要求5所述的非揮發(fā)信息存儲管理方法,其特征在于所述獲取指定序號的記錄,并返回記錄名,類型和長度的操作包括下述步驟d1、對當前搜索段號變量m賦初值1,當前記錄號變量n賦初值0;d2、判斷段號為m的段之0比特位的值是否等于0而且該段指針域的值不等于0,判斷結果如果是真,執(zhí)行步驟d3;如果否,執(zhí)行步驟d8;d3、變量n增加1;d4、判斷當前記錄號變量n的值是否等于指定記錄號,如果是,執(zhí)行步驟d5;如果否,執(zhí)行步驟d8;d5、處理格式域和記錄長度;d6、返回記錄名,類型和長度;d7、返回主程序;d8、變量m增加1;d9、判斷變量m的值是否大于總段數(shù),如果否,返回步驟d2;如果是,執(zhí)行步驟d10;d10、返回查找失敗結果。
9.如權利要求1所述的非揮發(fā)信息存儲管理方法,其特征在于所述設置或修改記錄的操作包括下述步驟e1、對當前搜索段號變量m賦初值1;e2、判斷段號為m的段之0比特位的值是否等于0而且該段指針域的值不等于0,判斷結果如果是真,執(zhí)行步驟e3;如果否,執(zhí)行步驟e9;e3、搜索格式域;e4、判斷記錄名與搜索記錄是否一致,如果是,執(zhí)行步驟e5;如果否,執(zhí)行步驟e9;e5、刪除該記錄;e6、搜尋空白段;e7、寫入記錄;e8、返回主程序;e9、變量m增加1;e10、判斷變量m的值是否大于總段數(shù),如果否,返回步驟e2;如果是,執(zhí)行步驟e6;
10.如權利要求1所述的非揮發(fā)信息存儲管理方法,其特征在于所述刪除記錄的操作包括刪除指定記錄名的記錄和刪除所有記錄,其中,刪除指定記錄名的記錄包括下述步驟f1、對當前搜索段號變量m賦初值1;f2、判斷段號為m的段之0比特位的值是否等于0而且該段指針域的值不等于0,判斷結果如果是真,執(zhí)行步驟f3;如果否,執(zhí)行步驟f7;f3、搜索格式域;f4、判斷記錄名與搜索記錄是否一致,如果是,執(zhí)行步驟f5;如果否,執(zhí)行步驟f7;f5、記錄數(shù)據(jù)域清零;f6、返回主程序;f7、變量m增加1;f8、判斷變量m的值是否大于總段數(shù),如果否,返回步驟f2;如果是,執(zhí)行步驟f9;f9、返回查找失敗結果。刪除所有的記錄的操作是將所有記錄段的內(nèi)容清零。
全文摘要
本發(fā)明公開了一種非揮發(fā)信息存儲管理方法,先將存儲區(qū)域劃分為整數(shù)個等長度的段作為存取操作的基本單元,并對各段依次編號,其中首段作為用于描述段的結構的描述段,其余段為用于信息存儲的記錄段;描述段包括粒度域和指針域長度的指針長度域,記錄段包括指針域、記錄名域、格式域和記錄數(shù)據(jù)域,對經(jīng)上述劃分的存儲區(qū)域執(zhí)行對段作初始化、獲取記錄的相關數(shù)據(jù)、設置或修改記錄及刪除記錄等操作對信息作存儲管理,使存儲空間的利用具有靈活性,信息的存取、修改及刪除均可通過對其中域的運算實現(xiàn),既可對信息獨立訪問又能適應各種記錄長度的信息存儲。
文檔編號G06F12/06GK1417686SQ0113461
公開日2003年5月14日 申請日期2001年11月7日 優(yōu)先權日2001年11月7日
發(fā)明者趙嵐 申請人:華為技術有限公司