專利名稱::一種管理內(nèi)存的方法及裝置的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明屬于計算機(jī)領(lǐng)域,尤其涉及一種管理內(nèi)存的方法及裝置。
背景技術(shù):
:X86單板在基本輸入輸出系統(tǒng)(BasicInputOutputSystem,BIOS)啟動階段的實現(xiàn)都是基于Intel提出的統(tǒng)一可擴(kuò)展固件接口(UnifiedExtensibleFirewareInterface,UEFI)規(guī)范,該規(guī)范在內(nèi)存管理方面制定了一套系統(tǒng)的實現(xiàn)機(jī)制。X86單板上電啟動后,BIOS通過系統(tǒng)管理總線(SystemManagementBus,SMBUS)物理鏈路讀取內(nèi)存條上的模組存在的串行檢測(SerialPresenceDetect,SPD)信息,從而計算出當(dāng)前物理內(nèi)存的大小,BIOS啟動過程中,需要根據(jù)產(chǎn)品的需求,預(yù)先保留部分內(nèi)存區(qū)域用作特殊用途,通常是直接修改BIOS的執(zhí)行代碼,即這些內(nèi)存保留區(qū)都是在BIOS的執(zhí)行代碼中靜態(tài)固定的,一旦BIOS的執(zhí)行代碼文件生成,當(dāng)前系統(tǒng)的內(nèi)存保留區(qū)就已經(jīng)固定,BIOS正常啟動完畢后,會統(tǒng)一將系統(tǒng)的內(nèi)存使用情況通過內(nèi)存映射表(Memorymappingtable)發(fā)送給操作系統(tǒng)(OperatingSystem,OS),告訴OS當(dāng)前系統(tǒng)的內(nèi)存分布和屬性,供OS使用。這套機(jī)制是基于服務(wù)器或通用個人電腦(PersonalComputer,PC)領(lǐng)域提出的,當(dāng)其應(yīng)用在電信平臺時,就暴露出一些明顯的缺陷。當(dāng)BIOS的執(zhí)行代碼文件燒錄到X86單板后,X86單板每次啟動后,內(nèi)存保留區(qū)都是固定的,因此體現(xiàn)給OS的內(nèi)存使用情況也是一致的,即不同平臺的BIOS文件不可通用,而在電信領(lǐng)域往往對內(nèi)存有一些定制化的需求,如需要在BIOS啟動過程中動態(tài)預(yù)留一塊或幾塊內(nèi)存區(qū)域用于記錄臨終遺言、啟動日志,啟動日志用于記錄系統(tǒng)配置更改信息或者系統(tǒng)出錯信息,不同的電信平臺對這些內(nèi)存保留區(qū)域的起始地址和大小的需求都不一樣,即使在同一平臺,隨著應(yīng)用場景的切換這些內(nèi)存保留區(qū)域也需要做相應(yīng)的變更,此時原有的UEFI內(nèi)存保留機(jī)制已無法滿足這些要求。
發(fā)明內(nèi)容本發(fā)明實施例的目的在于提供一種管理內(nèi)存的方法,旨在解決如何設(shè)計一套動態(tài)管理內(nèi)存的方法從而實現(xiàn)在不升級BIOS的情況下,動態(tài)決定哪些內(nèi)存對OS可用的問題。第一方面,一種管理內(nèi)存的方法,所述方法包括:當(dāng)基本輸入輸出系統(tǒng)BIOS啟動時下載內(nèi)存保留區(qū)的配置文件,所述配置文件用于定義所述內(nèi)存保留區(qū);解析所述配置文件,根據(jù)解析后的配置文件的內(nèi)容更新內(nèi)存保留區(qū)記錄表;根據(jù)更新后的內(nèi)存保留區(qū)記錄表修改內(nèi)存映射表;將修改后的內(nèi)存映射表發(fā)送給OS,使得所述OS獲取內(nèi)存的使用情況。結(jié)合第一方面,在第一方面的第一種可能的實現(xiàn)方式中,所述解析所述配置文件,根據(jù)解析后的配置文件的內(nèi)容更新內(nèi)存保留區(qū)記錄表,包括:解析所述配置文件,調(diào)用內(nèi)存保留區(qū)注冊驅(qū)動中的注冊接口和注銷接口,將解析后的配置文件的內(nèi)容注冊或者注銷到內(nèi)存保留區(qū)記錄表中。結(jié)合第一方面的第一種可能的實現(xiàn)方式,在第一方面的第二種可能的實現(xiàn)方式中,所述將解析后的配置文件的內(nèi)容注冊到內(nèi)存保留區(qū)記錄表中,包括:判斷內(nèi)存保留區(qū)記錄表中的內(nèi)存保留區(qū)是否為已滿;當(dāng)判斷所述內(nèi)存保留區(qū)已滿,則返回存儲已滿;當(dāng)判斷所述內(nèi)存保留區(qū)未滿,則根據(jù)注冊接口調(diào)用者提供的GUID判斷,與所述內(nèi)存保留區(qū)記錄表中的參數(shù)進(jìn)行比較,若有重復(fù),則返回重復(fù)注冊;當(dāng)判斷所述內(nèi)存保留區(qū)無重復(fù),則根據(jù)所述注冊接口調(diào)用者提供的內(nèi)存保留區(qū)的地址和內(nèi)存保留區(qū)的大小,與所述內(nèi)存保留區(qū)記錄表中的參數(shù)進(jìn)行比較,當(dāng)所述內(nèi)存保留區(qū)的地址大于第i塊內(nèi)存保留區(qū)的地址和第i塊內(nèi)存保留區(qū)的大小之和,或者當(dāng)所述第i塊內(nèi)存保留區(qū)的地址大于所述內(nèi)存保留區(qū)的地址和內(nèi)存保留區(qū)的大小之和時,則將所述解析后的配置文件的內(nèi)容注冊到所述內(nèi)存保留區(qū)記錄表中,否則返回注冊空間重疊錯誤。結(jié)合第一方面的第一種可能的實現(xiàn)方式,在第一方面的第三種可能的實現(xiàn)方式中,所述將解析后的配置文件的內(nèi)容注銷到內(nèi)存保留區(qū)記錄表中,包括:根據(jù)注銷接口調(diào)用者提供的注銷內(nèi)存保留區(qū)的參數(shù),與所述內(nèi)存保留區(qū)記錄表中的參數(shù)進(jìn)行匹配;當(dāng)找到匹配項,則刪除所述匹配項的節(jié)點;當(dāng)未找到匹配項,則返回注銷錯誤。結(jié)合第一方面或者第一方面的第一種可能的實現(xiàn)方式或者第一方面的第二種可能的實現(xiàn)方式或者第一方面的第三種可能的實現(xiàn)方式,在第一方面的第四種可能的實現(xiàn)方式中,所述根據(jù)更新后的內(nèi)存保留區(qū)記錄表修改內(nèi)存映射表,包括:調(diào)用所述內(nèi)存保留區(qū)注冊驅(qū)動中的查詢接口,查詢更新后的內(nèi)存保留區(qū)記錄表;根據(jù)更新后的內(nèi)存保留區(qū)記錄表修改內(nèi)存映射表。結(jié)合第一方面的第四種可能的實現(xiàn)方式,在第一方面的第五種可能的實現(xiàn)方式中,所述內(nèi)存保留區(qū)記錄表存儲在非易失性存儲器,并將所述非易失性存儲器分為兩塊,其中一塊用來存儲所述內(nèi)存保留區(qū)記錄表,另一塊用來存儲BIOS代碼。結(jié)合第一方面或者第一方面的第一種可能的實現(xiàn)方式或者第一方面的第二種可能的實現(xiàn)方式或者第一方面的第三種可能的實現(xiàn)方式或者第一方面的第四種可能的實現(xiàn)方式或者第一方面的第五種可能的實現(xiàn)方式,在第一方面的第六種可能的實現(xiàn)方式中,所述方法還包括:調(diào)用所述內(nèi)存保留區(qū)注冊驅(qū)動中的查詢接口,以判斷是否需要清零內(nèi)存。第二方面,一種管理內(nèi)存的裝置,所述裝置包括:下載單元,用于當(dāng)基本輸入輸出系統(tǒng)BIOS啟動時下載內(nèi)存保留區(qū)的配置文件,所述配置文件用于定義所述內(nèi)存保留區(qū);解析單元,用于解析所述配置文件,根據(jù)解析后的配置文件的內(nèi)容更新內(nèi)存保留區(qū)記錄表;修改單元,用于根據(jù)更新后的內(nèi)存保留區(qū)記錄表修改內(nèi)存映射表;發(fā)送單元,用于將修改后的內(nèi)存映射表發(fā)送給OS,使得OS獲取內(nèi)存的使用情況。結(jié)合第二方面,在第二方面的第一種可能的實現(xiàn)方式中,所述解析單元具體用于:解析所述配置文件,調(diào)用內(nèi)存保留區(qū)注冊驅(qū)動中的注冊接口和注銷接口,將解析后的配置文件的內(nèi)容注冊或者注銷到內(nèi)存保留區(qū)記錄表中。結(jié)合第二方面的第一種可能的實現(xiàn)方式,在第二方面的第二種可能的實現(xiàn)方式中,所述解析單元中執(zhí)行步驟將解析后的配置文件的內(nèi)容注冊到內(nèi)存保留區(qū)記錄表中,包括:判斷內(nèi)存保留區(qū)記錄表中的內(nèi)存保留區(qū)是否為已滿;當(dāng)判斷所述內(nèi)存保留區(qū)已滿,則返回存儲已滿;當(dāng)判斷所述內(nèi)存保留區(qū)未滿,則根據(jù)注冊接口調(diào)用者提供的GUID判斷,與所述內(nèi)存保留區(qū)記錄表中的參數(shù)進(jìn)行比較,若有重復(fù),則返回重復(fù)注冊;當(dāng)判斷所述內(nèi)存保留區(qū)無重復(fù),則根據(jù)所述注冊接口調(diào)用者提供的內(nèi)存保留區(qū)的地址和內(nèi)存保留區(qū)的大小,與所述內(nèi)存保留區(qū)記錄表中的參數(shù)進(jìn)行比較,當(dāng)所述內(nèi)存保留區(qū)的地址大于第i塊內(nèi)存保留區(qū)的地址和第i塊內(nèi)存保留區(qū)的大小之和,或者當(dāng)所述第i塊內(nèi)存保留區(qū)的地址大于所述內(nèi)存保留區(qū)的地址和內(nèi)存保留區(qū)的大小之和時,則將所述解析后的配置文件的內(nèi)容注冊到所述內(nèi)存保留區(qū)記錄表中,否則返回注冊空間重疊錯誤。結(jié)合第二方面的第一種可能的實現(xiàn)方式,在第二方面的第三種可能的實現(xiàn)方式中,所述解析單元中執(zhí)行步驟將解析后的配置文件的內(nèi)容注銷到內(nèi)存保留區(qū)記錄表中,包括:根據(jù)注銷接口調(diào)用者提供的注銷內(nèi)存保留區(qū)的參數(shù),與所述內(nèi)存保留區(qū)記錄表中的參數(shù)進(jìn)行匹配;當(dāng)找到匹配項,則刪除所述匹配項的節(jié)點;當(dāng)未找到匹配項,則返回注銷錯誤。結(jié)合第二方面或者第二方面的第一種可能的實現(xiàn)方式或者第二方面的第二種可能的實現(xiàn)方式或者第二方面的第三種可能的實現(xiàn)方式,在第二方面的第四種可能的實現(xiàn)方式中,所述修改單元具體用于:調(diào)用所述內(nèi)存保留區(qū)注冊驅(qū)動中的查詢接口,查詢更新后的內(nèi)存保留區(qū)記錄表;根據(jù)更新后的內(nèi)存保留區(qū)記錄表修改內(nèi)存映射表。結(jié)合第二方面的第四種可能的實現(xiàn)方式,在第二方面的第五種可能的實現(xiàn)方式中,所述內(nèi)存保留區(qū)記錄表存儲在非易失性存儲器,并將所述非易失性存儲器分為兩塊,其中一塊用來存儲所述內(nèi)存保留區(qū)記錄表,另一塊用來存儲BIOS代碼。結(jié)合第二方面或者第二方面的第一種可能的實現(xiàn)方式或者第二方面的第二種可能的實現(xiàn)方式或者第二方面的第三種可能的實現(xiàn)方式或者第二方面的第四種可能的實現(xiàn)方式或者第二方面的第五種可能的實現(xiàn)方式,在第二方面的第六種可能的實現(xiàn)方式中,所述裝置還包括清零單元,所述清零單元用于:調(diào)用所述內(nèi)存保留區(qū)注冊驅(qū)動中的查詢接口,以判斷是否需要清零內(nèi)存。與現(xiàn)有技術(shù)相比,本發(fā)明實施例提供一種管理內(nèi)存的方法,所述方法通過在BIOS啟動時從后臺下載內(nèi)存保留區(qū)的配置文件,解析所述配置文件,并根據(jù)解析后的配置文件的內(nèi)容更新內(nèi)存保留區(qū)記錄表,根據(jù)更新后的內(nèi)存保留區(qū)記錄表修改內(nèi)存映射表,將修改后的內(nèi)存映射表發(fā)送給OS,使得所述OS獲取內(nèi)存的使用情況,從而實現(xiàn)在不升級BIOS的情況下,動態(tài)決定哪些內(nèi)存對OS可用,解決了電信平臺對內(nèi)存靈活使用的要求。為了更清楚地說明本發(fā)明實施例中的技術(shù)方案,下面將對實施例中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1是本發(fā)明實施例提供的一種管理內(nèi)存的方法示意圖;圖2是本發(fā)明實施例提供的一種管理內(nèi)存的方法流程圖;圖3是本發(fā)明實施例提供的一種接口模型;圖4是本發(fā)明實施例提供的一種管理內(nèi)存的裝置結(jié)構(gòu)圖;圖5是本發(fā)明實施例提供的一種管理內(nèi)存的裝置結(jié)構(gòu)圖。具體實施例方式為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下結(jié)合附圖及實施例,對本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。參考圖1,圖1是本發(fā)明實施例提供的一種管理內(nèi)存的方法示意圖。本發(fā)明實施例設(shè)計一種基本輸入輸出系統(tǒng)(BasicInputOutputSystem,BIOS)啟動過程中動態(tài)注冊或者注銷內(nèi)存保留區(qū)的機(jī)制。內(nèi)存保留區(qū)記錄表存放在非易失性存儲器上,這個存儲器可以與存放BIOS代碼的存儲器屬于同一個存儲器,也可以在不同的存儲器上,優(yōu)先考慮存放所述內(nèi)存保留區(qū)記錄表的存儲器和存放BIOS代碼的存儲器屬于不同的存儲器,如一般BIOS代碼存放在串行外設(shè)接口(SerialPeripheralInterface,SPI)flash,內(nèi)存保留區(qū)記錄表放在非或Norflash,這樣設(shè)計是出于對BIOS文件安全性的考慮,因為所述內(nèi)存保留區(qū)記錄表會被修改,如果修改的時候斷電,有可能會破壞BIOS代碼,所以優(yōu)先考慮將所述內(nèi)存保留區(qū)記錄表和BIOS代碼存放在不同的介質(zhì)中。所述方法包括如下步驟:UBIOS啟動過程中從后臺下載到內(nèi)存保留的配置文件;其中,所述配置文件包括存放臨終遺言數(shù)據(jù)內(nèi)存的信息、存放日志記錄數(shù)據(jù)內(nèi)存的信息等。2、解析配置文件后,調(diào)用內(nèi)存保留區(qū)注冊驅(qū)動中的注冊接口或注銷接口,將不同功用的內(nèi)存保留區(qū)的信息注冊或注銷到內(nèi)存保留區(qū)記錄表中;3、在啟動OS前,BIOS調(diào)用內(nèi)存保留區(qū)注冊驅(qū)動中的查詢接口,查詢到當(dāng)前內(nèi)存存儲的內(nèi)存保留區(qū)記錄表,同步修改內(nèi)存映射表;4、OS根據(jù)所述內(nèi)存映射表,知道當(dāng)前系統(tǒng)的內(nèi)存使用情況;5、同時BIOS下內(nèi)存清零模塊也可調(diào)用內(nèi)存保留區(qū)注冊驅(qū)動中的查詢接口,來決定在引導(dǎo)OS前哪些內(nèi)存需要清零,哪些不需要清零。參考圖2,圖2是本發(fā)明實施例提供的一種管理內(nèi)存的方法流程圖。如圖2所示,所述方法包括以下步驟:步驟201,當(dāng)基本輸入輸出系統(tǒng)BIOS啟動時下載內(nèi)存保留區(qū)的配置文件,所述配置文件用于定義所述內(nèi)存保留區(qū);BIOS啟動時,從后臺下載內(nèi)存保留區(qū)的配置文件,所述配置文件用于定義所述內(nèi)存保留區(qū)。步驟202,解析所述配置文件,根據(jù)解析后的配置文件的內(nèi)容更新內(nèi)存保留區(qū)記錄表;本步驟中,所述解析所述配置文件,根據(jù)解析后的配置文件的內(nèi)容更新內(nèi)存保留區(qū)記錄表,包括:解析所述配置文件,調(diào)用內(nèi)存保留區(qū)注冊驅(qū)動中的注冊接口和注銷接口,將解析后的配置文件的內(nèi)容注冊或者注銷到內(nèi)存保留區(qū)記錄表中??蛇x地,所述將解析后的配置文件的內(nèi)容注冊到內(nèi)存保留區(qū)記錄表中,包括:判斷內(nèi)存保留區(qū)記錄表中的內(nèi)存保留區(qū)是否為已滿;當(dāng)判斷所述內(nèi)存保留區(qū)已滿,則返回存儲已滿;當(dāng)判斷所述內(nèi)存保留區(qū)未滿,則根據(jù)注冊接口調(diào)用者提供的全局唯一標(biāo)識符(GloballyUniqueIdentifier,⑶ID)判斷,與所述內(nèi)存保留區(qū)記錄表中的參數(shù)進(jìn)行比較,若有重復(fù),則返回重復(fù)注冊;當(dāng)判斷所述內(nèi)存保留區(qū)無重復(fù),則根據(jù)所述注冊接口調(diào)用者提供的內(nèi)存保留區(qū)的地址和內(nèi)存保留區(qū)的大小,與所述內(nèi)存保留區(qū)記錄表中的參數(shù)進(jìn)行比較,當(dāng)所述內(nèi)存保留區(qū)的地址大于第i塊內(nèi)存保留區(qū)的地址和第i塊內(nèi)存保留區(qū)的大小之和,或者當(dāng)所述第i塊內(nèi)存保留區(qū)的地址大于所述內(nèi)存保留區(qū)的地址和內(nèi)存保留區(qū)的大小之和時,則將所述解析后的配置文件的內(nèi)容注冊到所述內(nèi)存保留區(qū)記錄表中,否則返回注冊空間重疊錯誤。其中,若根據(jù)注冊接口調(diào)用者提供的GUID和所述內(nèi)存保留區(qū)記錄表中的GUID參數(shù)進(jìn)行比較,若⑶ID參數(shù)一致,則通知注冊接口調(diào)用者當(dāng)前⑶ID已存在內(nèi)存保留區(qū)中,不允許調(diào)用者復(fù)疊注冊。參考圖3,圖3是本發(fā)明實施例提供的一種接口模型。如圖3所示,在預(yù)初始化階段(Pre-EF1-1nitialization,PEI)階段,注冊步驟如下:1、將所述內(nèi)存保留區(qū)域表由flash導(dǎo)到傳遞模塊(hand-offblocks,Hob)中,判斷所述內(nèi)存保留區(qū)域表的內(nèi)存保留區(qū)數(shù)量是否已滿,如果是則返回存儲已滿,否則執(zhí)行步驟302;2、根據(jù)接口調(diào)用者提供的保留區(qū)⑶ID,與所述Hob中的內(nèi)存保留區(qū)記錄表的參數(shù)進(jìn)行比較,如果重復(fù),返回重復(fù)注冊。如果沒有重復(fù),則執(zhí)行步驟303;3、根據(jù)接口調(diào)用者提供的內(nèi)存保留區(qū)的地址和內(nèi)存保留區(qū)大小,與所述Hob中的內(nèi)存保留記錄表的參數(shù)進(jìn)行比較,只有在滿足下面兩種情況下,才執(zhí)行步驟304,否則返回注冊空間重疊錯誤;An+l>Ai+LiAi>An+l+Ln+l其中,0<i〈=n,n+l〈=最大保留區(qū)數(shù)量,η表示所述hob中已經(jīng)存儲的內(nèi)存保留區(qū)數(shù)量,Ai表示第i塊內(nèi)存保留區(qū)地址,Li表示第i塊內(nèi)存保留區(qū)大小;4、將新增的內(nèi)存保留區(qū)的參數(shù)添加到所述Hob中的內(nèi)存保留記錄表中。可選地,所述將解析后的配置文件的內(nèi)容注銷到內(nèi)存保留區(qū)記錄表中,包括:根據(jù)注銷接口調(diào)用者提供的注銷內(nèi)存保留區(qū)的參數(shù),與所述內(nèi)存保留區(qū)記錄表中的參數(shù)進(jìn)行匹配;當(dāng)找到匹配項,則刪除所述匹配項的節(jié)點;當(dāng)未找到匹配項,則返回注銷錯誤。參考圖3,注銷步驟如下:根據(jù)接口調(diào)用者提供的需要注銷內(nèi)存保留區(qū)的參數(shù)跟存儲在Hob中的內(nèi)存保留區(qū)記錄表中的參數(shù)中進(jìn)行匹配,存儲在Hob中的內(nèi)存保留區(qū)記錄表中的所有參數(shù)都必須參入匹配,如果找到匹配項,刪除該匹配項的節(jié)點;如果找不到則返回錯誤。其中,內(nèi)存保留區(qū)記錄表中存儲的數(shù)據(jù)是多個相同結(jié)構(gòu)的數(shù)據(jù)塊,所述節(jié)點是指其中一個數(shù)據(jù)庫。步驟203,根據(jù)所述內(nèi)存保留區(qū)記錄表修改內(nèi)存映射表;可選地,所述根據(jù)更新后的內(nèi)存保留區(qū)記錄表修改內(nèi)存映射表,包括:調(diào)用所述內(nèi)存保留區(qū)注冊驅(qū)動中的查詢接口,查詢更新后的內(nèi)存保留區(qū)記錄表;根據(jù)更新后的內(nèi)存保留區(qū)記錄表修改內(nèi)存映射表。參考圖3,查詢步驟如下:1、根據(jù)接口調(diào)用者提供的內(nèi)存保留區(qū)的參數(shù)跟存儲在Hob中的內(nèi)存保留區(qū)記錄表中的參數(shù)進(jìn)行匹配,如果找到匹配項,返回該匹配項的所有參數(shù)信息及匹配項數(shù),所述參數(shù)信息是指數(shù)據(jù)塊的內(nèi)容,所述匹配項數(shù)是指數(shù)據(jù)塊的個數(shù);如果找不到則返回錯誤;2、同時所述查詢接口中還提供全部查詢功能,上述步驟查詢結(jié)果中輸入的全部參數(shù)均返回為錯誤時,則給出所述內(nèi)存保留區(qū)記錄表的全部參數(shù)信息和總項數(shù)。如圖3所示,在驅(qū)動執(zhí)行壞境(DriverExacutiionEnvironment,DXE)階段,注冊、注銷和查詢接口基本功能與PEI階段相同,唯一的區(qū)別是DXE階段每調(diào)用一次注冊、注銷接口,都會將存儲Hob中內(nèi)存保留區(qū)記錄表實時更新到flash中。其中,所述內(nèi)存保留區(qū)記錄表存儲在非易失性存儲器nonvolatileram,并將所述非易失性存儲器分為兩塊,其中一塊用來存儲所述內(nèi)存保留區(qū)記錄表,另一塊用來存儲BIOS代碼。步驟204,將修改后的內(nèi)存映射表發(fā)送給OS,使得所述OS獲取內(nèi)存的使用情況。作為一種可優(yōu)選的實施例,所述方法還包括:調(diào)用所述內(nèi)存保留區(qū)注冊驅(qū)動中的查詢接口,以判斷是否需要清零內(nèi)存。本發(fā)明實施例提供一種管理內(nèi)存的方法,所述方法通過在BIOS啟動時從后臺下載內(nèi)存保留區(qū)的配置文件,解析所述配置文件,并根據(jù)解析后的配置文件的內(nèi)容更新內(nèi)存保留區(qū)記錄表,根據(jù)更新后的內(nèi)存保留區(qū)記錄表修改內(nèi)存映射表,將修改后的內(nèi)存映射表發(fā)送給OS,使得所述OS獲取內(nèi)存的使用情況,從而實現(xiàn)在不升級BIOS的情況下,動態(tài)決定哪些內(nèi)存對OS可用,解決了電信平臺對內(nèi)存靈活使用的要求。參考圖4,圖4是本發(fā)明實施例提供的一種管理內(nèi)存的裝置結(jié)構(gòu)圖。如圖4所示,所述裝置包括如下單元:下載單元401,用于當(dāng)基本輸入輸出系統(tǒng)BIOS啟動時下載內(nèi)存保留區(qū)的配置文件,所述配置文件用于定義所述內(nèi)存保留區(qū);BIOS啟動時,從后臺下載內(nèi)存保留區(qū)的配置文件,所述配置文件用于定義所述內(nèi)存保留區(qū)。解析單元402,用于解析所述配置文件,根據(jù)解析后的配置文件的內(nèi)容更新內(nèi)存保留區(qū)記錄表;可選地,所述解析單元402具體用于:解析所述配置文件,調(diào)用內(nèi)存保留區(qū)注冊驅(qū)動中的注冊接口和注銷接口,將解析后的配置文件的內(nèi)容注冊或者注銷到內(nèi)存保留區(qū)記錄表中??蛇x地,所述解析單元402中執(zhí)行步驟將解析后的配置文件的內(nèi)容注冊到內(nèi)存保留區(qū)記錄表中,包括:判斷內(nèi)存保留區(qū)記錄表中的內(nèi)存保留區(qū)是否為已滿;當(dāng)判斷所述內(nèi)存保留區(qū)已滿,則返回存儲已滿;當(dāng)判斷所述內(nèi)存保留區(qū)未滿,則根據(jù)注冊接口調(diào)用者提供的GUID判斷,與所述內(nèi)存保留區(qū)記錄表中的參數(shù)進(jìn)行比較,若有重復(fù),則返回重復(fù)注冊;當(dāng)判斷所述內(nèi)存保留區(qū)無重復(fù),則根據(jù)所述注冊接口調(diào)用者提供的內(nèi)存保留區(qū)的地址和內(nèi)存保留區(qū)的大小,與所述內(nèi)存保留區(qū)記錄表中的參數(shù)進(jìn)行比較,當(dāng)所述內(nèi)存保留區(qū)的地址大于第i塊內(nèi)存保留區(qū)的地址和第i塊內(nèi)存保留區(qū)的大小之和,或者當(dāng)所述第i塊內(nèi)存保留區(qū)的地址大于所述內(nèi)存保留區(qū)的地址和內(nèi)存保留區(qū)的大小之和時,則將所述解析后的配置文件的內(nèi)容注冊到所述內(nèi)存保留區(qū)記錄表中,否則返回注冊空間重疊錯誤。參考圖3,圖3是本發(fā)明實施例提供的一種接口模型。如圖3所示,在PEI階段,注冊步驟如下:1、判斷所述內(nèi)存保留區(qū)域表的內(nèi)存保留區(qū)數(shù)量是否已滿,如果是則返回存儲已滿,否則執(zhí)行步驟302;2、根據(jù)接口調(diào)用者提供的保留區(qū)⑶ID,與所述Hob中的內(nèi)存保留區(qū)記錄表的參數(shù)進(jìn)行比較,如果重復(fù),返回重復(fù)注冊。如果沒有重復(fù),則執(zhí)行步驟303;3、根據(jù)接口調(diào)用者提供的內(nèi)存保留區(qū)的地址和內(nèi)存保留區(qū)大小,與所述Hob中的內(nèi)存保留記錄表的參數(shù)進(jìn)行比較,只有在滿足下面兩種情況下,才執(zhí)行步驟304,否則返回注冊空間重疊錯誤;An+l>Ai+LiAi>An+l+Ln+l其中,0<i<=n,n+l<=最大保留區(qū)數(shù)量,η表示所述hob中已經(jīng)存儲的內(nèi)存保留區(qū)數(shù)量,Ai表示第i塊內(nèi)存保留區(qū)地址,Li表示第i塊內(nèi)存保留區(qū)大小;4、將新增的內(nèi)存保留區(qū)的參數(shù)添加到所述Hob中的內(nèi)存保留記錄表中。可選地,所述解析單元402中執(zhí)行步驟將解析后的配置文件的內(nèi)容注銷到內(nèi)存保留區(qū)記錄表中,包括:根據(jù)注銷接口調(diào)用者提供的注銷內(nèi)存保留區(qū)的參數(shù),與所述內(nèi)存保留區(qū)記錄表中的參數(shù)進(jìn)行匹配;當(dāng)找到匹配項,則刪除所述匹配項的節(jié)點;當(dāng)未找到匹配項,則返回注銷錯誤。參考圖3,注銷步驟如下:根據(jù)接口調(diào)用者提供的需要注銷內(nèi)存保留區(qū)的參數(shù)跟存儲在Hob中的內(nèi)存保留區(qū)記錄表中的參數(shù)中進(jìn)行匹配,存儲在Hob中的內(nèi)存保留區(qū)記錄表中的所有參數(shù)都必須參入匹配,如果找到匹配項,刪除該匹配項的節(jié)點;如果找不到則返回錯誤。修改單元403,用于根據(jù)更新后的內(nèi)存保留區(qū)記錄表修改內(nèi)存映射表;可選地,所述修改單元403具體用于:調(diào)用所述內(nèi)存保留區(qū)注冊驅(qū)動中的查詢接口,查詢更新后的內(nèi)存保留區(qū)記錄表;根據(jù)更新后的內(nèi)存保留區(qū)記錄表修改內(nèi)存映射表。參考圖3,查詢步驟如下:1、根據(jù)接口調(diào)用者提供的內(nèi)存保留區(qū)的參數(shù)跟存儲在Hob中的內(nèi)存保留區(qū)記錄表中的參數(shù)進(jìn)行匹配,如果找到匹配項,返回該匹配項的所有參數(shù)信息及匹配項數(shù);如果找不到則返回錯誤;2、同時所述查詢接口中還提供全部查詢功能,上述步驟查詢結(jié)果中輸入的全部參數(shù)均返回為錯誤時,則給出所述內(nèi)存保留區(qū)記錄表的全部參數(shù)信息和總項數(shù)。如圖3所示,在DXE階段,注冊、注銷和查詢接口基本功能與PEI階段相同,唯一的區(qū)別是DXE階段每調(diào)用一次注冊、注銷接口,都會將存儲Hob中內(nèi)存保留區(qū)記錄表實時更新到flash中ο其中,所述內(nèi)存保留區(qū)記錄表存儲在非易失性存儲器,并將所述非易失性存儲器分為兩塊,其中一塊用來存儲所述內(nèi)存保留區(qū)記錄表,另一塊用來存儲BIOS代碼。發(fā)送單元404,用于將修改后的內(nèi)存映射表發(fā)送給OS,使得OS獲取內(nèi)存的使用情況。作為一種可選的實施例,所述裝置還包括清零單元405,所述清零單元405用于:調(diào)用所述內(nèi)存保留區(qū)注冊驅(qū)動中的查詢接口,以判斷是否需要清零內(nèi)存。本發(fā)明實施例提供一種管理內(nèi)存的裝置,所述裝置通過在BIOS啟動時從后臺下載內(nèi)存保留區(qū)的配置文件,解析所述配置文件,并根據(jù)解析后的配置文件的內(nèi)容更新內(nèi)存保留區(qū)記錄表,根據(jù)更新后的內(nèi)存保留區(qū)記錄表修改內(nèi)存映射表,將修改后的內(nèi)存映射表發(fā)送給OS,使得所述OS獲取內(nèi)存的使用情況,從而實現(xiàn)在不升級BIOS的情況下,動態(tài)決定哪些內(nèi)存對OS可用,解決了電信平臺對內(nèi)存靈活使用的要求。圖5是本發(fā)明實施例提供的一種管理內(nèi)存的裝置結(jié)構(gòu)圖。參考圖5,圖5是本發(fā)明實施例提供的一種管理內(nèi)存的裝置500,本發(fā)明具體實施例并不對所述管理內(nèi)存的裝置的具體實現(xiàn)做限定。所述管理內(nèi)存的裝置500包括:處理器(processor)5Ol,通信接口(CommunicationsInterface)5O2,存儲器(memory)503,總線504。處理器501,通信接口502,存儲器503通過總線504完成相互間的通信。通信接口502,用于與其他設(shè)備進(jìn)行通信;處理器501,用于執(zhí)行程序。具體地,程序可以包括程序代碼,所述程序代碼包括計算機(jī)操作指令。處理器501可能是一個中央處理器CPU,或者是特定集成電路ASIC(ApplicationSpecificIntegratedCircuit),或者是被配置成實施本發(fā)明實施例的一個或多個集成電路。存儲器503,用于存放程序。存儲器503可能包含高速RAM存儲器,也可能還包括非易失性存儲器(non-volatilememory),例如至少一個磁盤存儲器。程序具體可以包括:當(dāng)基本輸入輸出系統(tǒng)BIOS啟動時下載內(nèi)存保留區(qū)的配置文件,所述配置文件用于定義所述內(nèi)存保留區(qū);解析所述配置文件,根據(jù)解析后的配置文件的內(nèi)容更新內(nèi)存保留區(qū)記錄表;根據(jù)更新后的內(nèi)存保留區(qū)記錄表修改內(nèi)存映射表;將修改后的內(nèi)存映射表發(fā)送給OS,使得所述OS獲取內(nèi)存的使用情況。所述解析所述配置文件,根據(jù)解析后的配置文件的內(nèi)容更新內(nèi)存保留區(qū)記錄表,包括:解析所述配置文件,調(diào)用內(nèi)存保留區(qū)注冊驅(qū)動中的注冊接口和注銷接口,將解析后的配置文件的內(nèi)容注冊或者注銷到內(nèi)存保留區(qū)記錄表中。所述將解析后的配置文件的內(nèi)容注冊到內(nèi)存保留區(qū)記錄表中,包括:判斷內(nèi)存保留區(qū)記錄表中的內(nèi)存保留區(qū)是否為已滿;當(dāng)判斷所述內(nèi)存保留區(qū)已滿,則返回存儲已滿;當(dāng)判斷所述內(nèi)存保留區(qū)未滿,則根據(jù)注冊接口調(diào)用者提供的GUID判斷,與所述內(nèi)存保留區(qū)記錄表中的參數(shù)進(jìn)行比較,若有重復(fù),則返回重復(fù)注冊;當(dāng)判斷所述內(nèi)存保留區(qū)無重復(fù),則根據(jù)所述注冊接口調(diào)用者提供的內(nèi)存保留區(qū)的地址和內(nèi)存保留區(qū)的大小,與所述內(nèi)存保留區(qū)記錄表中的參數(shù)進(jìn)行比較,當(dāng)所述內(nèi)存保留區(qū)的地址大于第i塊內(nèi)存保留區(qū)的地址和第i塊內(nèi)存保留區(qū)的大小之和,或者當(dāng)所述第i塊內(nèi)存保留區(qū)的地址大于所述內(nèi)存保留區(qū)的地址和內(nèi)存保留區(qū)的大小之和時,則將所述解析后的配置文件的內(nèi)容注冊到所述內(nèi)存保留區(qū)記錄表中,否則返回注冊空間重疊錯誤。所述將解析后的配置文件的內(nèi)容注銷到內(nèi)存保留區(qū)記錄表中,包括:根據(jù)注銷接口調(diào)用者提供的注銷內(nèi)存保留區(qū)的參數(shù),與所述內(nèi)存保留區(qū)記錄表中的參數(shù)進(jìn)行匹配;當(dāng)找到匹配項,則刪除所述匹配項的節(jié)點;當(dāng)未找到匹配項,則返回注銷錯誤。所述根據(jù)更新后的內(nèi)存保留區(qū)記錄表修改內(nèi)存映射表,包括:調(diào)用所述內(nèi)存保留區(qū)注冊驅(qū)動中的查詢接口,查詢更新后的內(nèi)存保留區(qū)記錄表;根據(jù)更新后的內(nèi)存保留區(qū)記錄表修改內(nèi)存映射表。所述內(nèi)存保留區(qū)記錄表存儲在非易失性存儲器,并將所述非易失性存儲器分為兩塊,其中一塊用來存儲所述內(nèi)存保留區(qū)記錄表,另一塊用來存儲BIOS代碼。所述方法還包括:調(diào)用所述內(nèi)存保留區(qū)注冊驅(qū)動中的查詢接口,以判斷是否需要清零內(nèi)存。以上所述僅為本發(fā)明的優(yōu)選實施方式,并不構(gòu)成對本發(fā)明保護(hù)范圍的限定。任何在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明要求包含范圍之內(nèi)。權(quán)利要求1.一種管理內(nèi)存的方法,其特征在于,所述方法包括:當(dāng)基本輸入輸出系統(tǒng)BIOS啟動時下載內(nèi)存保留區(qū)的配置文件,所述配置文件用于定義所述內(nèi)存保留區(qū);解析所述配置文件,根據(jù)解析后的配置文件的內(nèi)容更新內(nèi)存保留區(qū)記錄表;根據(jù)更新后的內(nèi)存保留區(qū)記錄表修改內(nèi)存映射表;將修改后的內(nèi)存映射表發(fā)送給操作系統(tǒng)(OperatingSystem,OS),使得所述OS獲取內(nèi)存的使用情況。2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述解析所述配置文件,根據(jù)解析后的配置文件的內(nèi)容更新內(nèi)存保留區(qū)記錄表,包括:解析所述配置文件,調(diào)用內(nèi)存保留區(qū)注冊驅(qū)動中的注冊接口和注銷接口,將解析后的配置文件的內(nèi)容注冊或者注銷到內(nèi)存保留區(qū)記錄表中。3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述將解析后的配置文件的內(nèi)容注冊到內(nèi)存保留區(qū)記錄表中,包括:判斷內(nèi)存保留區(qū)記錄表中的內(nèi)存保留區(qū)是否為已滿;當(dāng)判斷所述內(nèi)存保留區(qū)已滿,則返回存儲已滿;當(dāng)判斷所述內(nèi)存保留區(qū)未滿,則根據(jù)注冊接口調(diào)用者提供的GUID判斷,與所述內(nèi)存保留區(qū)記錄表中的參數(shù)進(jìn)行比較,若有重復(fù),則返回重復(fù)注冊;當(dāng)判斷所述內(nèi)存保留區(qū)無重復(fù),則根據(jù)所述注冊接口調(diào)用者提供的內(nèi)存保留區(qū)的地址和內(nèi)存保留區(qū)的大小,與所述內(nèi)存保留區(qū)記錄表中的參數(shù)進(jìn)行比較,當(dāng)所述內(nèi)存保留區(qū)的地址大于第i塊內(nèi)存保留區(qū)的地址和第i塊內(nèi)存保留區(qū)的大小之和,或者當(dāng)所述第i塊內(nèi)存保留區(qū)的地址大于所述內(nèi)存保留區(qū)的地址和內(nèi)存保留區(qū)的大小之和時,則將所述解析后的配置文件的內(nèi)容注冊到所述內(nèi)存保留區(qū)記錄表中,否則返回注冊空間重疊錯誤。4.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述將解析后的配置文件的內(nèi)容注銷到內(nèi)存保留區(qū)記錄表中,包括:根據(jù)注銷接口調(diào)用者提供的注銷內(nèi)存保留區(qū)的參數(shù),與所述內(nèi)存保留區(qū)記錄表中的參數(shù)進(jìn)行匹配;當(dāng)找到匹配項,則刪除所述匹配項的節(jié)點;當(dāng)未找到匹配項,則返回注銷錯誤。5.根據(jù)權(quán)利要求1-4任意一項所述的方法,其特征在于,所述根據(jù)更新后的內(nèi)存保留區(qū)記錄表修改內(nèi)存映射表,包括:調(diào)用所述內(nèi)存保留區(qū)注冊驅(qū)動中的查詢接口,查詢更新后的內(nèi)存保留區(qū)記錄表;根據(jù)更新后的內(nèi)存保留區(qū)記錄表修改內(nèi)存映射表。6.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述內(nèi)存保留區(qū)記錄表存儲在非易失性存儲器,并將所述非易失性存儲器分為兩塊,其中一塊用來存儲所述內(nèi)存保留區(qū)記錄表,另一塊用來存儲BIOS代碼。7.根據(jù)權(quán)利要求1-6任意一項所述的方法,其特征在于,所述方法還包括:調(diào)用所述內(nèi)存保留區(qū)注冊驅(qū)動中的查詢接口,以判斷是否需要清零內(nèi)存。8.—種管理內(nèi)存的裝置,其特征在于,所述裝置包括:下載單元,用于當(dāng)基本輸入輸出系統(tǒng)BIOS啟動時下載內(nèi)存保留區(qū)的配置文件,所述配置文件用于定義所述內(nèi)存保留區(qū);解析單元,用于解析所述配置文件,根據(jù)解析后的配置文件的內(nèi)容更新內(nèi)存保留區(qū)記錄表;修改單元,用于根據(jù)更新后的內(nèi)存保留區(qū)記錄表修改內(nèi)存映射表;發(fā)送單元,用于將修改后的內(nèi)存映射表發(fā)送給OS,使得OS獲取內(nèi)存的使用情況。9.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述解析單元具體用于:解析所述配置文件,調(diào)用內(nèi)存保留區(qū)注冊驅(qū)動中的注冊接口和注銷接口,將解析后的配置文件的內(nèi)容注冊或者注銷到內(nèi)存保留區(qū)記錄表中。10.根據(jù)權(quán)利要求9所述的裝置,其特征在于,所述解析單元中執(zhí)行步驟將解析后的配置文件的內(nèi)容注冊到內(nèi)存保留區(qū)記錄表中,包括:判斷內(nèi)存保留區(qū)記錄表中的內(nèi)存保留區(qū)是否為已滿;當(dāng)判斷所述內(nèi)存保留區(qū)已滿,則返回存儲已滿;當(dāng)判斷所述內(nèi)存保留區(qū)未滿,則根據(jù)注冊接口調(diào)用者提供的GUID判斷,與所述內(nèi)存保留區(qū)記錄表中的參數(shù)進(jìn)行比較,若有重復(fù),則返回重復(fù)注冊;當(dāng)判斷所述內(nèi)存保留區(qū)無重復(fù),則根據(jù)所述注冊接口調(diào)用者提供的內(nèi)存保留區(qū)的地址和內(nèi)存保留區(qū)的大小,與所述內(nèi)存保留區(qū)記錄表中的參數(shù)進(jìn)行比較,當(dāng)所述內(nèi)存保留區(qū)的地址大于第i塊內(nèi)存保留區(qū)的地址和第i塊內(nèi)存保留區(qū)的大小之和,或者當(dāng)所述第i塊內(nèi)存保留區(qū)的地址大于所述內(nèi)存保留區(qū)的地址和內(nèi)存保留區(qū)的大小之和時,則將所述解析后的配置文件的內(nèi)容注冊到所述內(nèi)存保留區(qū)記錄表中,否則返回注冊空間重疊錯誤。11.根據(jù)權(quán)利要求9所述的裝置,其特征在于,所述解析單元中執(zhí)行步驟將解析后的配置文件的內(nèi)容注銷到內(nèi)存保留區(qū)記錄表中,包括:根據(jù)注銷接口調(diào)用者提供的注銷內(nèi)存保留區(qū)的參數(shù),與所述內(nèi)存保留區(qū)記錄表中的參數(shù)進(jìn)行匹配;當(dāng)找到匹配項,則刪除所述匹配項的節(jié)點;當(dāng)未找到匹配項,則返回注銷錯誤。12.根據(jù)權(quán)利要求8-11任意一項所述的裝置,其特征在于,所述修改單元具體用于:調(diào)用所述內(nèi)存保留區(qū)注冊驅(qū)動中的查詢接口,查詢更新后的內(nèi)存保留區(qū)記錄表;根據(jù)更新后的內(nèi)存保留區(qū)記錄表修改內(nèi)存映射表。13.根據(jù)權(quán)利要求12所述的裝置,其特征在于,所述內(nèi)存保留區(qū)記錄表存儲在非易失性存儲器,并將所述非易失性存儲器分為兩塊,其中一塊用來存儲所述內(nèi)存保留區(qū)記錄表,另一塊用來存儲BIOS代碼。14.根據(jù)權(quán)利要求8-13任意一項所述的裝置,其特征在于,所述裝置還包括清零單元,所述清零單元用于:調(diào)用所述內(nèi)存保留區(qū)注冊驅(qū)動中的查詢接口,以判斷是否需要清零內(nèi)存。全文摘要本發(fā)明實施例公開一種管理內(nèi)存的方法及裝置,所述方法通過在BIOS啟動時從后臺下載內(nèi)存保留區(qū)的配置文件,解析所述配置文件,并根據(jù)解析后的配置文件的內(nèi)容更新內(nèi)存保留區(qū)記錄表,根據(jù)更新后的內(nèi)存保留區(qū)記錄表修改內(nèi)存映射表,將修改后的內(nèi)存映射表發(fā)送給OS,使得所述OS獲取內(nèi)存的使用情況,從而實現(xiàn)在不升級BIOS的情況下,動態(tài)決定哪些內(nèi)存對OS可用,解決了電信平臺對內(nèi)存靈活使用的要求。文檔編號G06F17/30GK103176915SQ20131010482公開日2013年6月26日申請日期2013年3月28日優(yōu)先權(quán)日2013年3月28日發(fā)明者楊麗萍,龔彬陽,徐志剛申請人:華為技術(shù)有限公司