本發(fā)明涉及一種VMware(威睿,是一種虛擬機(jī)軟件)虛擬化存儲(chǔ)分配方法及系統(tǒng),特別是涉及一種基于循環(huán)隊(duì)列算法的VMware虛擬化存儲(chǔ)分配方法及系統(tǒng)。
背景技術(shù):
虛擬化技術(shù)從廣義上來說,就是通過映射或抽象的方式屏蔽物理設(shè)備復(fù)雜性,增加一個(gè)管理層面,激活一種資源并使之更易于透明控制。它可以有效簡(jiǎn)化基礎(chǔ)設(shè)施的管理,增加IT資源的利用率和能力,比如服務(wù)器、網(wǎng)絡(luò)或存儲(chǔ)。
存儲(chǔ)虛擬化是一種貫穿于整個(gè)IT環(huán)境、用于簡(jiǎn)化本來可能會(huì)相對(duì)復(fù)雜的底層基礎(chǔ)架構(gòu)的技術(shù)。存儲(chǔ)虛擬化的思想是將資源的邏輯映像與物理存儲(chǔ)分開,從而為系統(tǒng)和管理員提供一幅簡(jiǎn)化、無縫的資源虛擬視圖。
對(duì)于用戶來說,虛擬化的存儲(chǔ)資源就像是一個(gè)巨大的“存儲(chǔ)池”,用戶不會(huì)看到具體的磁盤或磁帶,也不必關(guān)心自己的數(shù)據(jù)經(jīng)過哪一條路徑通往哪一個(gè)具體的存儲(chǔ)設(shè)備。
從管理的角度來看,虛擬存儲(chǔ)池是采取集中化的管理,并根據(jù)具體的需求把存儲(chǔ)資源動(dòng)態(tài)地分配給各個(gè)應(yīng)用。值得特別指出的是,利用虛擬化技術(shù),可以用磁盤陣列模擬磁帶庫(kù),為應(yīng)用提供速度像磁盤一樣快、容量卻像磁帶庫(kù)一樣大的存儲(chǔ)資源,這就是當(dāng)今應(yīng)用越來越廣泛的虛擬磁帶庫(kù)(VTL,Virtual Tape Library),在當(dāng)今企業(yè)存儲(chǔ)系統(tǒng)中扮演著越來越重要的角色。
通過將一個(gè)或多個(gè)目標(biāo)(Target)服務(wù)或功能與其它附加的功能集成,統(tǒng)一提供有用的全面功能服務(wù)。典型的虛擬化包括如下一些情況:屏蔽系統(tǒng)的復(fù)雜性,增加或集成新的功能,仿真、整合或分解現(xiàn)有的服務(wù)功能等。虛擬化是作用在一個(gè)或者多個(gè)實(shí)體上的,而這些實(shí)體則是用來提供存儲(chǔ)資源及服務(wù)的。
隨著大數(shù)據(jù)和云計(jì)算的迅速發(fā)展,越來越多的企業(yè)和公司開始購(gòu)買服務(wù)器,搭建符合自身需求的VMware存儲(chǔ)虛擬化集群環(huán)境,從而滿足自身業(yè)務(wù)需求的發(fā)展。只有擁有一個(gè)良好的VMware存儲(chǔ)虛擬化集群,才能夠應(yīng)對(duì)不斷增長(zhǎng)的數(shù)據(jù)量和要求越來越高的計(jì)算性能。
在VMware存儲(chǔ)虛擬化集群環(huán)境搭建過程中,伴隨數(shù)據(jù)存儲(chǔ)量的不斷增大,服務(wù)器存儲(chǔ)資源的不足現(xiàn)象會(huì)頻繁發(fā)生。針對(duì)這一問題,企業(yè)的解決方法一般有兩種:第一,刪除無用數(shù)據(jù)或陳舊數(shù)據(jù),進(jìn)行數(shù)據(jù)覆蓋;第二,購(gòu)買服務(wù)器存儲(chǔ)資源,擴(kuò)大存儲(chǔ)空間。但是對(duì)于數(shù)據(jù)刪除和添加服務(wù)器存儲(chǔ)資源的操作,往往都是采用人工操作的方式進(jìn)行處理,即手動(dòng)進(jìn)行數(shù)據(jù)刪除和數(shù)據(jù)遷移等操作。不僅浪費(fèi)大量人力成本,而且服務(wù)器存儲(chǔ)資源的利用率也不高。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明要解決的技術(shù)問題是為了克服現(xiàn)有技術(shù)中數(shù)據(jù)存儲(chǔ)量不斷增大、服務(wù)器存儲(chǔ)資源不足時(shí)往往采用人工操作方式處理、導(dǎo)致人力成本高及存儲(chǔ)資源利用率低的缺陷,提供一種基于循環(huán)隊(duì)列算法的VMware虛擬化存儲(chǔ)分配方法及系統(tǒng),對(duì)集群存儲(chǔ)資源進(jìn)行序列化處理,組合成一條存儲(chǔ)隊(duì)列,從而實(shí)現(xiàn)集群存儲(chǔ)資源自動(dòng)化管理機(jī)制,不僅系統(tǒng)存儲(chǔ)資源的利用率能夠得到很大程度提升和管理復(fù)雜度在很大程度上得到降低,而且還可以節(jié)省大量的人力資源成本。
本發(fā)明是通過下述技術(shù)方案來解決上述技術(shù)問題的:
本發(fā)明提供一種VMware虛擬化存儲(chǔ)分配方法,其特點(diǎn)在于,其包括以下步驟:
S1、構(gòu)建SAN應(yīng)用的VMware存儲(chǔ)虛擬化的存儲(chǔ)管理平臺(tái),將集群中的服務(wù)器、存儲(chǔ)資源和服務(wù)進(jìn)行虛擬化整合處理;
S2、在該存儲(chǔ)管理平臺(tái)的集群存儲(chǔ)資源虛擬化管理界面中,將存儲(chǔ)空間資源按照物理塊獨(dú)立性劃分為多個(gè)存儲(chǔ)塊,并對(duì)該些存儲(chǔ)塊進(jìn)行序列化處理;
S3、對(duì)序列化存儲(chǔ)空間建立循環(huán)存儲(chǔ)隊(duì)列,其中,Head指向該循環(huán)存儲(chǔ)隊(duì)列的隊(duì)首的存儲(chǔ)塊中第一個(gè)數(shù)據(jù)的位置,Rear指向該循環(huán)存儲(chǔ)隊(duì)列的隊(duì)尾的存儲(chǔ)塊中最后一個(gè)數(shù)據(jù)的位置,該循環(huán)存儲(chǔ)隊(duì)列的總長(zhǎng)度len等于該些存儲(chǔ)塊的總數(shù);
S4、基于循環(huán)隊(duì)列算法對(duì)序列化存儲(chǔ)空間執(zhí)行數(shù)據(jù)操作,該數(shù)據(jù)操作包括導(dǎo)入數(shù)據(jù)、釋放數(shù)據(jù)、增加存儲(chǔ)空間和刪除存儲(chǔ)空間。
較佳地,步驟S4中的導(dǎo)入數(shù)據(jù)包括以下步驟:
當(dāng)有數(shù)據(jù)需要導(dǎo)入時(shí),判斷是否(Rear+1)%len=Head,若為true則顯示一存儲(chǔ)塊的存儲(chǔ)空間不足預(yù)警信息,由用戶確定是否刪除隊(duì)首數(shù)據(jù)或新增存儲(chǔ)空間以解除警報(bào),否則為false則將數(shù)據(jù)保存到Rear指針指向的存儲(chǔ)塊的剩余空間,若Rear所指向的存儲(chǔ)塊的剩余空間不足則執(zhí)行Rear->Rear.next操作,并將剩余數(shù)據(jù)導(dǎo)入到現(xiàn)在Rear所指向的存儲(chǔ)塊;
其中,對(duì)于刪除隊(duì)首數(shù)據(jù)操作,若隊(duì)首數(shù)據(jù)全部刪除,則head->head.next。
較佳地,步驟S4中的釋放數(shù)據(jù)包括釋放以隊(duì)首數(shù)據(jù)開頭的連續(xù)數(shù)據(jù)和釋放Head和Rear之間的數(shù)據(jù);
其中,釋放以隊(duì)首數(shù)據(jù)開頭的連續(xù)數(shù)據(jù)包括以下步驟:
將直接移動(dòng)Head指針到刪除數(shù)據(jù)的最后一個(gè)數(shù)據(jù)的下一個(gè)位置處;
釋放Head和Rear之間的數(shù)據(jù)包括以下步驟:
刪除Head和Rear之間的數(shù)據(jù),進(jìn)行數(shù)據(jù)遷移操作,將數(shù)據(jù)存儲(chǔ)位置進(jìn)行緊湊操作,同時(shí)Rear指針移動(dòng)到緊湊后數(shù)據(jù)的最后一個(gè)數(shù)據(jù)位置。
較佳地,步驟S4中的增加存儲(chǔ)空間包括以下步驟:
標(biāo)注需增加的存儲(chǔ)空間的存儲(chǔ)塊為P,先執(zhí)行P=Rear.next,后執(zhí)行Rear=P,則將P加入到Rear和Rear.next之間,然后對(duì)整個(gè)隊(duì)列重新進(jìn)行序列化排序操作。
較佳地,步驟S4中的刪除存儲(chǔ)空間包括刪除無數(shù)據(jù)的存儲(chǔ)空間和刪除存在有效數(shù)據(jù)的存儲(chǔ)空間;
其中,刪除無數(shù)據(jù)的存儲(chǔ)空間包括以下步驟:
標(biāo)注需刪除的存儲(chǔ)空間的存儲(chǔ)塊為P,執(zhí)行Rear.next=P.next,刪除P存儲(chǔ)塊,然后對(duì)整個(gè)隊(duì)列重新進(jìn)行序列化排序操作;
刪除存在有效數(shù)據(jù)的存儲(chǔ)空間包括以下步驟:
執(zhí)行Rear.next= Replace_Store.next操作,將Replace_Store指向的存儲(chǔ)塊從該循環(huán)存儲(chǔ)隊(duì)列中取出;
將Del_Store數(shù)據(jù)塊中的數(shù)據(jù)拷貝到Replace_Store存儲(chǔ)塊中;
執(zhí)行Del_Front= Replace_Store,然后執(zhí)行Replace_Store =Del_Stroe.next,將Replace_Store存儲(chǔ)塊替換到Del_Store的位置;
對(duì)循環(huán)隊(duì)列重新序列化,同時(shí)刪除Del_Store存儲(chǔ)塊;
其中,Del_Stroe是要?jiǎng)h除的存儲(chǔ)塊,Del_Front是Del_Stroe的前一個(gè)存儲(chǔ)節(jié)點(diǎn),Replace_Store=Rear.next是數(shù)據(jù)即將遷移到的存儲(chǔ)塊。
本發(fā)明還提供一種VMware虛擬化存儲(chǔ)分配系統(tǒng),其特點(diǎn)在于,其包括:
一構(gòu)建模塊,用于構(gòu)建SAN應(yīng)用的VMware存儲(chǔ)虛擬化的存儲(chǔ)管理平臺(tái),將集群中的服務(wù)器、存儲(chǔ)資源和服務(wù)進(jìn)行虛擬化整合處理;
一處理模塊,用于在該存儲(chǔ)管理平臺(tái)的集群存儲(chǔ)資源虛擬化管理界面中,將存儲(chǔ)空間資源按照物理塊獨(dú)立性劃分為多個(gè)存儲(chǔ)塊,并對(duì)該些存儲(chǔ)塊進(jìn)行序列化處理;
一建立模塊,用于對(duì)序列化存儲(chǔ)空間建立循環(huán)存儲(chǔ)隊(duì)列,其中,Head指向該循環(huán)存儲(chǔ)隊(duì)列的隊(duì)首的存儲(chǔ)塊中第一個(gè)數(shù)據(jù)的位置,Rear指向該循環(huán)存儲(chǔ)隊(duì)列的隊(duì)尾的存儲(chǔ)塊中最后一個(gè)數(shù)據(jù)的位置,該循環(huán)存儲(chǔ)隊(duì)列的總長(zhǎng)度len等于該些存儲(chǔ)塊的總數(shù);
一執(zhí)行模塊,用于基于循環(huán)隊(duì)列算法對(duì)序列化存儲(chǔ)空間執(zhí)行數(shù)據(jù)操作,該數(shù)據(jù)操作包括導(dǎo)入數(shù)據(jù)、釋放數(shù)據(jù)、增加存儲(chǔ)空間和刪除存儲(chǔ)空間。
較佳地,當(dāng)有數(shù)據(jù)需要導(dǎo)入時(shí),該執(zhí)行模塊用于判斷是否(Rear+1)%len=Head,若為true則顯示一存儲(chǔ)塊的存儲(chǔ)空間不足預(yù)警信息,由用戶確定是否刪除隊(duì)首數(shù)據(jù)或新增存儲(chǔ)空間以解除警報(bào),否則為false則將數(shù)據(jù)保存到Rear指針指向的存儲(chǔ)塊的剩余空間,若Rear所指向的存儲(chǔ)塊的剩余空間不足則執(zhí)行Rear->Rear.next操作,并將剩余數(shù)據(jù)導(dǎo)入到現(xiàn)在Rear所指向的存儲(chǔ)塊;
其中,對(duì)于刪除隊(duì)首數(shù)據(jù)操作,若隊(duì)首數(shù)據(jù)全部刪除,則head->head.next。
較佳地,釋放數(shù)據(jù)包括釋放以隊(duì)首數(shù)據(jù)開頭的連續(xù)數(shù)據(jù)和釋放Head和Rear之間的數(shù)據(jù);
其中,釋放以隊(duì)首數(shù)據(jù)開頭的連續(xù)數(shù)據(jù)包括:
該執(zhí)行模塊用于將直接移動(dòng)Head指針到刪除數(shù)據(jù)的最后一個(gè)數(shù)據(jù)的下一個(gè)位置處;
釋放Head和Rear之間的數(shù)據(jù)包括:
該執(zhí)行模塊用于刪除Head和Rear之間的數(shù)據(jù),進(jìn)行數(shù)據(jù)遷移操作,將數(shù)據(jù)存儲(chǔ)位置進(jìn)行緊湊操作,同時(shí)Rear指針移動(dòng)到緊湊后數(shù)據(jù)的最后一個(gè)數(shù)據(jù)位置。
較佳地, 標(biāo)注需增加的存儲(chǔ)空間的存儲(chǔ)塊為P,該執(zhí)行模塊用于先執(zhí)行P=Rear.next,后執(zhí)行Rear=P,則將P加入到Rear和Rear.next之間,然后對(duì)整個(gè)隊(duì)列重新進(jìn)行序列化排序操作。
較佳地,刪除存儲(chǔ)空間包括刪除無數(shù)據(jù)的存儲(chǔ)空間和刪除存在有效數(shù)據(jù)的存儲(chǔ)空間;
其中,刪除無數(shù)據(jù)的存儲(chǔ)空間包括:
標(biāo)注需刪除的存儲(chǔ)空間的存儲(chǔ)塊為P,該執(zhí)行模塊用于執(zhí)行Rear.next=P.next,刪除P存儲(chǔ)塊,然后對(duì)整個(gè)隊(duì)列重新進(jìn)行序列化排序操作;
刪除存在有效數(shù)據(jù)的存儲(chǔ)空間包括:
該執(zhí)行模塊用于執(zhí)行Rear.next= Replace_Store.next操作,將Replace_Store指向的存儲(chǔ)塊從該循環(huán)存儲(chǔ)隊(duì)列中取出;
將Del_Store數(shù)據(jù)塊中的數(shù)據(jù)拷貝到Replace_Store存儲(chǔ)塊中;
執(zhí)行Del_Front= Replace_Store,然后執(zhí)行Replace_Store =Del_Stroe.next,將Replace_Store存儲(chǔ)塊替換到Del_Store的位置;
對(duì)循環(huán)隊(duì)列重新序列化,同時(shí)刪除Del_Store存儲(chǔ)塊;
其中,Del_Stroe是要?jiǎng)h除的存儲(chǔ)塊,Del_Front是Del_Stroe的前一個(gè)存儲(chǔ)節(jié)點(diǎn),Replace_Store=Rear.next是數(shù)據(jù)即將遷移到的存儲(chǔ)塊。
在符合本領(lǐng)域常識(shí)的基礎(chǔ)上,上述各優(yōu)選條件,可任意組合,即得本發(fā)明各較佳實(shí)例。
本發(fā)明的積極進(jìn)步效果在于:
本發(fā)明通過VMware虛擬化存儲(chǔ)技術(shù),對(duì)服務(wù)器集群的資源和功能進(jìn)行整合,將系統(tǒng)底層的復(fù)雜操作進(jìn)行虛擬化處理,從而為用戶提供一個(gè)統(tǒng)一和全面的功能服務(wù)平臺(tái),簡(jiǎn)化對(duì)用來提供服務(wù)和存儲(chǔ)的實(shí)體的管理。然后通過采用循環(huán)隊(duì)列算法,將實(shí)體的存儲(chǔ)資源進(jìn)行序列化處理,組合成一個(gè)循環(huán)隊(duì)列,從而實(shí)現(xiàn)存儲(chǔ)資源的自動(dòng)化管理,提高系統(tǒng)存儲(chǔ)資源的利用率和管理的復(fù)雜度,同時(shí)節(jié)省大量的人力成本。
附圖說明
圖1為本發(fā)明較佳實(shí)施例的VMware虛擬化存儲(chǔ)分配方法的流程圖
圖2為本發(fā)明較佳實(shí)施例的VMware存儲(chǔ)虛擬化物理架構(gòu)圖。
圖3為本發(fā)明較佳實(shí)施例的集群存儲(chǔ)虛擬化存儲(chǔ)區(qū)域劃分和序列化過程。
圖4為本發(fā)明較佳實(shí)施例的循環(huán)隊(duì)列指針的結(jié)構(gòu)示意圖。
圖5為本發(fā)明較佳實(shí)施例的VMware虛擬化存儲(chǔ)分配系統(tǒng)的結(jié)構(gòu)框圖。
圖6為本發(fā)明較佳實(shí)施例的數(shù)據(jù)導(dǎo)入操作過程的示意圖。
圖7為本發(fā)明較佳實(shí)施例的釋放以隊(duì)首數(shù)據(jù)開頭的連續(xù)數(shù)據(jù)的操作過程的示意圖。
圖8為本發(fā)明較佳實(shí)施例的釋放Head和Rear之間的數(shù)據(jù)的操作過程的示意圖。
圖9為本發(fā)明較佳實(shí)施例的增加存儲(chǔ)空間的操作過程的示意圖。
圖10為本發(fā)明較佳實(shí)施例的刪除存儲(chǔ)空間的操作過程的示意圖。
具體實(shí)施方式
下面結(jié)合附圖給出本發(fā)明較佳實(shí)施例,以詳細(xì)說明本發(fā)明的技術(shù)方案,但并不因此將本發(fā)明限制在所述的實(shí)施例范圍之中。
本實(shí)施例提出基于循環(huán)隊(duì)列算法的VMware虛擬化存儲(chǔ)分配方法及系統(tǒng),對(duì)集群存儲(chǔ)資源進(jìn)行序列化處理,組合成一條存儲(chǔ)隊(duì)列,從而實(shí)現(xiàn)集群存儲(chǔ)資源自動(dòng)化管理機(jī)制,不僅系統(tǒng)存儲(chǔ)資源的利用率能夠得到很大程度提升和管理復(fù)雜度在很大程度上得到降低,而且還可以節(jié)省大量的人力資源成本。
如圖1所示,該基于循環(huán)隊(duì)列算法的VMware虛擬化存儲(chǔ)分配方法具體的實(shí)現(xiàn)過程為:
第一步:構(gòu)建集群VMware存儲(chǔ)虛擬化平臺(tái)
構(gòu)建存儲(chǔ)域網(wǎng)絡(luò)(SAN)應(yīng)用的VMware存儲(chǔ)虛擬化的存儲(chǔ)管理平臺(tái),將集群中的服務(wù)器、存儲(chǔ)資源和服務(wù)進(jìn)行虛擬化整合處理。其中,VMware存儲(chǔ)虛擬化物理架構(gòu)如圖2所示。
第二步:存儲(chǔ)資源劃分和序列化
在該存儲(chǔ)管理平臺(tái)的集群存儲(chǔ)資源虛擬化管理界面中,將存儲(chǔ)空間資源按照物理塊獨(dú)立性劃分為多個(gè)存儲(chǔ)塊,并對(duì)該些存儲(chǔ)塊進(jìn)行序列化處理,具體操作如圖3所示。
第三步:基于循環(huán)隊(duì)列算法對(duì)圖3中的序列化存儲(chǔ)空間建立循環(huán)存儲(chǔ)隊(duì)列,具體操作如下:
把如圖3為例的存儲(chǔ)空間序列化后,組合成一個(gè)循環(huán)隊(duì)列指針,其中,Head(頭指針)指向標(biāo)號(hào)為0的存儲(chǔ)塊中第一個(gè)數(shù)據(jù)的位置,Rear(尾指針)指向標(biāo)號(hào)為4的存儲(chǔ)塊最后一個(gè)數(shù)據(jù)的位置,整個(gè)虛擬化存儲(chǔ)空間劃分的存儲(chǔ)塊總數(shù)為len=5,即該循環(huán)隊(duì)列的總長(zhǎng)度,該循環(huán)隊(duì)列指針結(jié)構(gòu)如圖4所示。
第四步:對(duì)于存儲(chǔ)虛擬化存儲(chǔ)空間的操作可以分為導(dǎo)入數(shù)據(jù)、釋放數(shù)據(jù)、增加存儲(chǔ)空間和刪除存儲(chǔ)空間四種主要的操作。
如圖5所示,本實(shí)施例提供的VMware虛擬化存儲(chǔ)分配系統(tǒng),其包括一構(gòu)建模塊1、一處理模塊2、一建立模塊3和一執(zhí)行模塊4。
上面介紹了該VMware虛擬化存儲(chǔ)分配系統(tǒng)包括的功能模塊,下面具體介紹各功能模塊所具備的功能:
該構(gòu)建模塊1用于構(gòu)建SAN應(yīng)用的VMware存儲(chǔ)虛擬化的存儲(chǔ)管理平臺(tái),將集群中的服務(wù)器、存儲(chǔ)資源和服務(wù)進(jìn)行虛擬化整合處理。
該處理模塊2用于在該存儲(chǔ)管理平臺(tái)的集群存儲(chǔ)資源虛擬化管理界面中,將存儲(chǔ)空間資源按照物理塊獨(dú)立性劃分為多個(gè)存儲(chǔ)塊,并對(duì)該些存儲(chǔ)塊進(jìn)行序列化處理。
該建立模塊3用于對(duì)序列化存儲(chǔ)空間建立循環(huán)存儲(chǔ)隊(duì)列,其中,Head指向該循環(huán)存儲(chǔ)隊(duì)列的隊(duì)首的存儲(chǔ)塊中第一個(gè)數(shù)據(jù)的位置,Rear指向該循環(huán)存儲(chǔ)隊(duì)列的隊(duì)尾的存儲(chǔ)塊中最后一個(gè)數(shù)據(jù)的位置,該循環(huán)存儲(chǔ)隊(duì)列的總長(zhǎng)度len等于該些存儲(chǔ)塊的總數(shù)。
該執(zhí)行模塊4用于基于循環(huán)隊(duì)列算法對(duì)序列化存儲(chǔ)空間執(zhí)行數(shù)據(jù)操作,該數(shù)據(jù)操作包括導(dǎo)入數(shù)據(jù)、釋放數(shù)據(jù)、增加存儲(chǔ)空間和刪除存儲(chǔ)空間。
具體每一種操作的設(shè)計(jì)方案如下所示:
注:由于是集群環(huán)境,因此這里的數(shù)據(jù)塊總數(shù)應(yīng)大于1。
(1)導(dǎo)入數(shù)據(jù)
導(dǎo)入數(shù)據(jù)的具體流程如下:
當(dāng)有數(shù)據(jù)需要導(dǎo)入時(shí),首先判斷(Rear+1)%len=Head,如果為true則顯示一存儲(chǔ)塊的存儲(chǔ)空間不足預(yù)警信息,需要由用戶確定是否刪除隊(duì)首數(shù)據(jù)或新增存儲(chǔ)空間,解除警報(bào)。其中對(duì)于刪除隊(duì)首數(shù)據(jù)操作,如果隊(duì)首數(shù)據(jù)全部刪除,則head->head.next,即head指向它的下一個(gè)位置處。
否則為false表示空間充足,將數(shù)據(jù)保存到Rear指針指向的存儲(chǔ)塊的剩余空間,如果Rear所指向的存儲(chǔ)塊的剩余空間不足則執(zhí)行Rear->Rear.next操作,即指向Rear的下一個(gè)位置,并將剩余數(shù)據(jù)導(dǎo)入到現(xiàn)在Rear所指向的存儲(chǔ)空間。數(shù)據(jù)導(dǎo)入操作過程描述如圖6所示。
當(dāng)有數(shù)據(jù)需要導(dǎo)入時(shí),該執(zhí)行模塊4執(zhí)行以下功能操作:
該執(zhí)行模塊4用于判斷是否(Rear+1)%len=Head,若為true則顯示一存儲(chǔ)塊的存儲(chǔ)空間不足預(yù)警信息,由用戶確定是否刪除隊(duì)首數(shù)據(jù)或新增存儲(chǔ)空間以解除警報(bào),否則為false則將數(shù)據(jù)保存到Rear指針指向的存儲(chǔ)塊的剩余空間,若Rear所指向的存儲(chǔ)塊的剩余空間不足則執(zhí)行Rear->Rear.next操作,并將剩余數(shù)據(jù)導(dǎo)入到現(xiàn)在Rear所指向的存儲(chǔ)塊。數(shù)據(jù)導(dǎo)入操作具體如圖6所示。
其中,對(duì)于刪除隊(duì)首數(shù)據(jù)操作,若隊(duì)首數(shù)據(jù)全部刪除,則head->head.next。
(2)釋放數(shù)據(jù)
釋放數(shù)據(jù)的具體流程如下:
釋放數(shù)據(jù)操作分為釋放的是以隊(duì)首數(shù)據(jù)開頭的連續(xù)數(shù)據(jù)和釋放Head和Rear之間的數(shù)據(jù)。
其中,以隊(duì)首數(shù)據(jù)開頭的連續(xù)數(shù)據(jù)的操作中,則將直接移動(dòng)Head指針到刪除數(shù)據(jù)的最后一個(gè)數(shù)據(jù)的下一個(gè)位置處,具體描述如圖7所示:
刪除Head和Rear之間的數(shù)據(jù),則需要進(jìn)行數(shù)據(jù)遷移操作,將數(shù)據(jù)存儲(chǔ)位置進(jìn)行緊湊操作,同時(shí)Rear指針也進(jìn)行移動(dòng)到緊湊后數(shù)據(jù)的最后一個(gè)數(shù)據(jù)位置,具體描述如圖8所示。
當(dāng)釋放數(shù)據(jù)時(shí),該執(zhí)行模塊4執(zhí)行以下功能操作:
釋放數(shù)據(jù)包括釋放以隊(duì)首數(shù)據(jù)開頭的連續(xù)數(shù)據(jù)和釋放Head和Rear之間的數(shù)據(jù)。
其中,釋放以隊(duì)首數(shù)據(jù)開頭的連續(xù)數(shù)據(jù)包括:
見圖7,該執(zhí)行模塊4用于將直接移動(dòng)Head指針到刪除數(shù)據(jù)的最后一個(gè)數(shù)據(jù)的下一個(gè)位置處。
釋放Head和Rear之間的數(shù)據(jù)包括:
見圖8,該執(zhí)行模塊4用于刪除Head和Rear之間的數(shù)據(jù),進(jìn)行數(shù)據(jù)遷移操作,將數(shù)據(jù)存儲(chǔ)位置進(jìn)行緊湊操作,同時(shí)Rear指針移動(dòng)到緊湊后數(shù)據(jù)的最后一個(gè)數(shù)據(jù)位置。
(3)增加存儲(chǔ)空間
增加存儲(chǔ)空間的具體流程如下:
當(dāng)需要增加存儲(chǔ)空間時(shí),標(biāo)注需增加的存儲(chǔ)空間的存儲(chǔ)塊為P,先執(zhí)行P=Rear.next,后執(zhí)行Rear=P,則將P加入到Rear和Rear.next之間,然后對(duì)整個(gè)隊(duì)列重新進(jìn)行序列化排序操作,具體過程如圖9所示。
當(dāng)需要增加存儲(chǔ)空間時(shí),該執(zhí)行模塊4執(zhí)行以下功能操作:
標(biāo)注需增加的存儲(chǔ)空間的存儲(chǔ)塊為P。
如圖9所示,該執(zhí)行模塊4用于先執(zhí)行P=Rear.next,后執(zhí)行Rear=P,則將P加入到Rear和Rear.next之間,然后對(duì)整個(gè)隊(duì)列重新進(jìn)行序列化排序操作。
(4)刪除存儲(chǔ)空間
刪除存儲(chǔ)空間的具體流程如下:
刪除存儲(chǔ)空間分為兩種情況:
第一種是刪除無數(shù)據(jù)存儲(chǔ)空間;第二種是刪除存在有效數(shù)據(jù)的存儲(chǔ)空間。其中,第一種情況是增加存儲(chǔ)空間的逆過程。標(biāo)注需刪除的存儲(chǔ)空間的存儲(chǔ)塊為P,執(zhí)行Rear.next=P.next,刪除P存儲(chǔ)塊,然后對(duì)整個(gè)隊(duì)列重新進(jìn)行序列化排序操作。
第二種情況需要進(jìn)行存儲(chǔ)空間指針替換,然后進(jìn)行數(shù)據(jù)的遷移,轉(zhuǎn)變成無數(shù)據(jù)的存儲(chǔ)空間的刪除操作,具體描述如圖10所示:
其中,Del_Stroe是要?jiǎng)h除的存儲(chǔ)空間,Del_Front是Del_Stroe的前一個(gè)存儲(chǔ)節(jié)點(diǎn),Replace_Store=Rear.next是數(shù)據(jù)即將遷移到的存儲(chǔ)塊。整個(gè)操作分為四步,這四步操作具體描述入下:
第一步:執(zhí)行Rear.next= Replace_Store.next操作,即將Replace_Store指向的存儲(chǔ)塊從該循環(huán)存儲(chǔ)隊(duì)列中取出;
第二步:將Del_Store數(shù)據(jù)塊中的數(shù)據(jù)拷貝到Replace_Store存儲(chǔ)塊中;
第三步:執(zhí)行Del_Front= Replace_Store,然后執(zhí)行Replace_Store =Del_Stroe.next,即將Replace_Store存儲(chǔ)塊替換到Del_Store的位置;
第四步:對(duì)循環(huán)隊(duì)列重新序列化,同時(shí)刪除Del_Store存儲(chǔ)塊。
當(dāng)需要?jiǎng)h除存儲(chǔ)空間時(shí),該執(zhí)行模塊4執(zhí)行以下功能操作:
刪除存儲(chǔ)空間包括刪除無數(shù)據(jù)的存儲(chǔ)空間和刪除存在有效數(shù)據(jù)的存儲(chǔ)空間;
其中,刪除無數(shù)據(jù)的存儲(chǔ)空間包括:
標(biāo)注需刪除的存儲(chǔ)空間的存儲(chǔ)塊為P。
該執(zhí)行模塊4用于執(zhí)行Rear.next=P.next,刪除P存儲(chǔ)塊,然后對(duì)整個(gè)隊(duì)列重新進(jìn)行序列化排序操作。
刪除存在有效數(shù)據(jù)的存儲(chǔ)空間包括:
如圖10所示,該執(zhí)行模塊4用于執(zhí)行Rear.next= Replace_Store.next操作,將Replace_Store指向的存儲(chǔ)塊從該循環(huán)存儲(chǔ)隊(duì)列中取出;
將Del_Store數(shù)據(jù)塊中的數(shù)據(jù)拷貝到Replace_Store存儲(chǔ)塊中;
執(zhí)行Del_Front= Replace_Store,然后執(zhí)行Replace_Store =Del_Stroe.next,將Replace_Store存儲(chǔ)塊替換到Del_Store的位置;
對(duì)循環(huán)隊(duì)列重新序列化,同時(shí)刪除Del_Store存儲(chǔ)塊;
其中,Del_Stroe是要?jiǎng)h除的存儲(chǔ)塊,Del_Front是Del_Stroe的前一個(gè)存儲(chǔ)節(jié)點(diǎn),Replace_Store=Rear.next是數(shù)據(jù)即將遷移到的存儲(chǔ)塊。
雖然以上描述了本發(fā)明的具體實(shí)施方式,但是本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,這些僅是舉例說明,本發(fā)明的保護(hù)范圍是由所附權(quán)利要求書限定的。本領(lǐng)域的技術(shù)人員在不背離本發(fā)明的原理和實(shí)質(zhì)的前提下,可以對(duì)這些實(shí)施方式做出多種變更或修改,但這些變更和修改均落入本發(fā)明的保護(hù)范圍。