本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,特別是涉及一種針對(duì)存儲(chǔ)軟件的內(nèi)存分配方法及裝置。
背景技術(shù):
在傳統(tǒng)的軟件設(shè)計(jì)中,應(yīng)用軟件的內(nèi)存完全交由操作系統(tǒng)來(lái)管理,這樣帶來(lái)的一個(gè)問(wèn)題是,當(dāng)某個(gè)應(yīng)用軟件設(shè)計(jì)不合理,比如內(nèi)存泄漏等原因,會(huì)消耗大量?jī)?nèi)存,導(dǎo)致其他應(yīng)用軟件運(yùn)行緩慢,甚至導(dǎo)致整個(gè)系統(tǒng)崩潰。由于所有內(nèi)存都是由操作系統(tǒng)分配管理,所以一旦出現(xiàn)這種問(wèn)題,也很難跟蹤和調(diào)試。存儲(chǔ)軟件是應(yīng)用軟件中的一種,在存儲(chǔ)軟件中,系統(tǒng)的穩(wěn)定性尤為重要,而內(nèi)存的使用又是重中之重。因此,如何管理好存儲(chǔ)軟件內(nèi)存的使用,就是一個(gè)很大的課題。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的是提供一種針對(duì)存儲(chǔ)軟件的內(nèi)存分配方法及裝置,用于管理存儲(chǔ)軟件內(nèi)存的使用,以提高操作系統(tǒng)的可靠性和降低操作系統(tǒng)的故障機(jī)率。另外,當(dāng)出現(xiàn)問(wèn)題時(shí),能夠快速定位。
為解決上述技術(shù)問(wèn)題,本發(fā)明提供一種針對(duì)存儲(chǔ)軟件的內(nèi)存分配方法,包括:
在操作系統(tǒng)啟動(dòng)時(shí),預(yù)先保留預(yù)定大小的系統(tǒng)內(nèi)存,并將所述系統(tǒng)內(nèi)存映射到用戶(hù)空間;
獲取所述存儲(chǔ)軟件中包含的功能模塊的數(shù)量,以及每個(gè)功能模塊所需的內(nèi)存空間;
記錄所述功能模塊與所需的內(nèi)存空間的對(duì)應(yīng)關(guān)系;
其中,所述系統(tǒng)內(nèi)存的空間大于或等于全部所述功能模塊所需的內(nèi)存空間。
優(yōu)選地,具體通過(guò)文件記錄所述功能模塊與所需的內(nèi)存空間的對(duì)應(yīng)關(guān)系。
優(yōu)選地,還包括:當(dāng)所述功能模塊所需的內(nèi)存空間發(fā)生變化時(shí),更新所述對(duì)應(yīng)關(guān)系。
優(yōu)選地,在更新所述對(duì)應(yīng)關(guān)系之后還包括:輸出重新啟動(dòng)所述操作系統(tǒng)的提示信息。
為解決上述技術(shù)問(wèn)題,本發(fā)明提供一種針對(duì)存儲(chǔ)軟件的內(nèi)存分配裝置,包括:
映射單元,用于在操作系統(tǒng)啟動(dòng)時(shí),預(yù)先保留預(yù)定大小的系統(tǒng)內(nèi)存,并將所述系統(tǒng)內(nèi)存映射到用戶(hù)空間;
獲取單元,用于獲取所述存儲(chǔ)軟件中包含的功能模塊的數(shù)量,以及每個(gè)功能模塊所需的內(nèi)存空間;
記錄單元,用于記錄所述功能模塊與所需的內(nèi)存空間的對(duì)應(yīng)關(guān)系;
其中,所述系統(tǒng)內(nèi)存的空間大于或等于全部所述功能模塊所需的內(nèi)存空間。
優(yōu)選地,所述記錄單元具體通過(guò)文件記錄所述功能模塊與所需的內(nèi)存空間的對(duì)應(yīng)關(guān)系。
優(yōu)選地,記錄單元,還用于當(dāng)所述功能模塊所需的內(nèi)存空間發(fā)生變化時(shí),更新所述對(duì)應(yīng)關(guān)系。
優(yōu)選地,還包括:提示單元,用于在更新所述對(duì)應(yīng)關(guān)系之后輸出重新啟動(dòng)所述操作系統(tǒng)的提示信息。
本發(fā)明所提供的本發(fā)明實(shí)施例提供的針對(duì)存儲(chǔ)軟件的內(nèi)存分配方法及裝置,包括:在操作系統(tǒng)啟動(dòng)時(shí),預(yù)先保留預(yù)定大小的系統(tǒng)內(nèi)存,并將系統(tǒng)內(nèi)存映射到用戶(hù)空間;獲取存儲(chǔ)軟件中包含的功能模塊的數(shù)量,以及每個(gè)功能模塊所需的內(nèi)存空間;記錄功能模塊與所需的內(nèi)存空間的對(duì)應(yīng)關(guān)系。通過(guò)上述方法,將預(yù)定大小的系統(tǒng)內(nèi)存映射到用戶(hù)空間使得該部分系統(tǒng)內(nèi)存不被操作系統(tǒng)管理,因此即使存儲(chǔ)軟件對(duì)應(yīng)的系統(tǒng)內(nèi)存發(fā)生泄漏等問(wèn)題時(shí),不會(huì)影響整個(gè)操作系統(tǒng)的正常運(yùn)行,提高了操作系統(tǒng)的可靠性,降低了操作系統(tǒng)的故障機(jī)率。另外,存儲(chǔ)軟件的功能模塊具有單獨(dú)的系統(tǒng)內(nèi)存,因此當(dāng)出現(xiàn)問(wèn)題時(shí),能夠快速定位。
附圖說(shuō)明
為了更清楚地說(shuō)明本發(fā)明實(shí)施例,下面將對(duì)實(shí)施例中所需要使用的附圖做簡(jiǎn)單的介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明實(shí)施例提供的一種針對(duì)存儲(chǔ)軟件的內(nèi)存分配方法的流程圖;
圖2為本發(fā)明實(shí)施例提供的一種針對(duì)存儲(chǔ)軟件的內(nèi)存分配裝置的結(jié)構(gòu)圖。
具體實(shí)施方式
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下,所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)范圍。
本發(fā)明的核心是提供一種針對(duì)存儲(chǔ)軟件的內(nèi)存分配方法及裝置。
為了使本技術(shù)領(lǐng)域的人員更好地理解本發(fā)明方案,下面結(jié)合附圖和具體實(shí)施方式對(duì)本發(fā)明作進(jìn)一步的詳細(xì)說(shuō)明。
圖1為本發(fā)明實(shí)施例提供的一種針對(duì)存儲(chǔ)軟件的內(nèi)存分配方法的流程圖。如圖1所示,針對(duì)存儲(chǔ)軟件的內(nèi)存分配方法包括:
S10:在操作系統(tǒng)啟動(dòng)時(shí),預(yù)先保留預(yù)定大小的系統(tǒng)內(nèi)存,并將系統(tǒng)內(nèi)存映射到用戶(hù)空間。
S11:獲取存儲(chǔ)軟件中包含的功能模塊的數(shù)量,以及每個(gè)功能模塊所需的內(nèi)存空間。
S12:記錄功能模塊與所需的內(nèi)存空間的對(duì)應(yīng)關(guān)系。
其中,系統(tǒng)內(nèi)存的空間大于或等于全部功能模塊所需的內(nèi)存空間。
在具體實(shí)施中,在接收到操作系統(tǒng)啟動(dòng)的指令時(shí),預(yù)先保留預(yù)定大小的系統(tǒng)內(nèi)存,保留下來(lái)的系統(tǒng)內(nèi)存專(zhuān)門(mén)用來(lái)分配給存儲(chǔ)軟件中的各個(gè)功能模塊。本實(shí)施例中,將系統(tǒng)內(nèi)存映射到用戶(hù)空間后,該系統(tǒng)內(nèi)存就不會(huì)被操作系統(tǒng)所管理??梢岳斫獾氖牵ㄟ^(guò)Linux現(xiàn)有的技術(shù)就可以把預(yù)定大小的系統(tǒng)內(nèi)存映射到用戶(hù)空間,本實(shí)施例不再贅述。由上可知,我們?cè)谟脩?hù)空間實(shí)現(xiàn)一套管理邏輯來(lái)操作內(nèi)存。這樣做的好處是,即使用戶(hù)層應(yīng)用使用內(nèi)存有問(wèn)題導(dǎo)致應(yīng)用崩潰,也不會(huì)導(dǎo)致整個(gè)系統(tǒng)崩潰,從而有利于調(diào)試人員的調(diào)試工作;從編程的角度看,用戶(hù)層的編程比內(nèi)核層編程容易的多。
獲取存儲(chǔ)軟件中包含的功能模塊的數(shù)量,以及每個(gè)功能模塊所需的內(nèi)存空間。在使用中,就可以按照功能模塊的數(shù)量來(lái)劃分,并且使得每個(gè)功能模塊所需的內(nèi)存空間都可以滿(mǎn)足。記錄功能模塊與所需的內(nèi)存空間的對(duì)應(yīng)關(guān)系,當(dāng)存儲(chǔ)應(yīng)用啟動(dòng)的時(shí)候,會(huì)解析需要哪個(gè)功能模塊,并且取得相應(yīng)的功能模塊所需的內(nèi)存空間,應(yīng)用根據(jù)這些參數(shù)為每個(gè)功能模塊分配好空間,從而實(shí)現(xiàn)存儲(chǔ)軟件的正常工作。
本發(fā)明實(shí)施例提供的針對(duì)存儲(chǔ)軟件的內(nèi)存分配方法,包括:在操作系統(tǒng)啟動(dòng)時(shí),預(yù)先保留預(yù)定大小的系統(tǒng)內(nèi)存,并將系統(tǒng)內(nèi)存映射到用戶(hù)空間;獲取存儲(chǔ)軟件中包含的功能模塊的數(shù)量,以及每個(gè)功能模塊所需的內(nèi)存空間;記錄功能模塊與所需的內(nèi)存空間的對(duì)應(yīng)關(guān)系。通過(guò)上述方法,將預(yù)定大小的系統(tǒng)內(nèi)存映射到用戶(hù)空間使得該部分系統(tǒng)內(nèi)存不被操作系統(tǒng)管理,因此即使存儲(chǔ)軟件對(duì)應(yīng)的系統(tǒng)內(nèi)存發(fā)生泄漏等問(wèn)題時(shí),不會(huì)影響整個(gè)操作系統(tǒng)的正常運(yùn)行,提高了操作系統(tǒng)的可靠性,降低了操作系統(tǒng)的故障機(jī)率。另外,存儲(chǔ)軟件的功能模塊具有單獨(dú)的系統(tǒng)內(nèi)存,因此當(dāng)出現(xiàn)問(wèn)題時(shí),能夠快速定位。
作為優(yōu)選地實(shí)時(shí)方式,具體通過(guò)文件記錄功能模塊與所需的內(nèi)存空間的對(duì)應(yīng)關(guān)系。
在具體實(shí)施中,將功能模塊與所需的內(nèi)存空間的對(duì)應(yīng)關(guān)系記錄在一個(gè)專(zhuān)屬的文件中,可以方便調(diào)試人員查看,并方便后續(xù)的修改。
作為優(yōu)選地實(shí)時(shí)方式,還包括:當(dāng)功能模塊所需的內(nèi)存空間發(fā)生變化時(shí),更新對(duì)應(yīng)關(guān)系。
由于操作系統(tǒng)是動(dòng)態(tài)變化的,每次啟動(dòng)時(shí)都需要進(jìn)行上述分配過(guò)程,而每次分配過(guò)程中,對(duì)應(yīng)的功能模塊的數(shù)量以及每個(gè)功能模塊所需的內(nèi)存空間大小都是不同,因此,當(dāng)功能模塊所需的內(nèi)存空間大小變化時(shí),需要更新相應(yīng)的對(duì)應(yīng)關(guān)系,即更新文件。
作為優(yōu)選地實(shí)時(shí)方式,在更新對(duì)應(yīng)關(guān)系之后還包括:輸出重新啟動(dòng)操作系統(tǒng)的提示信息。
為了保證能夠獲取正確的對(duì)應(yīng)關(guān)系,當(dāng)更新對(duì)應(yīng)關(guān)系之后,需要重新啟動(dòng),因此,為了更好的提示用戶(hù),本實(shí)施例中,輸出提示信息。
圖2為本發(fā)明實(shí)施例提供的一種針對(duì)存儲(chǔ)軟件的內(nèi)存分配裝置的結(jié)構(gòu)圖。如圖2,針對(duì)存儲(chǔ)軟件的內(nèi)存分配裝置包括:
映射單元10,用于在操作系統(tǒng)啟動(dòng)時(shí),預(yù)先保留預(yù)定大小的系統(tǒng)內(nèi)存,并將系統(tǒng)內(nèi)存映射到用戶(hù)空間;
獲取單元11,用于獲取存儲(chǔ)軟件中包含的功能模塊的數(shù)量,以及每個(gè)功能模塊所需的內(nèi)存空間;
記錄單元12,用于記錄功能模塊與所需的內(nèi)存空間的對(duì)應(yīng)關(guān)系;
其中,系統(tǒng)內(nèi)存的空間大于或等于全部功能模塊所需的內(nèi)存空間。
在具體實(shí)施中,在接收到操作系統(tǒng)啟動(dòng)的指令時(shí),預(yù)先保留預(yù)定大小的系統(tǒng)內(nèi)存,保留下來(lái)的系統(tǒng)內(nèi)存專(zhuān)門(mén)用來(lái)分配給存儲(chǔ)軟件中的各個(gè)功能模塊。本實(shí)施例中,將系統(tǒng)內(nèi)存映射到用戶(hù)空間后,該系統(tǒng)內(nèi)存就不會(huì)被操作系統(tǒng)所管理??梢岳斫獾氖?,通過(guò)Linux現(xiàn)有的技術(shù)就可以把預(yù)定大小的系統(tǒng)內(nèi)存映射到用戶(hù)空間,本實(shí)施例不再贅述。由上可知,我們?cè)谟脩?hù)空間實(shí)現(xiàn)一套管理邏輯來(lái)操作內(nèi)存。這樣做的好處是,即使用戶(hù)層應(yīng)用使用內(nèi)存有問(wèn)題導(dǎo)致應(yīng)用崩潰,也不會(huì)導(dǎo)致整個(gè)系統(tǒng)崩潰,從而有利于調(diào)試人員的調(diào)試工作;從編程的角度看,用戶(hù)層的編程比內(nèi)核層編程容易的多。
獲取存儲(chǔ)軟件中包含的功能模塊的數(shù)量,以及每個(gè)功能模塊所需的內(nèi)存空間。在使用中,就可以按照功能模塊的數(shù)量來(lái)劃分,并且使得每個(gè)功能模塊所需的內(nèi)存空間都可以滿(mǎn)足。記錄功能模塊與所需的內(nèi)存空間的對(duì)應(yīng)關(guān)系,當(dāng)存儲(chǔ)應(yīng)用啟動(dòng)的時(shí)候,會(huì)解析需要哪個(gè)功能模塊,并且取得相應(yīng)的功能模塊所需的內(nèi)存空間,應(yīng)用根據(jù)這些參數(shù)為每個(gè)功能模塊分配好空間,從而實(shí)現(xiàn)存儲(chǔ)軟件的正常工作。
本發(fā)明實(shí)施例提供的針對(duì)存儲(chǔ)軟件的內(nèi)存分配裝置,包括:在操作系統(tǒng)啟動(dòng)時(shí),預(yù)先保留預(yù)定大小的系統(tǒng)內(nèi)存,并將系統(tǒng)內(nèi)存映射到用戶(hù)空間;獲取存儲(chǔ)軟件中包含的功能模塊的數(shù)量,以及每個(gè)功能模塊所需的內(nèi)存空間;記錄功能模塊與所需的內(nèi)存空間的對(duì)應(yīng)關(guān)系。通過(guò)上述裝置,將預(yù)定大小的系統(tǒng)內(nèi)存映射到用戶(hù)空間使得該部分系統(tǒng)內(nèi)存不被操作系統(tǒng)管理,因此即使存儲(chǔ)軟件對(duì)應(yīng)的系統(tǒng)內(nèi)存發(fā)生泄漏等問(wèn)題時(shí),不會(huì)影響整個(gè)操作系統(tǒng)的正常運(yùn)行,提高了操作系統(tǒng)的可靠性,降低了操作系統(tǒng)的故障機(jī)率。另外,存儲(chǔ)軟件的功能模塊具有單獨(dú)的系統(tǒng)內(nèi)存,因此當(dāng)出現(xiàn)問(wèn)題時(shí),能夠快速定位。
作為優(yōu)選地實(shí)施方式,記錄單元12具體通過(guò)文件記錄功能模塊與所需的內(nèi)存空間的對(duì)應(yīng)關(guān)系。
作為優(yōu)選地實(shí)施方式,記錄單元12還用于當(dāng)功能模塊所需的內(nèi)存空間發(fā)生變化時(shí),更新對(duì)應(yīng)關(guān)系。
作為優(yōu)選地實(shí)施方式,還包括提示單元,用于在更新對(duì)應(yīng)關(guān)系之后輸出重新啟動(dòng)操作系統(tǒng)的提示信息。
由于裝置部分的實(shí)施例與方法部分的實(shí)施例相互對(duì)應(yīng),因此裝置部分的實(shí)施例請(qǐng)參見(jiàn)方法部分的實(shí)施例的描述,這里暫不贅述。
以上對(duì)本發(fā)明所提供的針對(duì)存儲(chǔ)軟件的內(nèi)存分配方法及裝置進(jìn)行了詳細(xì)介紹。說(shuō)明書(shū)中各個(gè)實(shí)施例采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說(shuō)明的都是與其他實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同相似部分互相參見(jiàn)即可。對(duì)于實(shí)施例公開(kāi)的裝置而言,由于其與實(shí)施例公開(kāi)的方法相對(duì)應(yīng),所以描述的比較簡(jiǎn)單,相關(guān)之處參見(jiàn)方法部分說(shuō)明即可。應(yīng)當(dāng)指出,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來(lái)說(shuō),在不脫離本發(fā)明原理的前提下,還可以對(duì)本發(fā)明進(jìn)行若干改進(jìn)和修飾,這些改進(jìn)和修飾也落入本發(fā)明權(quán)利要求的保護(hù)范圍內(nèi)。
專(zhuān)業(yè)人員還可以進(jìn)一步意識(shí)到,結(jié)合本文中所公開(kāi)的實(shí)施例描述的各示例的單元及算法步驟,能夠以電子硬件、計(jì)算機(jī)軟件或者二者的結(jié)合來(lái)實(shí)現(xiàn),為了清楚地說(shuō)明硬件和軟件的可互換性,在上述說(shuō)明中已經(jīng)按照功能一般性地描述了各示例的組成及步驟。這些功能究竟以硬件還是軟件方式來(lái)執(zhí)行,取決于技術(shù)方案的特定應(yīng)用和設(shè)計(jì)約束條件。專(zhuān)業(yè)技術(shù)人員可以對(duì)每個(gè)特定的應(yīng)用來(lái)使用不同方法來(lái)實(shí)現(xiàn)所描述的功能,但是這種實(shí)現(xiàn)不應(yīng)認(rèn)為超出本發(fā)明的范圍。
結(jié)合本文中所公開(kāi)的實(shí)施例描述的方法或算法的步驟可以直接用硬件、處理器執(zhí)行的軟件模塊,或者二者的結(jié)合來(lái)實(shí)施。軟件模塊可以置于隨機(jī)存儲(chǔ)器(RAM)、內(nèi)存、只讀存儲(chǔ)器(ROM)、電可編程ROM、電可擦除可編程ROM、寄存器、硬盤(pán)、可移動(dòng)磁盤(pán)、CD-ROM、或技術(shù)領(lǐng)域內(nèi)所公知的任意其它形式的存儲(chǔ)介質(zhì)中。