專利名稱:一種支持物理存儲器動態(tài)加載或卸載的方法
技術領域:
本發(fā)明屬于信息技術領域,具體涉及一種支持物理存儲器動態(tài)加載和卸載的方法。
背景技術:
現(xiàn)有計算機物理存儲器的管理采用靜態(tài)編制方式,即在計算機上電自檢時檢查物理內(nèi)存的大小并將其編址到操作系統(tǒng)中,并不支持物理內(nèi)存的熱插拔。但在對服務器等一些7XM小時的計算機進行升級時,停機升級將會產(chǎn)生不必要、甚至重大的損失。存儲管理子系統(tǒng)是操作系統(tǒng)中最重要的組成部分之一。經(jīng)典的存儲管理主要面向如何高效利用物理存儲器,減少內(nèi)存分配碎片,加快讀寫效率;主要的存儲管理方式包括1.分區(qū)存儲管理分區(qū)存儲管理又有三種不同的方式靜態(tài)分區(qū)、可變分區(qū)、可重定位分區(qū)。這種早期的邏輯管理方法有很多弊端,現(xiàn)主要用于編譯階段和簡單嵌入式系統(tǒng)。2.分頁存儲管理分頁存儲管理是將一個進程的邏輯地址空間分成若干個大小相等的片,稱為頁面或頁,并為各頁加以編號,從0開始,如第0頁、第1頁等。相應地,也把內(nèi)存空間分成與頁面相同大小的若干個存儲塊,稱為(物理)塊或頁框(frame),也同樣為它們加以編號,如 0#塊、1#塊等等。這種管理方法主要為了解決內(nèi)存碎片問題。3.分段存儲管理分段存儲管理方式將邏輯地址空間被劃分為若干個段,每個段定義了一組邏輯信息。主要用于解決讀寫保護引發(fā)的效率問題。4.段頁式存儲管理分段存儲管理方式和基本分頁存儲管理方式原理的結合,同時解決讀寫保護的效率問題和內(nèi)存碎片的問題。5.虛擬存儲管理依據(jù)程序的局部性原理,虛擬存儲技術利用物理內(nèi)存空間和相對大得多的外部儲存器存儲空間相結合構成一個遠遠大于實際內(nèi)存空間的虛擬存儲空間。主要解決線性內(nèi)存空間受物理存儲器限制的問題。以上存儲管理方法均假定物理存儲器的數(shù)量已確定、連接方式已確定。在此基礎上實施對內(nèi)存資源的高效使用。主要管理對象是對存儲器的邏輯空間進行管理,并不支持物理空間的動態(tài)變化。而現(xiàn)代計算機系統(tǒng)的可維護性要求越來越高,物理存儲器的加載和卸載需要計算機執(zhí)行重新初始化的過程,因此必須停止服務以重新初始化。針對現(xiàn)代的硬件技術而言,這種停機后重新啟動的初始化過程并不是必要的,但由于軟件算法的限制,涉及物理存儲器的維護,仍需停機執(zhí)行重新初始化。
發(fā)明內(nèi)容
針對現(xiàn)有技術中存在的技術問題,本發(fā)明的目的在于提供一種支持物理存儲器動態(tài)加載或卸載的方法,本方法允許計算機系統(tǒng)運行時動態(tài)地激活使用物理內(nèi)存,也可以隨時釋放和關閉特定的物理內(nèi)存,為計算機系統(tǒng)的物理內(nèi)存實現(xiàn)熱插拔提供了一種實現(xiàn)方法。本發(fā)明的技術方案為一種支持物理存儲器動態(tài)加載或卸載的方法,其步驟為、1)初始化計算機的物理存儲器;建立數(shù)據(jù)結構M記錄當前可用存儲器總數(shù)、物理存儲器總數(shù)、該計算機物理存儲器的連接能力;2)建立一動態(tài)數(shù)據(jù)結構A記錄物理存儲器頁框的占用狀態(tài)及物理屬性;3)在系統(tǒng)缺頁處理時將數(shù)據(jù)結構A中的記錄引入系統(tǒng)頁表,實現(xiàn)由數(shù)據(jù)結構A所記錄的存儲器能被系統(tǒng)使用;4)當系統(tǒng)收到物理存儲器可訪問狀態(tài)信號后,探測新連入系統(tǒng)的物理存儲器,根據(jù)數(shù)據(jù)結構M執(zhí)行遍歷和新增存儲器的初始化,根據(jù)遍歷和初始化結果更新數(shù)據(jù)結構A和 M,使新增存儲器能被當前系統(tǒng)使用;當系統(tǒng)收到指定區(qū)塊的物理存儲器釋放請求后,檢索數(shù)據(jù)結構A中相應的區(qū)塊占用狀態(tài)和物理屬性,若有不能滿足釋放條件的區(qū)塊,轉移數(shù)據(jù)至釋放條件達成;最終將滿足釋放條件的區(qū)塊在數(shù)據(jù)結構A中的標識恢復為未初始化狀態(tài),并更新M。進一步的,所述數(shù)據(jù)結構M中包含至少3個元素;其中,M
記錄可用存儲器總數(shù),M[l]記錄物理存儲器總數(shù),M[2]記錄物理存儲器的連接能力,M[l]等于M
加上計算機已連接但未初始化的物理存儲器,MD] >M[1]。進一步的,所述數(shù)據(jù)結構A中包含頁框所屬物理存儲器屬性的數(shù)據(jù)結構或包含指向該數(shù)據(jù)結構的指針。進一步的,所述數(shù)據(jù)結構A的長度可變。進一步的,所述物理存儲器屬性包括所屬總線、區(qū)塊、性能、功耗。進一步的,根據(jù)物理存儲器的區(qū)塊屬性、或性能屬性、或功耗屬性對物理存儲器內(nèi)存進行區(qū)別化操作。進一步的,若沒有滿足釋放條件的區(qū)塊,則觸發(fā)頁交換調(diào)用,將部分頁框交換到外存儲設備,直至有足夠的空閑區(qū)塊或需保留頁交換完成,轉移數(shù)據(jù)至釋放條件達成。進一步的,根據(jù)存儲器的物理屬性數(shù)據(jù),將分散于不同物理區(qū)塊的數(shù)據(jù)集中到一起,實現(xiàn)對某塊物理存儲器徹底釋放或完全占用。 進一步的,采用塊操作指令完成物理內(nèi)存數(shù)據(jù)的轉移復制。本發(fā)明仍支持現(xiàn)有計算機的虛擬存儲和頁式管理算法,通過設置如下機制1.開放編址機制,允許系統(tǒng)在加電啟動時不初始化全部物理內(nèi)存;允許在運行中添加和初始化新的物理內(nèi)存并納入全局編址中;允許運行中釋放特定的物理內(nèi)存器件或模塊。2.動態(tài)聚合機制,系統(tǒng)以物理區(qū)塊標識作為頁表映射依據(jù),并在需要的時候批量分配和轉移區(qū)塊內(nèi)的內(nèi)容,透明地完成重新映射。3.存儲分配算法中加入物理屬性因子,使物理內(nèi)存的分配可以按照區(qū)塊、性能、功耗分別優(yōu)化。實現(xiàn)對物理存儲器按物理連接關系進行動態(tài)占用和釋放;任何獨立的物理存儲器被釋放后,都可以被物理地移出計算機系統(tǒng),或切斷能源而實現(xiàn)細粒度的能耗管理。其中開放編址機制通過設定一組系統(tǒng)全局變量來實現(xiàn),該全局變量記錄當前系統(tǒng)中已初始化存儲器的數(shù)量(可用物理存儲器總數(shù))、已連接但未初始化的物理存儲器數(shù)量(物理存儲器總數(shù))和最大可連接物理存儲器數(shù)量(系統(tǒng)物理連接能力)。動態(tài)聚合機制通過為物理存儲器設定區(qū)塊標識(與物理連接對應)和一種地址重映射算法來實現(xiàn)。該地址重映射算法主要完成按照區(qū)塊標識完成物理存儲器中的內(nèi)容由源(待卸載的物理區(qū)塊)向目的(空閑的物理區(qū)塊或外部頁交換設備)復制;修改系統(tǒng)頁表以完成物理地址的重新映射。本發(fā)明中的存儲分配算法主要完成傳統(tǒng)存儲管理方法中不能實現(xiàn)的、針對物理存儲器特性的內(nèi)存分配。具體實現(xiàn)依據(jù)是根據(jù)物理存儲器的物理特征設定存儲器分配的優(yōu)先級,使存儲器分配能夠考慮存儲器的物理區(qū)塊、性能、功耗因素,將存儲器的占用與物理區(qū)塊性質關聯(lián)起來,為按照物理區(qū)塊加載和釋放物理存儲器提供更好的效率。與現(xiàn)有技術相比,本發(fā)明的積極效果為 本發(fā)明方法允許計算機系統(tǒng)動態(tài)地停止或啟動物理內(nèi)存的使用,既可以實現(xiàn)對部分存儲器的熱插拔維護,也可以按需切斷和恢復指定物理存儲器的供電,實現(xiàn)系統(tǒng)功耗的深度管理。同時本發(fā)明允許計算機系統(tǒng)按存儲器的物理屬性有區(qū)別地動態(tài)加載、操作及卸載一部分物理存儲器,增強計算機系統(tǒng)的可維護性和擴展能力。
圖1示例了本發(fā)明中的系統(tǒng)物理內(nèi)存熱插拔流程圖。圖2示例本發(fā)明中的物理存儲器開放編址和聚合機制的數(shù)據(jù)結構。
具體實施例方式下面結合附圖對本發(fā)明的技術內(nèi)容進行進一步詳細描述。本發(fā)明方法的流程如圖 1所示1.計算機初始化物理內(nèi)存時,物理內(nèi)存大小以全局變量形式存在;該全局變量可以是一個整型數(shù)組M[y](見圖幻,其中M
記錄系統(tǒng)中可用存儲器總數(shù),M[l]記錄物理存儲器總數(shù),M[2]記錄系統(tǒng)物理連接能力。在簡化系統(tǒng)中,該全局變量可以簡化為一個整型變量(即僅有M
),此時系統(tǒng)的動態(tài)物理存儲器加載和卸載只能在地址高端按順序執(zhí)行(不能在任意物理存儲區(qū)塊上執(zhí)行動態(tài)加載和卸載,只能按順序進行)。變量之間的關系如下M[l] = MW]+已連接但未初始化的物理存儲器M[2] ^ M[l]2.物理內(nèi)存映射位圖以動態(tài)數(shù)組的方式初始化;如圖2中所示,系統(tǒng)中設置一個可變長動態(tài)數(shù)組A[x],該數(shù)組的每一個元素記錄物理存儲器頁框的占用狀態(tài),整個數(shù)組被稱為物理內(nèi)存映射位圖,該數(shù)組是可變長數(shù)組。系統(tǒng)在初始化物理內(nèi)存時,同時維護該映射位圖,以體現(xiàn)當前系統(tǒng)中所有物理頁框的狀態(tài)(占用狀態(tài)及可訪問狀態(tài))。這種方法使本發(fā)明能夠與傳統(tǒng)的存儲器管理算法兼容。3.物理內(nèi)存映射位圖上增加屬性指針或鏈表,指向物理屬性標識數(shù)據(jù);如圖2所示,物理內(nèi)存映射位圖中的每個元素中包含一個指針P,該指針指向一個存儲物理存儲器屬性的數(shù)組結構,這一數(shù)組結構可以初始化為固定格式、鏈表或為空,根據(jù)存儲器的物理屬性復雜度確定。在簡化情況下,物理存儲器的物理屬性可直接存儲于物理內(nèi)存映射位圖中,從而省略指針P。該物理屬性標識數(shù)據(jù)的作用為具備同類物理屬性的, 可采用同一種操作算法來處理,用戶可以按需來根據(jù)速度、功耗、連接位置等任何感興趣的物理屬性來操作存儲器。4.需重映射的數(shù)據(jù)在物理地址上具備天然的局部連續(xù)性,用批量復制或移動操作來提高效率;當涉及操作的物理存儲器中仍有正在使用的數(shù)據(jù)時,采用移動或復制,并重映射物理地址的方式實現(xiàn)地址重定位。當CPU指令系統(tǒng)包含塊操作指令時,使用塊操作指令完成物理內(nèi)存內(nèi)容的轉移復制。在效率要求更高的系統(tǒng)中,可設置數(shù)據(jù)轉儲硬件來完成復制。5.系統(tǒng)缺頁處理例程中增加針對聚合機制的頁表重映射操作;在系統(tǒng)缺頁處理中將頁表狀態(tài)指針指向A[x]中相應的元素(即引起缺頁時對應的元素),完成本發(fā)明的物理存儲器狀態(tài)與傳統(tǒng)存儲管理器的地址映射過程。另外,當對物理存儲器執(zhí)行聚合操作時(該操作將分散于不同物理區(qū)塊的存儲器占用集中到一起;為對某塊物理存儲器實現(xiàn)徹底釋放或完全占用,而做的重新整理操作,本發(fā)明稱為聚合機制。),系統(tǒng)中原有的虛擬存儲管理器觸發(fā)缺頁調(diào)用,調(diào)用地址重映射算法完成頁表重映射操作。6.以物理內(nèi)存器件或模塊作為新的管理單位標識加入或移出存儲管理器。以上操作機制提供了動態(tài)初始化物理存儲器所需的數(shù)據(jù)結構和狀態(tài)信息,將該信息引入系統(tǒng)中原有的存儲管理數(shù)據(jù)中,即可實現(xiàn)后續(xù)物理存儲器的動態(tài)擴展及加載。新加入的存儲器被原有系統(tǒng)以新釋放的內(nèi)存看待和處理。同理,動態(tài)卸出的物理存儲器被原有系統(tǒng)視為不可訪問區(qū)域(內(nèi)存空洞)。典型流程初始系統(tǒng)上電一初始化物理內(nèi)存一建立全局變量(物理內(nèi)存大小及物理內(nèi)存映射位圖數(shù)組)一建立頁表并正常運作;例上電,遍歷地址總線獲得已連接存儲器2GB,總線能力8GB。此時M
=0M[l] = 80000000(16)M[2] = 200000000(油初始化物理內(nèi)存后,M
= 80000000(16)M[l] = 80000000(16)M[2] = 200000000(油初始化內(nèi)存映射位圖,物理內(nèi)存映射位圖A[x]建立,其中χ = M[l]/物理頁框大小。 初始化值為未占用可訪問狀態(tài)(具體狀態(tài)定義視系統(tǒng)而定,如00)。原系統(tǒng)根據(jù)按照正常流程建立系統(tǒng)初始頁表,進入正常運作。隨后正常訪問觸發(fā)系統(tǒng)缺頁調(diào)用,缺頁處理例程調(diào)用本發(fā)明中的地址映射機制,替換頁表原指針指向A[x]。缺頁調(diào)用返回。系統(tǒng)進入正常運作。增加物理內(nèi)存可訪問狀態(tài)信號觸發(fā)一初始化新的物理內(nèi)存一檢索物理內(nèi)存映射位圖數(shù)組尋找空洞一插入合適的內(nèi)存空洞并更新數(shù)組或一未發(fā)現(xiàn)合適的內(nèi)存空洞,擴展內(nèi)存映射位圖數(shù)組一更新物理內(nèi)存大小的全局變量;例增加IGB物理內(nèi)存增加前M[x]數(shù)組狀態(tài)M
= 80000000(16)M[l] = 80000000(16)M[2] = 200000000(16)系統(tǒng)管理員觸發(fā)(硬件方式自動觸發(fā)或手動運行觸發(fā)程序)物理存儲器狀態(tài)更新信號,遍歷M
以外的地址空間,探測新連入系統(tǒng)的物理存儲器,執(zhí)行遍歷初始化,根據(jù)遍歷結果獲知新存儲空間大小及狀態(tài)。檢索A[x]數(shù)組,尋找合適大小的空洞,若發(fā)現(xiàn)可用空洞,根據(jù)遍歷結果更新數(shù)組相應元素狀態(tài),若未發(fā)現(xiàn)可用空洞,擴展A[x]數(shù)組的大小,根據(jù)遍歷結果更新擴展后元素的狀態(tài)。 成功后更新M[x]數(shù)組狀態(tài)M
= 80000000 (16)M[l] = C0000000(16)M[2] = 200000000 (16)系統(tǒng)存儲器擴展完畢,新擴展部分的訪問過程同上一例。釋放物理內(nèi)存管理員發(fā)出釋放請求一檢索物理內(nèi)存映射位圖檢查占用情況一按區(qū)塊標識批量復制至空閑頁一重映射系統(tǒng)頁表一更新物理內(nèi)存大小全局變量一置釋放標例移除2GB物理存儲器管理員觸發(fā)釋放指定區(qū)塊的物理存儲器,檢索A[x]中相應的區(qū)塊狀態(tài),查詢占用情況。根據(jù)A[x]中的狀態(tài),釋放可廢棄頁框(即占用狀態(tài)為未占用的頁框),計算需保留頁框的大小。在A[x]中尋找合適大小的空閑區(qū)塊,若成功,將需保留頁框的內(nèi)容復制至空閑頁。若無合適大小空閑區(qū)塊,觸發(fā)頁交換調(diào)用,將部分頁框交換到外存儲設備。直至有足夠的空閑區(qū)塊或需保留頁交換完成(即區(qū)塊的釋放條件滿足)。更新A[x]中相應的元素。更新M[x]數(shù)組狀態(tài)M
= 40000000 (16)M[l] = C0000000(16)M[2] = 200000000(油已完成釋放,尚未物理移除??呻S時重新加載。
斷開物理存儲器的連接,實施電氣移除。觸發(fā)(硬件自動或管理員手動運行觸發(fā)程序)物理存儲器狀態(tài)更新信號,執(zhí)行M
以上的物理存儲器遍歷操作,根據(jù)遍歷結果確認已經(jīng)完成電氣移除,更新M[x]數(shù)組狀態(tài)M
= 40000000 (16)M[l] = 40000000(油M [2] = 200000000(油物理移除過程結束。
權利要求
1.一種支持物理存儲器動態(tài)加載或卸載的方法,其步驟為、1)初始化計算機的物理存儲器;建立數(shù)據(jù)結構M記錄當前可用存儲器總數(shù)、物理存儲器總數(shù)、該計算機物理存儲器的連接能力;2)建立一動態(tài)數(shù)據(jù)結構A記錄物理存儲器頁框的占用狀態(tài)及物理屬性;3)在系統(tǒng)缺頁處理時將數(shù)據(jù)結構A中的記錄引入系統(tǒng)頁表,實現(xiàn)由數(shù)據(jù)結構A所記錄的存儲器能被系統(tǒng)使用;4)當系統(tǒng)收到物理存儲器可訪問狀態(tài)信號后,探測新連入系統(tǒng)的物理存儲器,根據(jù)數(shù)據(jù)結構M執(zhí)行遍歷和新增存儲器的初始化,根據(jù)遍歷和初始化結果更新數(shù)據(jù)結構A和M,使新增存儲器能被當前系統(tǒng)使用;當系統(tǒng)收到指定區(qū)塊的物理存儲器釋放請求后,檢索數(shù)據(jù)結構A中相應的區(qū)塊占用狀態(tài)和物理屬性,若沒有滿足釋放條件的區(qū)塊,轉移數(shù)據(jù)至釋放條件達成;最終將滿足釋放條件的區(qū)塊在數(shù)據(jù)結構A中的標識恢復為未初始化狀態(tài),并更新M。
2.如權利要求1所述的方法,其特征在于所述數(shù)據(jù)結構M中包含至少3個元素;其中, M
記錄可用存儲器總數(shù),M[l]記錄物理存儲器總數(shù),M[2]記錄物理存儲器的連接能力, M[l]等于M
加上計算機已連接但未初始化的物理存儲器,M[2] >M[1]。
3.如權利要求1所述的方法,其特征在于所述數(shù)據(jù)結構A中包含頁框所屬物理存儲器屬性的數(shù)據(jù)結構或包含指向該數(shù)據(jù)結構的指針。
4.如權利要求3所述的方法,其特征在于所述數(shù)據(jù)結構A的長度可變。
5.如權利要求3所述的方法,其特征在于所述物理存儲器屬性包括所屬總線、區(qū)塊、 性能、功耗。
6.如權利要求5所述的方法,其特征在于根據(jù)物理存儲器的區(qū)塊屬性、或性能屬性、或功耗屬性對物理存儲器內(nèi)存進行區(qū)別化操作。
7.如權利要求1所述的方法,其特征在于若沒有滿足釋放條件的區(qū)塊,則觸發(fā)頁交換調(diào)用,將部分頁框交換到外存儲設備,直至有足夠的空閑區(qū)塊或需保留頁交換完成,轉移數(shù)據(jù)至釋放條件達成。
8.如權利要求1所述的方法,其特征在于根據(jù)存儲器的物理屬性數(shù)據(jù),將分散于不同物理區(qū)塊的數(shù)據(jù)集中到一起,實現(xiàn)對某塊物理存儲器徹底釋放或完全占用。
9.如權利要求1或7或8所述的方法,其特征在于采用塊操作指令完成物理內(nèi)存數(shù)據(jù)的轉移復制。
全文摘要
本發(fā)明公開了一種支持物理存儲器動態(tài)加載或卸載的方法,屬于信息技術領域。本方法為1)初始化計算機物理存儲器;建立數(shù)據(jù)結構M記錄當前可用存儲器總數(shù)、物理存儲器總數(shù)、該計算機物理存儲器的連接能力;2)建立一動態(tài)數(shù)據(jù)結構A記錄物理存儲器頁框的占用狀態(tài)及物理屬性;3)在系統(tǒng)缺頁處理時將A中的記錄引入系統(tǒng)頁表;4)當系統(tǒng)收到物理存儲器可訪問狀態(tài)信號后,根據(jù)M執(zhí)行遍歷和新增存儲器的初始化,更新A和M;當系統(tǒng)收到指定區(qū)塊的物理存儲器釋放請求后,檢索A,若沒有滿足釋放條件的區(qū)塊,轉移數(shù)據(jù)至釋放條件達成;最終將滿足釋放條件的區(qū)塊在A中的標識恢復為未初始化狀態(tài),并更新M。本發(fā)明增強計算機系統(tǒng)的可維護性和擴展能力。
文檔編號G06F12/06GK102495807SQ201110385498
公開日2012年6月13日 申請日期2011年11月28日 優(yōu)先權日2010年12月23日
發(fā)明者史興國 申請人:中國科學院軟件研究所