本發(fā)明涉及內(nèi)存管理技術(shù)領(lǐng)域,具體而言,涉及一種內(nèi)存預(yù)留方法及裝置。
背景技術(shù):
通信技術(shù)的迅速發(fā)展對(duì)通信設(shè)備的功能提出了更高更多的要求,為了滿(mǎn)足這些要求,對(duì)通信設(shè)備上內(nèi)存的存儲(chǔ)容量要求也隨之變得越來(lái)越大。傳統(tǒng)的4KB的普通內(nèi)存頁(yè)管理方式已經(jīng)不能滿(mǎn)足用戶(hù)對(duì)設(shè)備性能的需求,于是產(chǎn)生了hugepage(大頁(yè)面內(nèi)存)的概念,hugepage是一種內(nèi)存管理方式,與傳統(tǒng)的4KB的普通內(nèi)存頁(yè)管理方式相比,該種機(jī)制管理的內(nèi)存頁(yè)尺寸更大,TLB(Translation Lookaside Buffer,翻譯后備緩沖)的條目更少,大大提高內(nèi)存的性能,降低CPU負(fù)載。
然而,在現(xiàn)有技術(shù)hugepage機(jī)制的內(nèi)存預(yù)留方法中,分配給用戶(hù)態(tài)應(yīng)用程序的內(nèi)存塊在申請(qǐng)以后其物理地址可能不連續(xù),在進(jìn)行內(nèi)存塊調(diào)用時(shí)不方便,造成導(dǎo)致內(nèi)存性能下降,CPU負(fù)載過(guò)大。
技術(shù)實(shí)現(xiàn)要素:
為了克服現(xiàn)有技術(shù)中的上述不足,本發(fā)的目的在于提供一種內(nèi)存預(yù)留方法,所述方法包括:
在應(yīng)用程序啟動(dòng)之前,獲取用于預(yù)留給應(yīng)用程序的多個(gè)內(nèi)存塊的物理地址,將所述多個(gè)內(nèi)存塊按照其對(duì)應(yīng)的物理地址的大小關(guān)系進(jìn)行排序;
將排序后的所述多個(gè)內(nèi)存塊按照其對(duì)應(yīng)的物理地址從大到小的順序逐一釋放;
將釋放后的所述多個(gè)內(nèi)存塊逐一重新申請(qǐng),并記錄重新申請(qǐng)后的所述多個(gè)內(nèi)存塊的物理地址與虛擬地址的對(duì)應(yīng)關(guān)系。
進(jìn)一步地,在上述方法中,所述獲取用于預(yù)留給應(yīng)用程序的多個(gè)內(nèi)存塊的物理地址的方式,包括:
根據(jù)預(yù)設(shè)配置信息獲取需要預(yù)留給應(yīng)用程序的內(nèi)存塊的數(shù)量以及每個(gè)內(nèi)存塊的大??;
根據(jù)所述內(nèi)存塊的數(shù)量及內(nèi)存塊的大小進(jìn)行內(nèi)存塊申請(qǐng),獲取申請(qǐng)到的多個(gè)內(nèi)存塊的物理地址。
進(jìn)一步地,在上述方法中,所述內(nèi)存塊為按照大頁(yè)hugepage機(jī)制申請(qǐng)的物理內(nèi)存塊。
進(jìn)一步地,在上述方法中,所述方法還包括:
遍歷記錄有所述多個(gè)內(nèi)存塊的物理地址與對(duì)應(yīng)虛擬地址的內(nèi)存塊信息表,將所述多個(gè)內(nèi)存塊中所述物理地址與對(duì)應(yīng)虛擬地址均連續(xù)的內(nèi)存塊合并為新的內(nèi)存塊,在所述內(nèi)存塊信息表中記錄合并后的新的內(nèi)存塊的物理地址及虛擬地址。
進(jìn)一步地,在上述方法中,所述將所述物理地址與對(duì)應(yīng)虛擬地址均連續(xù)的內(nèi)存塊合并為新的內(nèi)存塊,記錄合并后的新的內(nèi)存塊的物理地址及虛擬地址的步驟之后,所述方法還包括:
將所述內(nèi)存塊信息表中的內(nèi)存塊的信息發(fā)送給系統(tǒng)的內(nèi)存管理單元,進(jìn)行應(yīng)用程序?qū)λ鰞?nèi)存塊的調(diào)用。
本發(fā)明的另一目的在于提供一種內(nèi)存預(yù)留裝置,所述裝置包括:
內(nèi)存塊排序模塊,用于在應(yīng)用程序啟動(dòng)之前,獲取用于預(yù)留給應(yīng)用程序的多個(gè)內(nèi)存塊的物理地址,將所述多個(gè)內(nèi)存塊按照其對(duì)應(yīng)的物理地址的大小關(guān)系進(jìn)行排序;
內(nèi)存塊釋放模塊,用于將排序后的所述多個(gè)內(nèi)存塊按照其對(duì)應(yīng)的物理地址從大到小的順序逐一釋放;
內(nèi)存塊重申請(qǐng)模塊,用于將釋放后的所述多個(gè)內(nèi)存塊逐一重新申請(qǐng),并記錄重新申請(qǐng)后的所述多個(gè)內(nèi)存塊的物理地址與虛擬地址的對(duì)應(yīng)關(guān)系。
進(jìn)一步地,在上述裝置中,所述內(nèi)存塊排序模塊獲取用于預(yù)留給應(yīng)用程序的多個(gè)內(nèi)存塊的物理地址的方式,包括:
根據(jù)預(yù)設(shè)配置信息獲取需要預(yù)留給應(yīng)用程序的內(nèi)存塊的數(shù)量以及每個(gè)內(nèi)存塊的大??;
根據(jù)所述內(nèi)存塊的數(shù)量及內(nèi)存塊的大小進(jìn)行內(nèi)存塊申請(qǐng),獲取申請(qǐng)到的多個(gè)內(nèi)存塊的物理地址。
進(jìn)一步地,在上述裝置中,所述內(nèi)存塊為按照hugepage機(jī)制申請(qǐng)的物理內(nèi)存塊。
進(jìn)一步地,在上述裝置中,所述裝置還包括:
內(nèi)存塊合并模塊,用于遍歷記錄有所述多個(gè)內(nèi)存塊的物理地址與對(duì)應(yīng)虛擬地址的內(nèi)存塊信息表,將所述多個(gè)內(nèi)存塊中所述物理地址與對(duì)應(yīng)虛擬地址均連續(xù)的內(nèi)存塊合并為新的內(nèi)存塊,在所述內(nèi)存塊信息表中記錄合并后的新的內(nèi)存塊的物理地址及虛擬地址。
進(jìn)一步地,在上述裝置中,所述裝置還包括:
內(nèi)存塊信息發(fā)送模塊,用于將所述內(nèi)存塊信息表中的內(nèi)存塊的信息發(fā)送給系統(tǒng)的內(nèi)存管理單元,進(jìn)行應(yīng)用程序?qū)λ鰞?nèi)存塊的調(diào)用。
相對(duì)于現(xiàn)有技術(shù)而言,本發(fā)明具有以下有益效果:
本發(fā)明提供的內(nèi)存預(yù)留方法及裝置,通過(guò)在用戶(hù)態(tài)應(yīng)用程序運(yùn)行之前,對(duì)系統(tǒng)為用戶(hù)態(tài)應(yīng)用程序申請(qǐng)的多個(gè)內(nèi)存塊按照其對(duì)應(yīng)的物理地址從大到小的順序逐一釋放后重新申請(qǐng),使得重新申請(qǐng)后的所述多個(gè)內(nèi)存塊的物理地址與虛擬地址均連續(xù)。如此,可以有效減少內(nèi)存塊合并過(guò)程中的內(nèi)存碎片,提高內(nèi)存性能,減小CPU的負(fù)載。
附圖說(shuō)明
為了更清楚地說(shuō)明本發(fā)明實(shí)施例的技術(shù)方案,下面將對(duì)實(shí)施例中所需要使用的附圖作簡(jiǎn)單地介紹,應(yīng)當(dāng)理解,以下附圖僅示出了本發(fā)明的某些實(shí)施例,因此不應(yīng)被看作是對(duì)范圍的限定,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他相關(guān)的附圖。
圖1為本發(fā)明實(shí)施例提供的通信設(shè)備的示意圖;
圖2為本發(fā)明實(shí)施例提供的內(nèi)存預(yù)留方法的流程示意圖之一;
圖3為本發(fā)明實(shí)施例提供的內(nèi)存塊地址示意圖之一;
圖4為本發(fā)明實(shí)施例提供的內(nèi)存塊地址示意圖之二;
圖5為本發(fā)明實(shí)施例提供的內(nèi)存塊地址示意圖之三;
圖6為本發(fā)明實(shí)施例提供的內(nèi)存預(yù)留方法的流程示意圖之二;
圖7為本發(fā)明實(shí)施例提供的內(nèi)存塊地址示意圖之四;
圖8為本發(fā)明實(shí)施例提供的內(nèi)存預(yù)留裝置示意圖之一;
圖9為本發(fā)明實(shí)施例提供的內(nèi)存預(yù)留裝置示意圖之二。
圖標(biāo):100-通信設(shè)備;120-存儲(chǔ)器;130-處理器;110-內(nèi)存預(yù)留裝置;111-內(nèi)存塊排序模塊;112-內(nèi)存塊釋放模塊;113-重申請(qǐng)模塊;114-內(nèi)存塊合并模塊;115-內(nèi)存塊信息發(fā)送模塊。
具體實(shí)施方式
為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。通常在此處附圖中描述和示出的本發(fā)明實(shí)施例的組件可以以各種不同的配置來(lái)布置和設(shè)計(jì)。
因此,以下對(duì)在附圖中提供的本發(fā)明的實(shí)施例的詳細(xì)描述并非旨在限制要求保護(hù)的本發(fā)明的范圍,而是僅僅表示本發(fā)明的選定實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
應(yīng)注意到:相似的標(biāo)號(hào)和字母在下面的附圖中表示類(lèi)似項(xiàng),因此,一旦某一項(xiàng)在一個(gè)附圖中被定義,則在隨后的附圖中不需要對(duì)其進(jìn)行進(jìn)一步定義和解釋。
在本發(fā)明的描述中,還需要說(shuō)明的是,除非另有明確的規(guī)定和限定,術(shù)語(yǔ)“設(shè)置”、“安裝”、“相連”、“連接”應(yīng)做廣義理解,例如,可以是固定連接,也可以是可拆卸連接,或一體地連接;可以是機(jī)械連接,也可以是電連接;可以是直接相連,也可以通過(guò)中間媒介間接相連,可以是兩個(gè)元件內(nèi)部的連通。對(duì)于本領(lǐng)域的普通技術(shù)人員而言,可以具體情況理解上述術(shù)語(yǔ)在本發(fā)明中的具體含義。
本實(shí)施例提供的內(nèi)存預(yù)留的方法應(yīng)用于基于Linux系統(tǒng)的通信設(shè)備。請(qǐng)參照?qǐng)D1,圖1為本實(shí)施例提供的所述基于Linux系統(tǒng)的通信設(shè)備100的方框示意圖。所述通信設(shè)備100包括內(nèi)存預(yù)留裝置110、存儲(chǔ)器120及處理器130。
所述存儲(chǔ)器120、處理器130及各元件相互之間直接或間接地電性連接,以實(shí)現(xiàn)數(shù)據(jù)的傳輸或交互。例如,這些元件相互之間可通過(guò)一條或多條通訊總線(xiàn)或信號(hào)線(xiàn)實(shí)現(xiàn)電性連接。所述內(nèi)存預(yù)留裝置110包括至少一個(gè)可以應(yīng)用程序或固件(firmware)的形式存儲(chǔ)于所述存儲(chǔ)器120中或固化在所述通信設(shè)備100的操作系統(tǒng)(operating system,OS)中的應(yīng)用程序功能模塊。所述處理器130用于執(zhí)行所述存儲(chǔ)器120中存儲(chǔ)的可執(zhí)行模塊,例如所述內(nèi)存預(yù)留裝置110所包括的應(yīng)用程序功能模塊及計(jì)算機(jī)程序等。
其中,所述存儲(chǔ)器120可以是,但不限于,隨機(jī)存取存儲(chǔ)器(Random Access Memory,RAM),只讀存儲(chǔ)器(Read Only Memory,ROM),可編程只讀存儲(chǔ)器(Programmable Read-Only Memory,PROM),可擦除只讀存儲(chǔ)器(Erasable Programmable Read-Only Memory,EPROM),電可擦除只讀存儲(chǔ)器(Electric Erasable Programmable Read-Only Memory,EEPROM)等。其中,存儲(chǔ)器120用于存儲(chǔ)程序,所述處理器130在接收到執(zhí)行指令后,執(zhí)行所述程序。
所述處理器130可能是一種集成電路芯片,具有信號(hào)的處理能力。上述的處理器可以是通用處理器,包括中央處理器(Central Processing Unit,CPU)、網(wǎng)絡(luò)處理器(Network Processor,NP)等;還可以是數(shù)字信號(hào)處理器(DSP))、專(zhuān)用集成電路(ASIC)、現(xiàn)場(chǎng)可編程門(mén)陣列(FPGA)或者其他可編程邏輯器件、分立門(mén)或者晶體管邏輯器件、分立硬件組件??梢詫?shí)現(xiàn)或者執(zhí)行本發(fā)明實(shí)施例中的公開(kāi)的各方法、步驟及邏輯框圖。通用處理器可以是微處理器或者該處理器也可以是任何常規(guī)的處理器等。
請(qǐng)參照?qǐng)D2,圖2為應(yīng)用于圖1所示的通信設(shè)備100的內(nèi)存預(yù)留方法,所述方法包括以下步驟。
步驟S110,在應(yīng)用程序啟動(dòng)之前,獲取用于預(yù)留給應(yīng)用程序的多個(gè)內(nèi)存塊的物理地址,將所述多個(gè)內(nèi)存塊按照其對(duì)應(yīng)的物理地址的大小關(guān)系進(jìn)行排序。
在本實(shí)施例中,采用hugepage內(nèi)存機(jī)制進(jìn)行內(nèi)存塊的申請(qǐng)。具體地,所述通信設(shè)備100在系統(tǒng)啟動(dòng)時(shí),在所有用戶(hù)態(tài)應(yīng)用程序啟動(dòng)之前,獲取一配置文件中的預(yù)設(shè)配置信息,所述預(yù)設(shè)配置信息中包括需要預(yù)留給應(yīng)用程序的內(nèi)存塊的預(yù)設(shè)數(shù)量及每個(gè)內(nèi)存塊的預(yù)設(shè)大小。
所述通信設(shè)備100根據(jù)所述內(nèi)存塊的數(shù)量及內(nèi)存塊的大小進(jìn)行內(nèi)存塊申請(qǐng),并獲得申請(qǐng)到的所述多個(gè)內(nèi)存塊的物理地址。在本實(shí)施例中,所述預(yù)設(shè)內(nèi)存塊大小可以設(shè)置為32M。
請(qǐng)參照?qǐng)D3,所述通信設(shè)備100預(yù)申請(qǐng)出的內(nèi)存塊信息如圖3所示,申請(qǐng)出的所述多個(gè)內(nèi)存塊的虛擬地址是線(xiàn)性增長(zhǎng)的,但物理地址可能不是線(xiàn)性增長(zhǎng)的或可能不是連續(xù)的。
所述通信設(shè)備100獲取申請(qǐng)到的所述多個(gè)內(nèi)存塊的物理地址后,將所述多個(gè)內(nèi)存塊按照其對(duì)應(yīng)的物理地址的大小關(guān)系進(jìn)行排序。如圖4所示,在本實(shí)施例中,可以按照所述多個(gè)內(nèi)存塊物理地址從小到大的順序進(jìn)行排序。
步驟S120,將排序后的所述多個(gè)內(nèi)存塊按照其對(duì)應(yīng)的物理地址從大到小的順序逐一釋放。
步驟S130,將釋放后的所述多個(gè)內(nèi)存塊逐一重新申請(qǐng),并記錄重新申請(qǐng)后的所述多個(gè)內(nèi)存塊的物理地址與虛擬地址的對(duì)應(yīng)關(guān)系。
具體地,Linux系統(tǒng)在進(jìn)行內(nèi)存塊申請(qǐng)時(shí),較后釋放的內(nèi)存塊在重新申請(qǐng)時(shí)會(huì)較先被申請(qǐng),故在本實(shí)施例中,由于所述通信設(shè)備100在步驟S120中釋放時(shí)是按照所述多個(gè)內(nèi)存塊時(shí)按照其對(duì)應(yīng)的物理地址從大到小的順序逐一釋放的,在進(jìn)行重新申請(qǐng)時(shí)所述通信設(shè)備100會(huì)按照物理地址從小到大的順序?qū)λ龆鄠€(gè)內(nèi)存塊進(jìn)行重新申請(qǐng)。
如此,由于重新申請(qǐng)時(shí)所述多個(gè)內(nèi)存塊的虛擬地址必然是從小到大遞增的,且申請(qǐng)時(shí)所述多個(gè)內(nèi)存塊的物理地址也是從小到大遞增的,故所述多個(gè)內(nèi)存塊在經(jīng)過(guò)重新申請(qǐng)后,其虛擬地址與物理地址的對(duì)應(yīng)關(guān)系如圖5所示。
進(jìn)一步地,請(qǐng)參照?qǐng)D6,所述方法還可包括步驟S140。
步驟S140,遍歷記錄有所述多個(gè)內(nèi)存塊的物理地址與對(duì)應(yīng)虛擬地址的內(nèi)存塊信息表,將所述多個(gè)內(nèi)存塊中所述物理地址與對(duì)應(yīng)虛擬地址均連續(xù)的內(nèi)存塊合并為新的內(nèi)存塊,在所述內(nèi)存塊信息表中記錄合并后的新的內(nèi)存塊的物理地址及虛擬地址。
具體地,所述通信設(shè)備100中有一內(nèi)存塊信息表,所述內(nèi)存塊信息表中記錄有經(jīng)步驟S130后所述多個(gè)內(nèi)存塊的物理地址與虛擬地址的內(nèi)存塊信息表。
所述通信設(shè)備100遍歷所述內(nèi)存塊信息表,查找出其中物理地址與第二虛擬地址均連續(xù)的內(nèi)存塊,將所述物理地址與所述第二虛擬地址均連續(xù)的內(nèi)存塊合并為新的內(nèi)存塊,并在所述內(nèi)存塊信息表中記錄合并后的新的內(nèi)存塊的物理地址及虛擬地址,如圖7所示。由于經(jīng)步驟S130重新申請(qǐng)后的內(nèi)存塊的物理地址與第二虛擬地址均是線(xiàn)性增長(zhǎng)的,所以在本步驟的合并過(guò)程中可以有效避免因地址不連續(xù)造成的合并錯(cuò)誤或產(chǎn)生內(nèi)存碎片。合并后減少了內(nèi)存塊數(shù)量,使得TLB條目更少,可以進(jìn)一步提高內(nèi)存的性能,降低CPU的負(fù)載。
進(jìn)一步地,所述通信設(shè)備100在步驟S150之后,所述通信設(shè)備100將所述內(nèi)存塊信息表中的內(nèi)存塊信息發(fā)送給系統(tǒng)的內(nèi)存管理單元,以用于用戶(hù)態(tài)應(yīng)用程序?qū)λ龆鄠€(gè)內(nèi)存塊的調(diào)用。
值得說(shuō)明的是,本實(shí)施例中步驟S110至步驟S140均為所述通信設(shè)備100在用戶(hù)態(tài)應(yīng)用程序啟動(dòng)前執(zhí)行,用戶(hù)態(tài)應(yīng)用程序調(diào)用經(jīng)步驟S110至步驟S140處理后的內(nèi)存塊時(shí),可以最大限度地保證調(diào)用到的內(nèi)存塊的物理地址與虛擬地址均是連續(xù)的,有效減少內(nèi)存碎片,提高所述通信設(shè)備100的整體性能。
請(qǐng)參照?qǐng)D8,本實(shí)施例還提供一種內(nèi)存預(yù)留裝置110,所述裝置包括:內(nèi)存塊排序模塊111、內(nèi)存塊釋放模塊112及內(nèi)存塊重申請(qǐng)模塊113。
所述內(nèi)存塊排序模塊111用于在應(yīng)用程序啟動(dòng)之前,獲取用于預(yù)留給應(yīng)用程序的多個(gè)內(nèi)存塊的物理地址,將所述多個(gè)內(nèi)存塊按照其對(duì)應(yīng)的物理地址的大小關(guān)系進(jìn)行排序。
具體地,所述內(nèi)存塊排序模塊111獲取用于預(yù)留給應(yīng)用程序的多個(gè)內(nèi)存塊的物理地址的方式,包括:
根據(jù)預(yù)設(shè)配置信息獲取需要預(yù)留給應(yīng)用程序的內(nèi)存塊的數(shù)量以及每個(gè)內(nèi)存塊的大小;
根據(jù)所述內(nèi)存塊的數(shù)量及內(nèi)存塊的大小進(jìn)行內(nèi)存塊申請(qǐng),獲取申請(qǐng)到的多個(gè)內(nèi)存塊的物理地址。
所述內(nèi)存塊釋放模塊112用于將排序后的所述多個(gè)內(nèi)存塊按照其對(duì)應(yīng)的物理地址從大到小的順序逐一釋放。
所述內(nèi)存塊重申請(qǐng)模塊113用于將釋放后的所述多個(gè)內(nèi)存塊逐一重新申請(qǐng),并記錄重新申請(qǐng)后的所述多個(gè)內(nèi)存塊的物理地址與虛擬地址的對(duì)應(yīng)關(guān)系。
具體地,所述內(nèi)存塊為按照大頁(yè)hugepage機(jī)制申請(qǐng)的物理內(nèi)存塊。
進(jìn)一步地,請(qǐng)參照?qǐng)D9,所述裝置還包括內(nèi)存塊合并模塊114.
所述內(nèi)存塊合并模塊114用于遍歷記錄有所述多個(gè)內(nèi)存塊的物理地址與虛擬地址的內(nèi)存塊信息表,將所述多個(gè)內(nèi)存塊中所述物理地址與對(duì)應(yīng)虛擬地址均連續(xù)的內(nèi)存塊合并為新的內(nèi)存塊,在所述內(nèi)存塊信息表中記錄合并后的新的內(nèi)存塊的物理地址及虛擬地址。
進(jìn)一步地,請(qǐng)?jiān)俅螀⒄請(qǐng)D9,所述裝置還包括內(nèi)存塊信息發(fā)送模塊115。
所述內(nèi)存塊信息發(fā)送模塊115用于將所述內(nèi)存塊信息表中的內(nèi)存塊的信息發(fā)送給系統(tǒng)的內(nèi)存管理單元,進(jìn)行應(yīng)用程序?qū)λ鰞?nèi)存塊的調(diào)用。
綜上所述,本發(fā)明提供的內(nèi)存預(yù)留方法及裝置,通過(guò)在用戶(hù)態(tài)應(yīng)用程序運(yùn)行之前,對(duì)系統(tǒng)為用戶(hù)態(tài)應(yīng)用程序申請(qǐng)的多個(gè)內(nèi)存塊按照遞增或遞減的順序逐一釋放后重新申請(qǐng),使得重新申請(qǐng)后的所述多個(gè)內(nèi)存塊的物理地址與虛擬地址均連續(xù)。如此,可以有效減少內(nèi)存塊合并過(guò)程中的內(nèi)存碎片,提高內(nèi)存性能,減小CPU的負(fù)載。
在本申請(qǐng)所提供的實(shí)施例中,應(yīng)該理解到,所揭露的裝置和方法,也可以通過(guò)其它的方式實(shí)現(xiàn)。以上所描述的裝置實(shí)施例僅僅是示意性的,例如,附圖中的流程圖和框圖顯示了根據(jù)本發(fā)明的多個(gè)實(shí)施例的裝置、方法和計(jì)算機(jī)程序產(chǎn)品的可能實(shí)現(xiàn)的體系架構(gòu)、功能和操作。在這點(diǎn)上,流程圖或框圖中的每個(gè)方框可以代表一個(gè)模塊、程序段或代碼的一部分,所述模塊、程序段或代碼的一部分包含一個(gè)或多個(gè)用于實(shí)現(xiàn)規(guī)定的邏輯功能的可執(zhí)行指令。也應(yīng)當(dāng)注意,在有些作為替換的實(shí)現(xiàn)方式中,方框中所標(biāo)注的功能也可以以不同于附圖中所標(biāo)注的順序發(fā)生。例如,兩個(gè)連續(xù)的方框?qū)嶋H上可以基本并行地執(zhí)行,它們有時(shí)也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個(gè)方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行規(guī)定的功能或動(dòng)作的專(zhuān)用的基于硬件的系統(tǒng)來(lái)實(shí)現(xiàn),或者可以用專(zhuān)用硬件與計(jì)算機(jī)指令的組合來(lái)實(shí)現(xiàn)。
另外,在本發(fā)明各個(gè)實(shí)施例中的各功能模塊可以集成在一起形成一個(gè)獨(dú)立的部分,也可以是各個(gè)模塊單獨(dú)存在,也可以?xún)蓚€(gè)或兩個(gè)以上模塊集成形成一個(gè)獨(dú)立的部分。
所述功能如果以應(yīng)用程序功能模塊的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷(xiāo)售或使用時(shí),可以存儲(chǔ)在一個(gè)計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說(shuō)對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分或者該技術(shù)方案的部分可以以應(yīng)用程序產(chǎn)品的形式體現(xiàn)出來(lái),該計(jì)算機(jī)應(yīng)用程序產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)中,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述方法的全部或部分步驟。而前述的存儲(chǔ)介質(zhì)包括:U盤(pán)、移動(dòng)硬盤(pán)、只讀存儲(chǔ)器(ROM,Read-Only Memory)、隨機(jī)存取存儲(chǔ)器(RAM,Random Access Memory)、磁碟或者光盤(pán)等各種可以存儲(chǔ)程序代碼的介質(zhì)。
需要說(shuō)明的是,在本文中,諸如第一和第二等之類(lèi)的關(guān)系術(shù)語(yǔ)僅僅用來(lái)將一個(gè)實(shí)體或者操作與另一個(gè)實(shí)體或操作區(qū)分開(kāi)來(lái),而不一定要求或者暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者順序。而且,術(shù)語(yǔ)“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過(guò)程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒(méi)有明確列出的其他要素,或者是還包括為這種過(guò)程、方法、物品或者設(shè)備所固有的要素。在沒(méi)有更多限制的情況下,由語(yǔ)句“包括一個(gè)……”限定的要素,并不排除在包括所述要素的過(guò)程、方法、物品或者設(shè)備中還存在另外的相同要素。
以上所述僅為本發(fā)明的優(yōu)選實(shí)施例而已,并不用于限制本發(fā)明,對(duì)于本領(lǐng)域的技術(shù)人員來(lái)說(shuō),本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。應(yīng)注意到:相似的標(biāo)號(hào)和字母在下面的附圖中表示類(lèi)似項(xiàng),因此,一旦某一項(xiàng)在一個(gè)附圖中被定義,則在隨后的附圖中不需要對(duì)其進(jìn)行進(jìn)一步定義和解釋。
以上所述,僅為本發(fā)明的具體實(shí)施方式,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)所述以權(quán)利要求的保護(hù)范圍為準(zhǔn)。