專利名稱:一種對象數(shù)據(jù)存儲管理的裝置和方法
技術(shù)領(lǐng)域:
本發(fā)明涉及存儲管理的裝置及方法,特別涉及對象數(shù)據(jù)存儲管理的裝置及 方法。
技術(shù)背景動態(tài)存儲管理是指動態(tài)存儲管理系統(tǒng)根據(jù)用戶程序在動態(tài)運(yùn)行過程中的需 要分配存儲塊給用戶程序,并在用戶程序使用結(jié)束時(shí),釋放回收分配給用戶程 序的存儲空間。動態(tài)分配和釋放的工作都由動態(tài)存儲管理系統(tǒng)完成,這是支持 程序運(yùn)行的基礎(chǔ)系統(tǒng)(稱為程序運(yùn)行系統(tǒng))的一部分。面向?qū)ο蟪绦蛴捎谠谶\(yùn) 行過程中頻繁地創(chuàng)建和釋放對象,會導(dǎo)致大量的存儲分配和存儲釋放的操作。 傳統(tǒng)的頁式虛擬存儲系統(tǒng)中以固定大小的存儲頁為管理和保護(hù)單位,但其對于 對象來說卻無能為力。這是因?yàn)槊嫦驅(qū)ο蟪绦蛟谶\(yùn)行時(shí)生成的對象大小不一, 且與這些存儲頁相比,對象要小得多;另外對象的數(shù)量眾多,而且都是在程序 運(yùn)行的過程中不斷地被創(chuàng)建和刪除的。由于每個(gè)對象在存儲空間中占用一段連 續(xù)的存儲區(qū)域,頻繁地創(chuàng)建和刪除較小的對象會在動態(tài)存儲空間產(chǎn)生大量的內(nèi) 存碎片,進(jìn)而導(dǎo)致存儲利用率下降。為提高軟件運(yùn)行效率,動態(tài)存儲管理是許 多軟件系統(tǒng)的重要組成部分。許多大型的應(yīng)用系統(tǒng)中采用了專門的動態(tài)存儲管 理算法, 一方面是為了提高動態(tài)存儲管理的效率(時(shí)間和空間),另一方面是為 了實(shí)現(xiàn)無用存儲單元的自動回收。目前主要有兩種動態(tài)存儲管理系統(tǒng), 一種是基于軟件的存儲管理,另外一 種是基于硬件的動態(tài)存儲管理。軟件方式易于實(shí)現(xiàn),但是會導(dǎo)致應(yīng)用程序性能 下降,響應(yīng)遲緩,導(dǎo)致存儲分配和釋放所耗時(shí)間的不確定性,并在運(yùn)行時(shí)占用 大量的系統(tǒng)資源;而基于硬件的動態(tài)存儲裝置能夠提供存儲管理的確定性,可 以在常量時(shí)間內(nèi)完成對象創(chuàng)建和對象釋放操作。目前不管是軟件管理方式還是 硬件管理方式,在回收空閑存儲空間時(shí)都會導(dǎo)致應(yīng)用程序長時(shí)間的停頓,即應(yīng) 用程序只有等存儲壓縮工作完成以后才能繼續(xù)運(yùn)行?,F(xiàn)有存儲系統(tǒng)的這一特點(diǎn) 不僅降低了應(yīng)用程序的性能,并會導(dǎo)致系統(tǒng)無法在規(guī)定的時(shí)間內(nèi)對外部系統(tǒng)作 出響應(yīng),這一點(diǎn)對于實(shí)時(shí)性要求較高的系統(tǒng)來說也是不可接受的,基于此我們 提出一種硬件輔助的對象數(shù)據(jù)存儲管理的裝置和方法。發(fā)明內(nèi)容本發(fā)明提供一種對象數(shù)據(jù)存儲管理裝置,包括接口部件,用于響應(yīng)外部 請求;存儲管理部件,完成對象創(chuàng)建和對象刪除;存儲壓縮部件,用于壓縮并 回收無用的存儲空間;多端口存儲控制器,用于為對象數(shù)據(jù)訪問和存儲壓縮提 供存儲訪問的通道;存儲體,用于存儲對象信息和數(shù)據(jù)。所述接口部件接收到的請求分別為創(chuàng)建對象請求、刪除對象請求和讀寫對 象數(shù)據(jù)請求,其中創(chuàng)建對象請求和刪除對象請求被直接發(fā)送給存儲管理部件處 理,讀寫對象數(shù)據(jù)的請求由接口部件處理完成。所述接口部件按照先來先服務(wù)的原則處理外來請求。所述存儲管理部件觸發(fā)存儲壓縮部件進(jìn)行存儲壓縮操作,存儲壓縮部件壓 縮存儲空間完成后通知存儲管理部件。所述存儲體構(gòu)成的存儲空間被劃分為兩部分,分別為對象表和對象數(shù)據(jù)區(qū)。 對象表用于保存已創(chuàng)建對象的存儲地址,大小和狀態(tài)信息;對象數(shù)據(jù)區(qū)用于保 存實(shí)際的對象數(shù)據(jù)。所述的對象表組織為兩個(gè)鏈表,分別為使用鏈表和空閑鏈表,使用鏈表將 所有已經(jīng)使用的對象表記錄按照對象創(chuàng)建的順序串聯(lián)起來;空閑鏈表將所有沒 有使用的對象表記錄串聯(lián)起來。其中使用鏈表尾和空閑鏈表頭由存儲管理部件 維護(hù),使用鏈表頭和空閑鏈表尾由存儲壓縮部件維護(hù)。所述對象數(shù)據(jù)區(qū)進(jìn)一步被劃分為A半?yún)^(qū)和B半?yún)^(qū)兩個(gè)半?yún)^(qū)。存儲管理部件 在半?yún)^(qū)內(nèi)按照一定的方向?yàn)樾聦ο蠓峙浯鎯臻g,當(dāng)該半?yún)^(qū)空間耗盡時(shí),存儲 管理器立即切換到另一個(gè)半?yún)^(qū)創(chuàng)建對象,同時(shí)存儲壓縮部件將已經(jīng)耗盡的半?yún)^(qū) 內(nèi)的存活對象移動到該半?yún)^(qū)的一側(cè),使得存活對象集中緊密存放,已經(jīng)被刪除 的對象占用的存儲空間在移動的過程中自動被回收,消除了存儲碎片的存在。所述對象表記錄中的狀態(tài)信息中至少包括兩個(gè)標(biāo)志位半?yún)^(qū)標(biāo)志位和對象 刪除位。半?yún)^(qū)標(biāo)志位用來表示對象駐留在哪個(gè)半?yún)^(qū)(A半?yún)^(qū)或者B半?yún)^(qū)),對象 刪除位用來表示對應(yīng)的對象是否已經(jīng)被刪除。所述存儲管理部件接收到接口部件發(fā)出的創(chuàng)建對象請求時(shí),首先根據(jù)要創(chuàng) 建的對象的大小檢查當(dāng)前分配對象的半?yún)^(qū)是否有足夠的空閑空間,如果沒有則 觸發(fā)存儲壓縮部件對當(dāng)前半?yún)^(qū)進(jìn)行壓縮,并切換到另一個(gè)半?yún)^(qū)為對象分配空間, 如果當(dāng)前的半?yún)^(qū)有足夠的空閑空間,則為該對象分配空間,并從空閑鏈表頭獲得一個(gè)空閑對象表記錄,寫入對象的大小,半?yún)^(qū)標(biāo)志位和刪除標(biāo)志位,地址信 息,最后將該記錄從空閑鏈表中刪除并插入到使用鏈表的尾部。處理完成后存 儲管理部件將該對象表記錄在對象表中的索引作為對象的唯一標(biāo)識返回給接口 部件,完成對象創(chuàng)建的操作。所述存儲管理部件接收到來自接口部件的釋放對象請求時(shí),根據(jù)對象的唯 一標(biāo)識訪問對象表并設(shè)置對象刪除標(biāo)志位。所述的創(chuàng)建對象的操作和刪除對象的操作可以在常量時(shí)間內(nèi)完成。 所述存儲壓縮部件接收到存儲管理部件發(fā)出的壓縮半?yún)^(qū)請求時(shí),首先獲取 使用鏈表頭,保存當(dāng)前的使用鏈表結(jié)束位置,并初始化半?yún)^(qū)新的空閑空間開始 地址為半?yún)^(qū)起始地址;接著按照順序處理使用鏈表中的每個(gè)節(jié)點(diǎn)直到到達(dá)開始 時(shí)保存的使用鏈表結(jié)束位置。對于每一個(gè)節(jié)點(diǎn),首先檢查其對應(yīng)的對象是不是 位于被壓縮的半?yún)^(qū)內(nèi),然后查看對象是否已經(jīng)被刪除,如果已經(jīng)刪除,則將該節(jié)點(diǎn)的對象表記錄從使用鏈表中刪除,并插入到空閑鏈表的尾部;否則移動該對象到半?yún)^(qū)的一側(cè),使得沒有刪除的對象緊密排列,以回收巳經(jīng)被刪除的對象 占用的空間。當(dāng)壓縮完成時(shí),存儲壓縮部件通知存儲管理部件,并將半?yún)^(qū)新的 空閑空間開始地址傳遞給存儲管理部件。所述接口部件在存儲壓縮部件壓縮某個(gè)半?yún)^(qū)的過程中仍然可以接受來自外 部的請求,即壓縮存儲空間的操作可以與讀寫對象數(shù)據(jù)的操作并行進(jìn)行,存儲管理部件創(chuàng)建對象的操作可以與存儲壓縮部件壓縮半?yún)^(qū)的操作并行進(jìn)行;存儲 管理部件刪除對象的操作與存儲壓縮部件壓縮半?yún)^(qū)的操作也可以并行進(jìn)行。為達(dá)到上述目的,本發(fā)明的實(shí)施例采用如下技術(shù)方案所述接口部件向外連接至外部存儲總線,向內(nèi)連接至多端口存儲控制器和存儲管理部件。接口部 件可以接受對象創(chuàng)建、對象刪除和對象數(shù)據(jù)訪問請求,并將對象創(chuàng)建和對象刪 除請求轉(zhuǎn)發(fā)給存儲管理部件完成。所述接口部件通過控制線和數(shù)據(jù)線連接至存 儲管理部件,并通過地址總線和數(shù)據(jù)總線直接連接到多端口存儲控制器,所述 存儲管理部件和存儲壓縮部件使用地址總線和數(shù)據(jù)總線連接至多端口存儲器。本發(fā)明的有益效果是采用所述的動態(tài)存儲管理方法,有效地節(jié)省了系統(tǒng) 存儲空間,提高了對象創(chuàng)建和刪除的速度,實(shí)現(xiàn)了存儲壓縮和存儲訪問的并行 進(jìn)行,提高了對象創(chuàng)建和刪除的可預(yù)測性。
圖1為本發(fā)明動態(tài)存儲管理裝置實(shí)施例的示意圖; 圖2為本發(fā)明動態(tài)存儲管理方法的存儲空間劃分示意圖; 圖3為本發(fā)明動態(tài)存儲管理方法的對象表組織示意圖; 圖4為本發(fā)明動態(tài)存儲管理方法的創(chuàng)建對象流程圖; 圖5為本發(fā)明動態(tài)存儲管理方法的存儲壓縮流程圖。
具體實(shí)施方式
下面結(jié)合附圖和具體實(shí)施方式
對本發(fā)明作進(jìn)一步詳細(xì)描述。本發(fā)明不僅限 于以下實(shí)施例,凡是利用本發(fā)明的設(shè)計(jì)思路,做一些簡單變化的設(shè)計(jì)都應(yīng)進(jìn)入 本發(fā)明的保護(hù)范圍之內(nèi)。在圖1中,接口部件根據(jù)來自外部請求信號的類型進(jìn)行不同的處理,所述 請求信號分為對象創(chuàng)建請求、對象釋放請求和對象數(shù)據(jù)讀寫請求。接口部件將 對象創(chuàng)建請求和對象釋放請求轉(zhuǎn)發(fā)給存儲管理部件進(jìn)行處理,而對象數(shù)據(jù)讀寫 請求由接口部件通過多端口存儲控制器讀寫存儲體完成。存儲管理部件完成對 象創(chuàng)建任務(wù)后返回一個(gè)對象唯一標(biāo)識給接口部件,接口部件將該對象標(biāo)識返回 給外部請求源。接口部件按照先來先服務(wù)的順序處理來自外部的請求,即只有 當(dāng)前的一個(gè)請求處理完成后才能處理下一個(gè)請求。所述多端口存儲器控制器可 以是兩端口存儲器控制器,三端口存儲器控制器,存儲體個(gè)數(shù)根據(jù)數(shù)據(jù)通道的 寬度決定。本發(fā)明對象數(shù)據(jù)管理裝置的實(shí)施例可以利用FPGA (現(xiàn)場可編程門陣列)實(shí) 現(xiàn),也可以在其它的處理器芯片或者其它ASIC芯片(專用集成電路)內(nèi)實(shí)現(xiàn)。 本發(fā)明動態(tài)存儲管理裝置的實(shí)施例可以用在很多存儲器件的管理中,所述例如 SRAM、 DRAM或FLASH (閃存),也可以用在專門的存儲芯片的管理中,還可以用 在FPAG、 ASIC等的內(nèi)部存儲的管理中。由多個(gè)存儲體構(gòu)成的存儲空間被劃分為兩部分,如圖2所示,分別是對象 表和對象數(shù)據(jù)區(qū)。所述對象表中的記錄用來存放對象的大小,狀態(tài)信息,對象 在對象數(shù)據(jù)區(qū)的地址,及下一個(gè)記錄指針;所述對象數(shù)據(jù)區(qū)用來存放對象的實(shí) 際數(shù)據(jù),對象數(shù)據(jù)區(qū)被進(jìn)一步劃分為A半?yún)^(qū)和B半?yún)^(qū)。所述對象表記錄中的狀 態(tài)信息中至少包括兩個(gè)標(biāo)志位半?yún)^(qū)標(biāo)志位和對象刪除位。半?yún)^(qū)標(biāo)志位用來表示對象在那個(gè)半?yún)^(qū)(A半?yún)^(qū)或者B半?yún)^(qū)),對象刪除位用來表示對象是否己經(jīng)被 刪除。A半?yún)^(qū)從左向右分配對象,并從右向左移動對象;B半?yún)^(qū)從右向左分配對 象,并從左向右移動對象。所述移動對象的過程就是壓縮存儲空間,回收無用 存儲空間的過程。存儲管理部件創(chuàng)建對象的操作可以與存儲壓縮部件壓縮半?yún)^(qū) 的操作并行進(jìn)行;接口部件訪問對象數(shù)據(jù)的操作與存儲壓縮部件壓縮半?yún)^(qū)的操作也可以并行進(jìn)行。如圖3所示,為實(shí)現(xiàn)對空閑對象表記錄的快速查找,對象表記錄用兩個(gè)鏈 表組織,分別為使用鏈表和空閑鏈表。所述使用鏈表將所有已經(jīng)使用的對象表 記錄按照對象創(chuàng)建的順序?qū)⑦@些記錄串聯(lián)起來,對象創(chuàng)建的順序也就是對象在 半?yún)^(qū)內(nèi)排列存放的順序;所述空閑鏈表將所有沒有使用的對象表記錄串聯(lián)起來。其中使用鏈表的尾和空閑鏈表的頭由存儲管理部件維護(hù),使用鏈表頭和空閑鏈 表尾由存儲壓縮部件維護(hù)。圖4給出了存儲管理部件創(chuàng)建對象的流程圖。當(dāng)存儲管理部件接收到接口 部件發(fā)出的創(chuàng)建對象請求時(shí),根據(jù)要創(chuàng)建的對象的大小檢查當(dāng)前分配對象的半 區(qū)是否有足夠的空閑空間,如果沒有則觸發(fā)存儲壓縮部件對當(dāng)前半?yún)^(qū)進(jìn)行壓縮, 并切換到另一個(gè)半?yún)^(qū)為對象分配空間,如果當(dāng)前的半?yún)^(qū)有足夠的空閑空間,則 為該對象分配空間,從空閑鏈表頭獲得一個(gè)空閑對象表記錄,并寫入對象的大 小,半?yún)^(qū)標(biāo)志位和刪除標(biāo)志位,地址信息,最后將該記錄從空閑鏈表中刪除并 插入到使用鏈表的尾部。處理完成后存儲管理部件將該對象表記錄在對象表中 的索引作為對象的唯一標(biāo)識返回給接口部件,完成對象創(chuàng)建的工作。在實(shí)際的 運(yùn)行過程中有可能會出現(xiàn)一種極端情況,比如當(dāng)A半?yún)^(qū)耗盡時(shí),存儲管理部件 立即切換到B半?yún)^(qū)創(chuàng)建對象,同時(shí)存儲壓縮部件開始對A半?yún)^(qū)進(jìn)行壓縮,但是 當(dāng)B空間也耗盡時(shí),A半?yún)^(qū)的存儲壓縮操作還沒有完成,這時(shí)存儲管理部件就需 要等待A半?yún)^(qū)的存儲壓縮操作完成后才能繼續(xù)在A半?yún)^(qū)創(chuàng)建對象。但是實(shí)際測 試的結(jié)果表明,這種情況出現(xiàn)的概率非常小,亦即一個(gè)半?yún)^(qū)的存儲壓縮操作由 于比較簡單,總是能在另一個(gè)半?yún)^(qū)耗盡之前完成,這就保證了存儲壓縮操作和 創(chuàng)建對象的操作可以并行進(jìn)行。存儲管理部件刪除對象的步驟比較簡單,存儲管理部件接收到來自接口部 件的釋放對象請求時(shí),根據(jù)對象的唯一標(biāo)識訪問對象表并設(shè)置對象刪除標(biāo)志位 即可。圖5給出了存儲壓縮部件壓縮半?yún)^(qū)的流程圖。當(dāng)存儲壓縮部件接收到存儲 管理部件發(fā)出的壓縮半?yún)^(qū)請求時(shí),首先需要獲取使用鏈表頭,保存當(dāng)前的使用 鏈表結(jié)束位置,以及初始化半?yún)^(qū)新的空閑空間開始地址;接著按照順序處理使 用鏈表中的每個(gè)節(jié)點(diǎn)直到到達(dá)開始時(shí)保存的使用鏈表結(jié)束位置。對于每一個(gè)節(jié) 點(diǎn),首先檢查其對應(yīng)的對象是不是位于被壓縮的半?yún)^(qū)內(nèi),然后查看對象是否已 經(jīng)被刪除,如果已經(jīng)刪除,則將該節(jié)點(diǎn)的對象表記錄從使用鏈表屮刪除,并插 入到空閑鏈表的尾部;否則移動該對象到半?yún)^(qū)的一側(cè),使得沒有刪除的對象緊 密排列,以回收己經(jīng)被刪除的對象占用的空間。當(dāng)壓縮完成時(shí),存儲壓縮部件 通知存儲管理部件,并將半?yún)^(qū)新的空閑空間開始地址傳遞給存儲管理部件。在存儲壓縮的過程中,接口部件仍然可以接受來自外部總線的請求,并通 過多端口存儲控制器完成對象數(shù)據(jù)的存取,從而實(shí)現(xiàn)了對象數(shù)據(jù)訪問與存儲空間壓縮的并行工作。
權(quán)利要求
1.一種對象數(shù)據(jù)存儲管理裝置,其特征在于該裝置包括接口部件,用于響應(yīng)外部請求;存儲管理部件,完成對象創(chuàng)建和對象刪除;存儲壓縮部件,用于壓縮并回收無用的存儲空間;多端口存儲控制器,用于為對象數(shù)據(jù)訪問和存儲壓縮提供存儲訪問的通道;存儲體,用于存儲對象信息和數(shù)據(jù)。
2. 根據(jù)權(quán)利要求l所述的對象數(shù)據(jù)存儲管理裝置,其特征在于所述接口 部件接收到的請求分別為創(chuàng)建對象請求、刪除對象請求和讀寫對象數(shù)據(jù)請求, 其中創(chuàng)建對象請求和刪除對象請求被直接發(fā)送給存儲管理部件處理,讀寫對象 數(shù)據(jù)的請求由接口部件處理完成;所述接口部件按照先來先服務(wù)的原則處理外 來請求。
3. 根據(jù)權(quán)利要求l所述的對象數(shù)據(jù)存儲管理裝置,其特征在于所述存儲 體構(gòu)成的存儲空間被劃分為兩部分,分別為對象表和對象數(shù)據(jù)區(qū);對象表用于 保存已創(chuàng)建對象的存儲地址,大小和狀態(tài)信息;對象數(shù)據(jù)區(qū)用于保存實(shí)際的對 象數(shù)據(jù);對象表組織為兩個(gè)鏈表,分別為使用鏈表和空閑鏈表,使用鏈表將所 有已經(jīng)使用的對象表記錄按照對象創(chuàng)建的順序串聯(lián)起來;空閑鏈表將所有沒有 使用的對象表記錄串聯(lián)起來;其中使用鏈表尾和空閑鏈表頭由存儲管理部件維 護(hù),使用鏈表頭和空閑鏈表尾由存儲壓縮部件維護(hù)。
4. 根據(jù)權(quán)利要求3所述的對象數(shù)據(jù)存儲管理裝置,其特征在于所述對象 數(shù)據(jù)區(qū)進(jìn)一步被劃分為A半?yún)^(qū)和B半?yún)^(qū)兩個(gè)半?yún)^(qū);存儲管理部件在半?yún)^(qū)內(nèi)按照 一定的方向?yàn)樾聦ο蠓峙浯鎯臻g,當(dāng)該半?yún)^(qū)空間耗盡時(shí),存儲管理器立即切 換到另一個(gè)半?yún)^(qū)創(chuàng)建對象,同時(shí)存儲壓縮部件將已經(jīng)耗盡的半?yún)^(qū)內(nèi)的存活對象 移動到該半?yún)^(qū)的一側(cè),使得存活對象集中緊密存放,已經(jīng)被刪除的對象占用的 存儲空間在移動的過程中自動被冋收,消除了存儲碎片的存在;對象表記錄中 的狀態(tài)信息中至少包括兩個(gè)標(biāo)志位半?yún)^(qū)標(biāo)志位和對象刪除位;半?yún)^(qū)標(biāo)志位用 來表示對象駐留在哪個(gè)半?yún)^(qū)(A半?yún)^(qū)或者B半?yún)^(qū)),對象刪除位用來表示對應(yīng)的 對象是否已經(jīng)被刪除。
5. —種對象數(shù)據(jù)存儲管理方法,其特征在于,所述方法包括 存儲管理部件創(chuàng)建對象的步驟;存儲管理部件刪除對象的步驟; 存儲壓縮部件壓縮半?yún)^(qū)的步驟。
6. 根據(jù)權(quán)利要求5所述的對象數(shù)據(jù)存儲管理方法,其特征在于所述創(chuàng)建對象的步驟為存儲管理部件接收到接口部件發(fā)出的創(chuàng)建對象請求時(shí),首先根 據(jù)要創(chuàng)建的對象的大小檢査當(dāng)前分配對象的半?yún)^(qū)是否有足夠的空閑空間,如果 沒有則觸發(fā)存儲壓縮部件對當(dāng)前半?yún)^(qū)進(jìn)行壓縮,并切換到另一個(gè)半?yún)^(qū)為對象分 配空間,如果當(dāng)前的半?yún)^(qū)有足夠的空閑空間,則為該對象分配空間,并從空閑 鏈表頭獲得一個(gè)空閑對象表記錄,寫入對象的大小,半?yún)^(qū)標(biāo)志位和刪除標(biāo)志位, 地址信息,最后將該記錄從空閑鏈表中刪除并插入到使用鏈表的尾部;處理完 成后存儲管理部件將該對象表記錄在對象表中的索引作為對象的唯一標(biāo)識返回 給接口部件,完成對象創(chuàng)建的操作。
7. 根據(jù)權(quán)利要求5所述的對象數(shù)據(jù)存儲管理方法,其特征在于所述刪除 對象的步驟為存儲管理部件接收到來自接口部件的釋放對象請求時(shí),根據(jù)對 象的唯一標(biāo)識訪問對象表并設(shè)置對象刪除標(biāo)志位。
8. 根據(jù)權(quán)利要求5所述的對象數(shù)據(jù)存儲管理方法,其特征在于所述壓縮 半?yún)^(qū)的步驟為存儲壓縮部件接收到存儲管理部件發(fā)出的壓縮半?yún)^(qū)請求時(shí),首 先獲取使用鏈表頭,保存當(dāng)前的使用鏈表結(jié)束位置,并初始化半?yún)^(qū)新的空閑空 間開始地址為半?yún)^(qū)起始地址;接著按照順序處理使用鏈表中的每個(gè)節(jié)點(diǎn)直到到 達(dá)開始時(shí)保存的使用鏈表結(jié)束位置;對于每一個(gè)節(jié)點(diǎn),首先檢査其對應(yīng)的對象是不是位于被壓縮的半?yún)^(qū)內(nèi),然后查看對象是否已經(jīng)被刪除,如果已經(jīng)刪除,則將該節(jié)點(diǎn)的對象表記錄從使用鏈表中刪除,并插入到空閑鏈表的尾部;否則 移動該對象到半?yún)^(qū)的一側(cè),使得沒有刪除的對象緊密排列,以回收已經(jīng)被刪除 的對象占用的空間;當(dāng)壓縮完成時(shí),存儲壓縮部件通知存儲管理部件,并將半 區(qū)新的空閑空間指針傳遞給存儲管理部件。
9. 根據(jù)權(quán)利要求6、 7或8所述的對象數(shù)據(jù)存儲管理方法,其特征在于 所述接口部件在存儲壓縮部件壓縮某個(gè)半?yún)^(qū)的過程中仍然可以接受來自外部的 請求,即壓縮存儲空間的操作可以與讀寫對象數(shù)據(jù)的操作并行進(jìn)行,存儲管理 部件創(chuàng)建對象的操作可以與存儲壓縮部件壓縮半?yún)^(qū)的操作并行進(jìn)行;存儲管理 部件刪除對象的操作與存儲壓縮部件壓縮半?yún)^(qū)的操作也可以并行進(jìn)行。
全文摘要
本發(fā)明涉及一種對象數(shù)據(jù)存儲管理裝置和方法,特別涉及創(chuàng)建對象、刪除對象、對象數(shù)據(jù)訪問和動態(tài)存儲空間管理的裝置及方法。該裝置包括接口部件,用于響應(yīng)外部請求;存儲管理部件,完成對象創(chuàng)建和刪除;存儲壓縮部件,壓縮存儲空間;多端口存儲控制器,為對象數(shù)據(jù)訪問和存儲壓縮部件提供數(shù)據(jù)通道;存儲體,存儲對象信息和對象數(shù)據(jù)。對象數(shù)據(jù)存儲管理的方法包括為對象分配存儲空間;刪除不再使用對象;壓縮存儲空間以獲得更多的空閑存儲空間。本發(fā)明提供對對象數(shù)據(jù)存儲的硬件支持,實(shí)現(xiàn)了對象數(shù)據(jù)訪問和存儲壓縮并行運(yùn)行,達(dá)到提高面向?qū)ο蟪绦蜻\(yùn)行速度的目的,主要用于電子設(shè)備中數(shù)據(jù)存儲的管理。
文檔編號G06F12/02GK101271428SQ200810100858
公開日2008年9月24日 申請日期2008年2月25日 優(yōu)先權(quán)日2008年2月25日
發(fā)明者峰 石, 薛立成, 計(jì)衛(wèi)星 申請人:北京理工大學(xué)