專利名稱:儲存空間管理方法及系統(tǒng)以及計算機(jī)可讀取儲存介質(zhì)的制作方法
技術(shù)領(lǐng)域:
此發(fā)明是一種儲存空間管理技術(shù),特別是一種破碎空間重組(defragmentation)的儲存空間管理方法及系統(tǒng)。
背景技術(shù):
一個儲存空間歷經(jīng)過為數(shù)眾多的寫入、更新以及刪除操作后,通常存在許多微小、不連續(xù)以及無法使用的儲存區(qū)域。而此儲存空間破碎(storagefragmentation)情況會嚴(yán)重地降低儲存空間的可用性以及操作記錄或文件的效能。因此,需要一種儲存空間管理方法及系統(tǒng),用以有效地進(jìn)行破碎空間重組。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明的目的為提供一種儲存空間管理方法及系統(tǒng),用以有效地進(jìn)行破碎空間重組。
本發(fā)明實施例揭露一種儲存空間管理方法,用以管理包含多個區(qū)塊的儲存空間。此方法包含合并每一個區(qū)塊中的多個間斷且未被使用空間成為一個單一連續(xù)性的未被使用空間。其中,單一連續(xù)性的未被使用空間的地址區(qū)間不包含區(qū)塊的最小地址及最大地址。
于一些情況下,此方法可還包括將區(qū)塊中之一者所存在的記錄搬移至另一區(qū)塊中的未被使用空間,使得原來儲存此記錄的區(qū)塊變成為完整而未被使用的區(qū)塊。
于一些情況下,此方法可還包括決定每一個區(qū)塊的一個重整中點;合并位于每一個區(qū)塊中的重整中點左邊的記錄,形成由最左端開始的連續(xù)性左內(nèi)部區(qū)塊;以及合并位于每一個區(qū)塊中的重整中點右邊的記錄,形成由最右端開始的連續(xù)性右內(nèi)部區(qū)塊。此方法可還包括當(dāng)檢測到一個記錄所存在的地址區(qū)間包含重整中點時,使用其中之一合并策略來進(jìn)行合并不做任何判斷,直接將檢測到的記錄合并到連續(xù)性左內(nèi)部區(qū)塊之后;若檢測到的記錄中的位于重整中點左邊的長度,大于位于重整中點右邊的長度時,則將檢測到的記錄接續(xù)合并到連續(xù)性左內(nèi)部區(qū)塊之后,反之則將檢測到的記錄接續(xù)合并到連續(xù)性右內(nèi)部區(qū)塊之前;以及若位于重整中點左邊的未被使用空間長度,大于位于重整中點右邊的未被使用空間長度時,則將檢測到的記錄接續(xù)合并到連續(xù)性左內(nèi)部區(qū)塊之后,反之則將檢測到的記錄接續(xù)合并到連續(xù)性右內(nèi)部區(qū)塊之前。此方法可還包括由其中的區(qū)塊中的多個記錄中決定出一個記錄;由不包含選擇的記錄中的多個區(qū)塊中決定出一個區(qū)塊,其中決定的區(qū)塊中的未被使用空間長度大于或等于決定的記錄的長度;以及將決定的記錄移動到?jīng)Q定的區(qū)塊中的未被使用空間。此方法于移動決定的記錄步驟中,可還包括將決定的記錄接續(xù)合并至決定區(qū)塊中的連續(xù)性左內(nèi)部區(qū)塊之后,或接續(xù)合并至決定區(qū)塊中的連續(xù)性右內(nèi)部區(qū)塊之前。決定的記錄可為最靠近相應(yīng)的重整中點的記錄。
于一些情況下,此方法可還包括將區(qū)塊依據(jù)未被使用空間的長度由小到大排序;以及依據(jù)排序結(jié)果進(jìn)行相應(yīng)的區(qū)塊移動。
本發(fā)明實施例另揭露一種計算機(jī)可讀取儲存介質(zhì),儲存一個計算機(jī)程序,該計算機(jī)程序用以加載至一個處理單元中并且使得該處理單元執(zhí)行如上所述的儲存空間管理方法。
本發(fā)明實施例還揭露的一種儲存空間管理系統(tǒng),包含一個儲存空間以及一個處理單元。儲存空間包含多個區(qū)塊。處理單元耦接于儲存空間,用以合并每一個區(qū)塊中的多個間斷且未被使用空間成為單一連續(xù)性的未被使用空間。其中,單一連續(xù)性的未被使用空間的地址區(qū)間不包含區(qū)塊的最小地址及最大地址。
于一些情況下,處理單元可還包括將區(qū)塊中之一者所存在的記錄搬移至另一區(qū)塊中的未被使用空間,使得原來儲存此記錄的區(qū)塊變成為完整而未被使用的區(qū)塊。
于一些情況下,處理單元可還決定每一個區(qū)塊的一個重整中點;合并位于每一個區(qū)塊中的重整中點左邊的記錄,形成由最左端開始的連續(xù)性左內(nèi)部區(qū)塊;以及合并位于每一個區(qū)塊中的重整中點右邊的記錄,形成由最右端開始的連續(xù)性右內(nèi)部區(qū)塊。處理單元可更當(dāng)檢測到一個記錄所存在的地址區(qū)間包含重整中點時,使用其中之一合并策略來進(jìn)行合并不做任何判斷,直接將檢測到的記錄合并到連續(xù)性左內(nèi)部區(qū)塊之后;若檢測到的記錄中的位于重整中點左邊的長度,大于位于重整中點右邊的長度時,則將檢測到的記錄接續(xù)合并到連續(xù)性左內(nèi)部區(qū)塊之后,反之則將檢測到的記錄接續(xù)合并到連續(xù)性右內(nèi)部區(qū)塊之前;以及若位于重整中點左邊的未被使用空間長度,大于位于重整中點右邊的未被使用空間長度時,則將檢測到的記錄接續(xù)合并到連續(xù)性左內(nèi)部區(qū)塊之后,反之則將檢測到的記錄接續(xù)合并到連續(xù)性右內(nèi)部區(qū)塊之前。處理單元可更由其中的區(qū)塊中的多個記錄中決定出一個記錄;由不包含選擇的記錄中的多個區(qū)塊中決定出一個區(qū)塊,其中決定的區(qū)塊中的未被使用空間長度大于或等于決定的記錄的長度;以及將決定的記錄移動到?jīng)Q定的區(qū)塊中的未被使用空間。處理單元可還包括將決定的記錄接續(xù)合并至決定區(qū)塊中的連續(xù)性左內(nèi)部區(qū)塊之后,或接續(xù)合并至決定區(qū)塊中的連續(xù)性右內(nèi)部區(qū)塊之前。決定的記錄可為最靠近相應(yīng)的重整中點的記錄。
于一些情況下,處理單元可更將區(qū)塊依據(jù)未被使用空間的長度由小到大排序;以及依據(jù)排序結(jié)果進(jìn)行相應(yīng)的區(qū)塊移動。
位于第i個區(qū)塊的上述重整中點可表示為sx(i-1)+s/2,s代表每一上述區(qū)塊的長度。位于第i個區(qū)塊的重整中點左邊的范圍可表示為[sx(i-1),sx(i-1)+s/2],以及位于第i個區(qū)塊的重整中點右邊的范圍可表示為sx(i-1)+s/2,sxi]。
第1圖是表示依據(jù)本發(fā)明實施例的儲存空間管理系統(tǒng)的硬件架構(gòu)圖;第2圖是表示依據(jù)本發(fā)明實施例的區(qū)塊示意圖;第3、4a、4b圖是表示依據(jù)本發(fā)明實施例的破碎空間重組方法的方法流程圖;第5圖是表示依據(jù)本發(fā)明實施例的破碎空間重組的儲存介質(zhì)示意圖;第6圖是表示依據(jù)本發(fā)明實施例的初始儲存空間示意圖;第7圖是表示依據(jù)本發(fā)明實施例的消除區(qū)塊內(nèi)部破碎空間的儲存空間示意圖;第8a、8b、8c、8d、8e、8f圖是表示依據(jù)本發(fā)明實施例的消除跨區(qū)塊的破碎空間的記錄搬移示意圖。
標(biāo)號說明10~儲存空間管理系統(tǒng);11~處理單元;12~存儲器;13~儲存裝置;14~輸出裝置;15~輸入裝置;16~通訊裝置;17~總線;B~區(qū)塊;B[i]~第i個區(qū)塊;Bl~左內(nèi)部區(qū)塊;Br~右內(nèi)部區(qū)塊;pl~左距;pr~右距;sl~左內(nèi)部區(qū)塊長度;su~未被使用空間長度;sr~右內(nèi)部區(qū)塊長度;s~位組長度;S31、S33~流程步驟;S411、S413、...、S459、S461~流程步驟;50~儲存介質(zhì);520~破碎空間重組計算機(jī)程序;521~區(qū)塊內(nèi)部的破碎空間重組邏輯;522~將已配置區(qū)塊依據(jù)未被使用空間的長度于小到大排序邏輯;523~跨區(qū)塊的破碎空間重組邏輯;B1、B2、B3、B4~區(qū)塊;A.1、A.2、A.4、A.5、B.1、B.3、B.4、B.6、B.7、B.8、B.10~儲存記錄的空間;A.3、B.2、B.5、B.9、C.1、C.2、C.3、C.4、C.5、C.6、C.7、C.8~原來儲存記錄但已被之空間。
具體實施例方式
第1圖是表示依據(jù)本發(fā)明實施例的儲存空間管理系統(tǒng)10的硬件架構(gòu)圖。儲存空間管理系統(tǒng)10,包括處理單元11、存儲器12、儲存裝置13、輸出裝置14、輸入裝置15、通訊裝置16,并使用總線17將其連結(jié)在一起。本領(lǐng)域技術(shù)人員可將儲存空間管理系統(tǒng)10實施于各式各樣的計算機(jī)系統(tǒng)配置(configuration)上,例如,多處理器系統(tǒng)、以微處理器為基礎(chǔ)或可程序化的消費性電子產(chǎn)品(microprocessor-based or programmable consumerelectronics)、網(wǎng)絡(luò)計算機(jī)、迷你計算機(jī)、大型主機(jī)、筆記型計算機(jī)以及類似的設(shè)備。存儲器12包含只讀存儲器(read only memory;ROM)、閃存(flashmemory)以及/或動態(tài)存取存儲器(random access memory;RAM),提供儲存空間,用以儲存可供處理單元11執(zhí)行的程序模塊、數(shù)據(jù)、文件以及記錄。一般而言,程序模塊包含例行程序(routines)、程序(program)、對象(object)、組件(component)等,用以執(zhí)行儲存空間管理功能。本發(fā)明亦可以實施于分布式運算環(huán)境,其運算工作被一連結(jié)于通訊網(wǎng)路的遠(yuǎn)程處理設(shè)備所執(zhí)行。在分布式環(huán)境中,儲存空間管理的功能執(zhí)行,也許由本地以及多部遠(yuǎn)程計算機(jī)系統(tǒng)共同完成。儲存裝置13包含硬盤裝置、軟盤裝置、光盤裝置或隨身碟裝置,提供儲存空間,用以存取硬盤、軟盤、光盤、隨身碟中所儲存的程序模塊、數(shù)據(jù)、文件以及記錄。
通常,每一筆記錄為數(shù)據(jù)值(data values)或數(shù)據(jù)項(data items)的集合,其基本數(shù)據(jù)類型(primitive data types),如數(shù)值(numeric)、字符字符串(string of characters)、布爾值(boolean)等類型,可于特定軟件平臺的應(yīng)用程序接口(platform-specific application program interface,API)中定義。而一筆記錄的長度為可變長度。本發(fā)明實施例提出一種如下所示的雙向記錄文件組織(bidirectional record file organization,BRFO)方案,使得儲存空間包含數(shù)個區(qū)塊(block)。此儲存空間可存在于易失性儲存裝置,如動態(tài)存取存儲器(RAM)、緩沖器(buffer)等,或非易失性儲存裝置,如閃存(flash memory)、硬盤(hard disk)、軟盤(floppy disk)、可擦寫光盤(opticaldisk-RW)等。一個區(qū)塊為于實體數(shù)據(jù)儲存與存儲器間傳輸數(shù)據(jù)的基本單元。區(qū)塊長度大于記錄長度,每一個區(qū)塊可包含數(shù)筆記錄,且會以無跨區(qū)塊的方式(unspanned fashion)配置區(qū)塊給文件中的記錄。當(dāng)一筆記錄大于所有未被使用的儲存段落時,會配置出另一個區(qū)塊以儲存此記錄。所以,每一個區(qū)塊可包含一些未被使用的儲存段落,稱為內(nèi)部破碎段落(internalfragmentation)。第2圖是表示依據(jù)本發(fā)明實施例的區(qū)塊示意圖。一個區(qū)塊包含兩個內(nèi)部區(qū)塊(inner blocks),一個左區(qū)塊(left block)以及一個右區(qū)塊(right block)。為簡化說明,使用如下的數(shù)個標(biāo)號來描述本發(fā)明的實施例。一個區(qū)塊以B來表示。Bl與Br是分別表示一個左內(nèi)部區(qū)塊(left innerblock)與一個右內(nèi)部區(qū)塊(right inner block),pl為Bl的左距(left offset),而pr為Br的右距(right offset)。當(dāng)每一個區(qū)塊擁有s個連續(xù)的字節(jié)(byte)長度,Bl與Br的長度分別以sl與sr表示,且sl+sr≤s,使得區(qū)塊中的未被使用空間為su=s-(sl+sr)。此外,當(dāng)儲存空間包含n個區(qū)塊,使得整個空間擁有nxs字節(jié)的連續(xù)性儲存空間配置。每一個標(biāo)號之中括號(squarebracket)中所包含的數(shù)字,是代表其所在的區(qū)塊編號,例如,pr[7]代表于第7個區(qū)塊中的右內(nèi)部區(qū)塊的右距。
為了要重新組織未被使用的儲存段落,需要非周期性或周期性地執(zhí)行破碎空間重組程序。第3圖是表示依據(jù)本發(fā)明實施例的破碎空間重組方法的方法流程圖,此方法由處理單元11執(zhí)行,用以管理包含多個區(qū)塊的儲存空間。于步驟S31,合并每一個區(qū)塊中的多個間斷且未被使用空間成為單一連續(xù)性的未被使用空間。其中,單一連續(xù)性的未被使用空間的地址區(qū)間不包含區(qū)塊的最小地址及最大地址。于步驟S33,將區(qū)塊中之一者所存在的記錄搬移至另一區(qū)塊中的未被使用空間,使得原來儲存此記錄的區(qū)塊變成為一個完整而未被使用的區(qū)塊。
第4圖是表示依據(jù)本發(fā)明實施例的破碎空間重組方法的方法流程圖,此方法由處理單元11執(zhí)行。步驟S411至S421為區(qū)塊內(nèi)部的破碎空間重組程序(intra-block defragmentation procedure),用以合并每一個區(qū)塊中的間斷且未被使用空間成為單一的連續(xù)性空間,且此連續(xù)性空間位于區(qū)塊的中間區(qū)域,而非左邊或右邊區(qū)域。于步驟S411,由上而下(亦即為由低地址往高地址)選擇一個區(qū)塊。本領(lǐng)域技術(shù)人員皆知道此步驟亦可由高地址往低地址進(jìn)行選擇。于步驟S413,決定此區(qū)塊的重整中點(defragmentation separator)。其中,第i個區(qū)塊的重整中點位于距離sx(i-l)+s/2,而位于重整中點左邊的范圍為[sx(i-1),sx(i-1)+s/2],位于重整中點右邊的范圍為sx(i-1)+s/2,sxi]。于步驟S415,合并位于重整中點左邊的記錄,形成一個由區(qū)塊最左端(亦即為最低地址)開始的連續(xù)性左內(nèi)部區(qū)塊Bl。于步驟S417,合并位于重整中點右邊的記錄,形成一個由區(qū)塊最右端(亦即為最高地址)開始的連續(xù)性右內(nèi)部區(qū)塊Br。當(dāng)一筆記錄所存在的地址區(qū)間包含重整中點時,可還使用以下所述策略之一者進(jìn)行接續(xù)合并。(1)不做任何判斷,直接向左接續(xù)合并;(2)若此記錄位于重整中點左邊的長度,大于位于重整中點右邊的長度時,則向左接續(xù)合并,反之則向右接續(xù)合并;以及(3)若位于重整中點左邊的未被使用空間長度,大于位于重整中點右邊的未被使用空間長度時,則向左接續(xù)合并,反之則向右接續(xù)合并。本領(lǐng)域技術(shù)人員還可使用其它的策略來對以上情況做處理。于步驟S421,決定是否處理完所有區(qū)塊,是則進(jìn)行步驟S431的處理,否則進(jìn)行步驟S411的處理。
于步驟S431,將所有已配置區(qū)塊依據(jù)未被使用空間的長度于小到大排序,并可儲存此排序結(jié)果供后續(xù)步驟使用,或者依據(jù)排序結(jié)果進(jìn)行相應(yīng)的區(qū)塊移動。于此須注意的是,為節(jié)省處理的時間,亦可省略此步驟。
步驟S441至S461為跨區(qū)塊的破碎空間重組程序(inter-blockdefragmentation procedure),用以將低使用率的區(qū)塊中的記錄合并至高使用率的區(qū)塊中,致使釋放出更多的可用區(qū)塊,其中,釋放出的區(qū)塊中并不包含任何的記錄。于步驟S441,由下而上(亦即為由高地址往低地址)選擇下一個區(qū)塊做為第一區(qū)塊。本領(lǐng)域技術(shù)人員皆知道此步驟亦可為由低地址往高地址進(jìn)行選擇。于步驟S451,由內(nèi)而外(亦即為由最靠近重整中點往最離開重整中點)選擇區(qū)塊中的一個記錄。于此須注意的是,當(dāng)左內(nèi)部區(qū)塊與右內(nèi)部區(qū)塊中皆存在一筆記錄時,此步驟先選擇長度較小的記錄。于步驟S453,由上而下(亦即為由低地址往高地址)選擇下一個區(qū)塊做為第二區(qū)塊。本領(lǐng)域技術(shù)人員皆知道當(dāng)步驟S441為由低地址往高地址進(jìn)行選擇時,此步驟則改變?yōu)橛筛叩刂吠偷刂愤M(jìn)行選擇。于步驟S455,決定第一區(qū)塊與第二區(qū)塊是否為同一個區(qū)塊,是則結(jié)束整個破碎空間重組方法,否則進(jìn)行步驟S457的處理。于步驟S457,決定第二區(qū)塊中的可用空間長度是否大于或等于選擇的記錄長度,是則進(jìn)行步驟S459的處理,否則進(jìn)行步驟S453的處理。于步驟S459,將選擇的記錄由第一區(qū)塊搬移至第二區(qū)塊中的可用空間。于步驟S461,決定是否處理完第一區(qū)塊中的所有記錄,是則進(jìn)行步驟S441的處理,否則進(jìn)行步驟S451的處理。
再者,本發(fā)明提出一種儲存介質(zhì),用以儲存計算機(jī)程序,上述計算機(jī)程序用以實現(xiàn)破碎空間重組方法,此方法會執(zhí)行如上所述的步驟。第5圖系表示依據(jù)本發(fā)明實施例的破碎空間重組的儲存介質(zhì)示意圖。此儲存介質(zhì)50,用以儲存破碎空間重組計算機(jī)程序520。其計算機(jī)程序包含三個邏輯,分別為區(qū)塊內(nèi)部的破碎空間重組邏輯521、將已配置區(qū)塊依據(jù)未被使用空間的長度于小到大排序邏輯522以及跨區(qū)塊的破碎空間重組邏輯523。
以下更舉出一個實例來說明破碎空間重組方法的實際運作情形。第6圖是表示依據(jù)本發(fā)明實施例的初始儲存空間示意圖,包含四個已配置的區(qū)塊B1至B4,每一個區(qū)塊擁有150個連續(xù)的位組長度空間。于初始狀態(tài)下,區(qū)塊B1包含A.1、B.1與A.2的記錄,以及原來儲存但已被刪除的A.3、B.2與C.1記錄的未被使用儲存空間。區(qū)塊B2包含B.3、A.4與B.4的記錄,以及原來儲存但已被刪除的B.5與C.2記錄的未被使用儲存空間。區(qū)塊B3包含B.6、A.5與B.7的記錄,以及原來儲存但已被刪除的C.3、C.6、C.5與C.4記錄的未被使用儲存空間。區(qū)塊B4包含B.8與B.10的記錄,以及原來儲存但已被刪除的B.9、C.8與C.7記錄的未被使用儲存空間。參考第4圖,當(dāng)反復(fù)執(zhí)行步驟S411至S421的區(qū)塊內(nèi)部的破碎空間重組程序后,儲存空間如第7圖所示。第7圖是表示依據(jù)本發(fā)明實施例的消除區(qū)塊內(nèi)部破碎空間的儲存空間示意圖。其中,每一個區(qū)塊中的記錄都被集中至區(qū)塊的兩側(cè),并產(chǎn)生較大的未被使用的連續(xù)空間。為增進(jìn)重組空間的效率,忽略步驟S431的處理。接著,執(zhí)行步驟S451、S453、S455、S457與S459,將記錄B.10搬移至區(qū)塊B1中的未被使用空間,結(jié)果如8a圖所示。執(zhí)行步驟S451、S453、S455、S457與S459,將記錄B.8搬移至區(qū)塊B1中的未被使用空間,結(jié)果如8b圖所示。執(zhí)行步驟S451、S453、S455、S457與S459,將記錄A.5搬移至區(qū)塊B1中的未被使用空間,結(jié)果如8c圖所示。執(zhí)行步驟S451、S453、S455、S457與S459,將記錄B.7搬移至區(qū)塊B1中的未被使用空間,結(jié)果如8d圖所示。執(zhí)行步驟S451、S453、S455、S457與S459,將記錄B.6搬移至區(qū)塊B2中的未被使用空間,結(jié)果如8e圖所示。最后,由于沒有任何可搬移的記錄,所以,重組的結(jié)果如8f圖所示。
雖然本發(fā)明已以較佳實施例揭露如上,然其并非用以限定本發(fā)明,任何本領(lǐng)域技術(shù)人員,在不脫離本發(fā)明的精神和范圍內(nèi),當(dāng)可做些許更動與潤飾,因此本發(fā)明的保護(hù)范圍當(dāng)視所附的權(quán)利要求范圍所界定者為準(zhǔn)。
權(quán)利要求
1.一種儲存空間管理方法,用以管理儲存空間,上述儲存空間包含多個區(qū)塊,其方法包括合并每一上述區(qū)塊中的多個間斷且未被使用空間成為單一連續(xù)性的未被使用空間,其中,上述單一連續(xù)性的未被使用空間的地址區(qū)間不包含上述區(qū)塊的最小地址及最大地址。
2.根據(jù)權(quán)利要求1所述的儲存空間管理方法,還包括將上述區(qū)塊中之一者所存在的記錄搬移至另一區(qū)塊中的未被使用空間,使得原來儲存上述記錄的上述區(qū)塊變成為完整而未被使用的區(qū)塊。
3.根據(jù)權(quán)利要求1所述的儲存空間管理方法,還包括決定每一上述區(qū)塊的重整中點;合并位于每一上述區(qū)塊中的上述重整中點左邊的記錄,形成由最左端開始的連續(xù)性左內(nèi)部區(qū)塊;以及合并位于每一上述區(qū)塊中的上述重整中點右邊的記錄,形成由最右端開始的連續(xù)性右內(nèi)部區(qū)塊。
4.根據(jù)權(quán)利要求3所述的儲存空間管理方法,還包括當(dāng)檢測到記錄所存在的地址區(qū)間包含上述重整中點時,使用其中之一合并策略來進(jìn)行合并不做任何判斷,直接將上述檢測到的記錄合并到上述連續(xù)性左內(nèi)部區(qū)塊之后;若上述檢測到的記錄中的位于上述重整中點左邊的長度,大于位于上述重整中點右邊的長度時,則將上述檢測到的記錄接續(xù)合并到上述連續(xù)性左內(nèi)部區(qū)塊之后,反之則將上述檢測到的記錄接續(xù)合并到上述連續(xù)性右內(nèi)部區(qū)塊之前;以及若位于上述重整中點左邊的未被使用空間長度,大于位于上述重整中點右邊的未被使用空間長度時,則將上述檢測到的記錄接續(xù)合并到上述連續(xù)性左內(nèi)部區(qū)塊之后,反之則將上述檢測到的記錄接續(xù)合并到上述連續(xù)性右內(nèi)部區(qū)塊之前。
5.根據(jù)權(quán)利要求3所述的儲存空間管理方法,其中位于第i個區(qū)塊的上述重整中點表示為sx(i-1)+s/2,s代表每一上述區(qū)塊的長度,位于第i個區(qū)塊的上述重整中點左邊的范圍表示為 以及位于第i個區(qū)塊的上述重整中點右邊的范圍表示為
6.根據(jù)權(quán)利要求3所述的儲存空間管理方法,還包括由其中之一區(qū)塊中的多個記錄中決定出一記錄;由不包含上述選擇的記錄中的多個區(qū)塊中決定出一區(qū)塊,其中決定的上述區(qū)塊中的未被使用空間長度大于或等于上述決定的記錄的長度;以及將上述決定的記錄移動到上述決定的區(qū)塊中的未被使用空間。
7.根據(jù)權(quán)利要求6所述的儲存空間管理方法,于移動決定的記錄步驟中,還包括將上述決定的記錄接續(xù)合并至上述決定區(qū)塊中的上述連續(xù)性左內(nèi)部區(qū)塊之后,或接續(xù)合并至上述決定區(qū)塊中的上述連續(xù)性右內(nèi)部區(qū)塊之前。
8.根據(jù)權(quán)利要求6所述的儲存空間管理方法,其中決定的上述記錄為最靠近相應(yīng)的上述重整中點的記錄。
9.根據(jù)權(quán)利要求1所述的儲存空間管理方法,還包括將上述區(qū)塊依據(jù)未被使用空間的長度由小到大排序;以及依據(jù)排序結(jié)果進(jìn)行相應(yīng)的區(qū)塊移動。
10.一種計算機(jī)可讀取儲存介質(zhì),用以儲存計算機(jī)程序,該計算機(jī)程序用以加載至處理單元中并且使得該處理單元執(zhí)行儲存空間管理方法,用以管理儲存空間,上述儲存空間包含多個區(qū)塊,其方法包括合并每一上述區(qū)塊中的多個間斷且未被使用空間成為單一連續(xù)性的未被使用空間,其中,上述單一連續(xù)性的未被使用空間的地址區(qū)間不包含上述區(qū)塊的最小地址及最大地址。
11.一種儲存空間管理系統(tǒng),包括儲存空間,上述儲存空間包含多個區(qū)塊;以及處理單元,耦接于上述儲存空間,用以合并每一上述區(qū)塊中的多個間斷且未被使用空間成為單一連續(xù)性的未被使用空間,其中,上述單一連續(xù)性的未被使用空間的地址區(qū)間不包含上述區(qū)塊的最小地址及最大地址。
12.根據(jù)權(quán)利要求11所述的儲存空間管理系統(tǒng),其中上述處理單元還將上述區(qū)塊中之一者所存在的記錄搬移至另一區(qū)塊中的未被使用空間,使得原來儲存上述記錄的上述區(qū)塊變成為完整而未被使用的區(qū)塊。
13.根據(jù)權(quán)利要求11所述的儲存空間管理系統(tǒng),其中上述處理單元還決定每一上述區(qū)塊的重整中點,合并位于每一上述區(qū)塊中的上述重整中點左邊的記錄,形成由最左端開始的連續(xù)性左內(nèi)部區(qū)塊,以及合并位于每一上述區(qū)塊中的上述重整中點右邊的記錄,形成由最右端開始的連續(xù)性右內(nèi)部區(qū)塊。
14.根據(jù)權(quán)利要求13所述的儲存空間管理系統(tǒng),其中上述處理單元當(dāng)檢測到記錄所存在的地址區(qū)間包含上述重整中點時,使用其中之一合并策略來進(jìn)行合并不做任何判斷,直接將上述檢測到的記錄合并到上述連續(xù)性左內(nèi)部區(qū)塊之后;若上述檢測到的記錄中的位于上述重整中點左邊的長度,大于位于上述重整中點右邊的長度時,則將上述檢測到的記錄接續(xù)合并到上述連續(xù)性左內(nèi)部區(qū)塊之后,反之則將上述檢測到的記錄接續(xù)合并到上述連續(xù)性右內(nèi)部區(qū)塊之前;以及若位于上述重整中點左邊的未被使用空間長度,大于位于上述重整中點右邊的未被使用空間長度時,則將上述檢測到的記錄接續(xù)合并到上述連續(xù)性左內(nèi)部區(qū)塊之后,反之則將上述檢測到的記錄接續(xù)合并到上述連續(xù)性右內(nèi)部區(qū)塊之前。
15.根據(jù)權(quán)利要求13所述的儲存空間管理系統(tǒng),其中位于第i個區(qū)塊的上述重整中點表示為sx(i-1)+s/2,s代表每一上述區(qū)塊的長度,位于第i個區(qū)塊的上述重整中點左邊的范圍表示為 以及位于第i個區(qū)塊的上述重整中點右邊的范圍表示為
16.根據(jù)權(quán)利要求13所述的儲存空間管理系統(tǒng),其中上述處理單元還由其中之一區(qū)塊中的多個記錄中決定出一記錄,由不包含上述選擇的記錄中的多個區(qū)塊中決定出一區(qū)塊,以及將上述決定的記錄移動到上述決定的區(qū)塊中的未被使用空間,其中,決定的上述區(qū)塊中的未被使用空間長度大于或等于上述決定的記錄的長度。
17.根據(jù)權(quán)利要求16所述的儲存空間管理系統(tǒng),其中上述處理單元還將上述決定的記錄接續(xù)合并至上述決定區(qū)塊中的上述連續(xù)性左內(nèi)部區(qū)塊之后,或接續(xù)合并至上述決定區(qū)塊中的上述連續(xù)性右內(nèi)部區(qū)塊之前。
18.根據(jù)權(quán)利要求16所述的儲存空間管理系統(tǒng),其中決定的上述記錄為最靠近相應(yīng)的上述重整中點的記錄。
19.根據(jù)權(quán)利要求11所述的儲存空間管理系統(tǒng),上述處理單元還將上述區(qū)塊依據(jù)未被使用空間的長度由小到大排序,以及依據(jù)排序結(jié)果進(jìn)行相應(yīng)的區(qū)塊移動。
20.根據(jù)權(quán)利要求11所述的儲存空間管理系統(tǒng),其中上述儲存空間存在于易失性儲存裝置或非易失性儲存裝置中。
全文摘要
一種儲存空間管理方法,用以管理包含多個區(qū)塊的儲存空間。此方法包含合并每一區(qū)塊中的多個間斷且未被使用空間成為一個單一連續(xù)性的未被使用空間。其中,單一連續(xù)性的未被使用空間的地址區(qū)間不包含區(qū)塊的最小地址及最大地址。
文檔編號G06F12/02GK1924829SQ20051009769
公開日2007年3月7日 申請日期2005年8月31日 優(yōu)先權(quán)日2005年8月31日
發(fā)明者胡志麟 申請人:明基電通股份有限公司