專(zhuān)利名稱(chēng):一種缺頁(yè)異常的處理方法、裝置及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及操作系統(tǒng)技術(shù)領(lǐng)域,具體涉及ー種缺頁(yè)異常的處理方法、裝置及系統(tǒng)。
背景技術(shù):
現(xiàn)在的操作系統(tǒng),都使用基于分頁(yè)機(jī)制的虛擬內(nèi)存,虛擬內(nèi)存一般有4G,虛擬地址(virtual address)就是4G虛擬地址空間中的地址,姆個(gè)進(jìn)程有4GB的虛擬地址空間,進(jìn)程通過(guò)訪(fǎng)問(wèn)4GB的虛擬地址進(jìn)行物理內(nèi)存的訪(fǎng)問(wèn)。內(nèi)存可以視為連續(xù)的字節(jié),即內(nèi)存為字節(jié)數(shù)組,內(nèi)存單元的地址編號(hào),可作為字節(jié)數(shù)組的索引,分頁(yè)管理吋,將4KB個(gè)字節(jié)視為ー頁(yè)。此時(shí),內(nèi)存變成了連續(xù)的頁(yè),即內(nèi)存為頁(yè)數(shù)組,每ー頁(yè)物理內(nèi)存叫頁(yè)幀,以頁(yè)為單位對(duì)內(nèi)存進(jìn)行編號(hào),該編號(hào)可作為頁(yè)數(shù)組的索引,又稱(chēng)為頁(yè)巾貞號(hào)。進(jìn)程在實(shí)際需要某個(gè)虛擬內(nèi)存區(qū)(VMA, Virtual Memory Area)的數(shù)據(jù)之前,虛擬地址和物理內(nèi)存之間的關(guān)聯(lián)不會(huì)建立。如果進(jìn)程訪(fǎng)問(wèn)的虛擬地址空間尚未與物理內(nèi)存中的頁(yè)中貞關(guān)聯(lián),貝1J中央處理器(CPU, Central Processing Unit)自動(dòng)地引發(fā)ー個(gè)缺頁(yè)異?!,F(xiàn)有技術(shù)中發(fā)生缺頁(yè)異常吋,CPU在缺頁(yè)異常處理函數(shù)中做相應(yīng)處理,找到虛擬地址對(duì)應(yīng)的VMA,如果該虛擬地址屬于代碼段或者數(shù)據(jù)段,則申請(qǐng)ー個(gè)4KB頁(yè)映射到該VMA,如果該地址屬于棧,則擴(kuò)展棧對(duì)應(yīng)的VMA,并調(diào)入ー個(gè)4KB頁(yè)以擴(kuò)展該VMA。在對(duì)現(xiàn)有技術(shù)的研究和實(shí)踐過(guò)程中,本發(fā)明的發(fā)明人發(fā)現(xiàn),無(wú)論進(jìn)程訪(fǎng)問(wèn)代碼段數(shù)據(jù)段還是訪(fǎng)問(wèn)棧地址所引發(fā)的缺頁(yè)異常,針對(duì)請(qǐng)求調(diào)頁(yè)方面,都是每次缺頁(yè)異常申請(qǐng)分配ー頁(yè),當(dāng)程序本身的代碼段、數(shù)據(jù)段或者棧都較大時(shí),那么對(duì)對(duì)應(yīng)段的訪(fǎng)問(wèn)將導(dǎo)致大量的缺頁(yè)異常,需要多次請(qǐng)求調(diào)頁(yè),假設(shè)一個(gè)程序代碼段大小為1M,那么該程序?qū)Υa段的訪(fǎng)問(wèn)最多將需要經(jīng)歷256次缺頁(yè)異常才能完成,需要申請(qǐng)256次調(diào)頁(yè),降低了系統(tǒng)的性能。
發(fā)明內(nèi)容
本發(fā)明實(shí)施例提供ー種缺頁(yè)異常處理方法,可以在一次缺頁(yè)異常中申請(qǐng)分配多個(gè)頁(yè)面,從而減少缺頁(yè)異常的次數(shù),提高系統(tǒng)性能。本發(fā)明實(shí)施例還提供相應(yīng)的裝置及系統(tǒng)。ー種缺頁(yè)異常的處理方法,包括當(dāng)同一進(jìn)程在同一虛擬內(nèi)存區(qū)VMA中連續(xù)發(fā)生缺頁(yè)異常的次數(shù)達(dá)到預(yù)置閾值吋,獲取第一數(shù)值和第二數(shù)值,所述第一數(shù)值為發(fā)生缺頁(yè)異常的次數(shù)達(dá)到預(yù)置閾值后,每次發(fā)生缺頁(yè)異常吋,建立VMA中虛擬地址頁(yè)與物理頁(yè)幀關(guān)聯(lián)映射的個(gè)數(shù),所述第二數(shù)值為所述同一進(jìn)程所在的VMA中未映射物理頁(yè)幀的虛擬地址頁(yè)的個(gè)數(shù);比較所述獲取的第一數(shù)值和所述第二數(shù)值的大小;當(dāng)所述第二數(shù)值大于等于所述第一數(shù)值時(shí),毎次發(fā)生缺頁(yè)異常時(shí),按照關(guān)聯(lián)映射的方向,建立連續(xù)的第一數(shù)值個(gè)虛擬地址頁(yè)與物理頁(yè)幀的關(guān)聯(lián)映射,以使所述同一進(jìn)程快速讀取物理內(nèi)存;
當(dāng)所述第二數(shù)值小于第一數(shù)值時(shí),毎次缺頁(yè)異常時(shí),按照關(guān)聯(lián)映射的方向,建立連續(xù)的第二數(shù)值個(gè)虛擬地址頁(yè)與物理頁(yè)幀的關(guān)聯(lián)映射,以使所述同一進(jìn)程快速讀取物理內(nèi)存。ー種缺頁(yè)異常的處理方法,包括當(dāng)同一進(jìn)程在同一 VMA中連續(xù)發(fā)生缺頁(yè)異常的次數(shù)達(dá)到預(yù)置閾值時(shí),獲取第三數(shù)值,所述第三數(shù)值為所述VMA中未與物理頁(yè)幀關(guān)聯(lián)映射的虛擬地址頁(yè)的個(gè)數(shù);按照關(guān)聯(lián)映射的方向,建立連續(xù)的第三數(shù)值個(gè)虛擬地址頁(yè)與物理頁(yè)幀的關(guān)聯(lián)映射。ー種缺頁(yè)異常的處理裝置,包括第一獲取單元,用于當(dāng)同一進(jìn)程在同一虛擬內(nèi)存區(qū)VMA中連續(xù)發(fā)生缺頁(yè)異常的次 數(shù)達(dá)到預(yù)置閾值時(shí),獲取第一數(shù)值和第二數(shù)值,所述第一數(shù)值為發(fā)生缺頁(yè)異常的次數(shù)達(dá)到預(yù)置閾值后,每次發(fā)生缺頁(yè)異常吋,建立VMA中虛擬地址頁(yè)與物理頁(yè)幀關(guān)聯(lián)映射的個(gè)數(shù),所述第二數(shù)值為所述同一進(jìn)程所在的VMA中未映射物理頁(yè)幀的虛擬地址頁(yè)的個(gè)數(shù);比較單元,用于比較所述第一獲取單元獲取的第一數(shù)值和第二數(shù)值的大??;第一映射建立単元,用于當(dāng)所述比較単元比較出所述第二數(shù)值大于等于所述第一數(shù)值時(shí),毎次發(fā)生缺頁(yè)異常時(shí),按照關(guān)聯(lián)映射的方向,建立連續(xù)的第一數(shù)值個(gè)虛擬地址頁(yè)與物理頁(yè)幀的關(guān)聯(lián)映射,以使所述同一進(jìn)程快速讀取物理內(nèi)存;所述第一映射建立単元,還用于當(dāng)所述比較単元比較出第二數(shù)值小于第一數(shù)值時(shí),每次缺頁(yè)異常時(shí),按照關(guān)聯(lián)映射的方向,建立連續(xù)的第二數(shù)值個(gè)虛擬地址頁(yè)與物理頁(yè)幀的關(guān)聯(lián)映射,以使所述同一進(jìn)程快速讀取物理內(nèi)存。ー種缺頁(yè)異常的處理裝置,包括第二獲取單元,用于當(dāng)同一進(jìn)程在同一 VMA中連續(xù)發(fā)生缺頁(yè)異常的次數(shù)達(dá)到預(yù)置閾值時(shí),獲取第三數(shù)值,所述第三數(shù)值為所述VMA中未與物理頁(yè)幀關(guān)聯(lián)映射的虛擬地址頁(yè)的個(gè)數(shù);第二映射建立単元,用于按照關(guān)聯(lián)映射的方向,建立連續(xù)的所述第二獲取單元獲取的第三數(shù)值個(gè)虛擬地址頁(yè)與物理頁(yè)幀的關(guān)聯(lián)映射。一種計(jì)算機(jī)系統(tǒng),包括所述計(jì)算機(jī)系統(tǒng)包括處理器和存儲(chǔ)器,所述處理器上運(yùn)行有操作系統(tǒng),所述操作系統(tǒng)之上運(yùn)行有至少ー種應(yīng)用程序,所述應(yīng)用程序關(guān)聯(lián)有/表現(xiàn)為進(jìn)程,所述存儲(chǔ)器中劃分有虛擬內(nèi)存和物理內(nèi)存;其中當(dāng)進(jìn)程訪(fǎng)問(wèn)的虛擬地址頁(yè)與物理頁(yè)幀未建立關(guān)聯(lián)映射,所述處理器引發(fā)一次缺頁(yè)異常,所述處理器處理所述缺頁(yè)異常,所述處理器為上述技術(shù)方案中任意一項(xiàng)所述的缺頁(yè)異常的處理裝置。本發(fā)明實(shí)施例采用當(dāng)同一進(jìn)程在同一虛擬內(nèi)存區(qū)VMA中連續(xù)發(fā)生缺頁(yè)異常的次數(shù)達(dá)到預(yù)置閾值時(shí),獲取第一數(shù)值和第二數(shù)值,所述第一數(shù)值為發(fā)生缺頁(yè)異常的次數(shù)達(dá)到預(yù)置閾值后,每次發(fā)生缺頁(yè)異常時(shí),建立VMA中虛擬地址頁(yè)與物理頁(yè)幀關(guān)聯(lián)映射的個(gè)數(shù),所述第二數(shù)值為所述同一進(jìn)程所在的VMA中未映射物理頁(yè)幀的虛擬地址頁(yè)的個(gè)數(shù);比較所述獲取的第一數(shù)值和所述第二數(shù)值的大?。划?dāng)所述第二數(shù)值大于等于所述第一數(shù)值時(shí),毎次發(fā)生缺頁(yè)異常時(shí),按照關(guān)聯(lián)映射的方向,建立連續(xù)的第一數(shù)值個(gè)虛擬地址頁(yè)與物理頁(yè)幀的關(guān)聯(lián)映射,以使所述同一進(jìn)程快速讀取物理內(nèi)存;當(dāng)所述第二數(shù)值小于第一數(shù)值時(shí),毎次缺頁(yè)異常時(shí),按照關(guān)聯(lián)映射的方向,建立連續(xù)的第二數(shù)值個(gè)虛擬地址頁(yè)與物理頁(yè)幀的關(guān)聯(lián)映射,以使所述同一進(jìn)程快速讀取物理內(nèi)存。與現(xiàn)有技術(shù)相比,本發(fā)明實(shí)施例提供的缺頁(yè)異常的處理方法,可以在一次缺頁(yè)異常中建立多個(gè)虛擬地址與物理頁(yè)幀的關(guān)聯(lián)關(guān)聯(lián)映射,從而減少缺頁(yè)異常的次數(shù),提高系統(tǒng)性能。
圖I是本發(fā)明實(shí)施例中缺頁(yè)異常的處理方法的ー實(shí)施例示意圖;圖2是本發(fā)明實(shí)施例中缺頁(yè)異常的處理方法的另ー實(shí)施例示意圖;圖3是本發(fā)明實(shí)施例應(yīng)用場(chǎng)景中的一示意圖;圖4是本發(fā)明實(shí)施例應(yīng)用場(chǎng)景中的另ー示意圖;圖5是本發(fā)明實(shí)施例應(yīng)用場(chǎng)景中的另ー示意圖;圖6是本發(fā)明實(shí)施例應(yīng)用場(chǎng)景中的另ー示意圖;圖7是本發(fā)明實(shí)施例應(yīng)用場(chǎng)景中的另ー示意圖;圖8是本發(fā)明實(shí)施例中處理裝置的ー實(shí)施例示意圖;圖9是本發(fā)明實(shí)施例中處理裝置的一另實(shí)施例示意圖;圖10是本發(fā)明實(shí)施例中處理裝置的另ー實(shí)施例示意圖;圖11是本發(fā)明實(shí)施例中處理裝置的另ー實(shí)施例示意圖;圖12是本發(fā)明實(shí)施例中處理裝置的另ー實(shí)施例示意圖;圖13是本發(fā)明實(shí)施例中處理裝置的另ー實(shí)施例示意圖;圖14是本發(fā)明實(shí)施例中系統(tǒng)的ー實(shí)施例示意圖。
具體實(shí)施例方式本發(fā)明實(shí)施例提供ー種缺頁(yè)異常處理方法,可以在一次缺頁(yè)異常中申請(qǐng)分配多個(gè)頁(yè)面,從而減少缺頁(yè)異常的次數(shù),提高系統(tǒng)性能。本發(fā)明實(shí)施例還提供相應(yīng)的處理器。以下分別進(jìn)行詳細(xì)說(shuō)明。參閱圖1,本發(fā)明實(shí)施例提供的缺頁(yè)異常的處理方法的一實(shí)施例包括101、當(dāng)同一進(jìn)程在同一虛擬內(nèi)存區(qū)VMA中連續(xù)發(fā)生缺頁(yè)異常的次數(shù)達(dá)到預(yù)置閾值時(shí),獲取第一數(shù)值和第二數(shù)值。所述第一數(shù)值為發(fā)生缺頁(yè)異常的次數(shù)達(dá)到預(yù)置閾值后,每次發(fā)生缺頁(yè)異常吋,建立VMA中虛擬地址頁(yè)與物理頁(yè)幀關(guān)聯(lián)映射的個(gè)數(shù),所述第二數(shù)值為所述同一進(jìn)程所在的VMA中未映射物理頁(yè)幀的虛擬地址頁(yè)的個(gè)數(shù)。內(nèi)存可以視為連續(xù)的字節(jié),即內(nèi)存為字節(jié)數(shù)組,內(nèi)存單元的地址編號(hào),可作為字節(jié)數(shù)組的索引,分頁(yè)管理吋,將4KB個(gè)字節(jié)視為ー頁(yè)。此時(shí),內(nèi)存變成了連續(xù)的頁(yè),即內(nèi)存為頁(yè)數(shù)組,每ー頁(yè)物理內(nèi)存叫頁(yè)幀。進(jìn)程在實(shí)際需要某個(gè)虛擬內(nèi)存區(qū)(VMA, Virtual Memory Area)的數(shù)據(jù)之前,虛擬地址和物理內(nèi)存之間的關(guān)聯(lián)不會(huì)建立,也就是還沒(méi)有建立虛擬地址與物理內(nèi)存中頁(yè)幀的關(guān)聯(lián)映射,如果進(jìn)程訪(fǎng)問(wèn)的虛擬地址尚未與物理內(nèi)存中的頁(yè)幀關(guān)聯(lián)映射,則會(huì)引發(fā)一次缺頁(yè)異常。也就是說(shuō),缺頁(yè)異常是由于虛擬地址的頁(yè)與物理頁(yè)幀沒(méi)有關(guān)聯(lián)映射導(dǎo)致的,處理缺頁(yè)異常,也就需要將VMA的虛擬地址頁(yè)與物理頁(yè)幀關(guān)聯(lián)映射?,F(xiàn)有技術(shù)中處理器每引發(fā)一次缺頁(yè)異常,處理器就會(huì)建立一個(gè)虛擬地址頁(yè)與物理內(nèi)存中ー個(gè)頁(yè)幀的關(guān)聯(lián)映射,這樣導(dǎo)致缺頁(yè)異常次數(shù)增多,假設(shè)系統(tǒng)上有10個(gè)進(jìn)程,進(jìn)程的代碼段大小都為1MB,1MB/4KB = 256頁(yè),則每個(gè)進(jìn)程運(yùn)行所有的代碼將會(huì)需要256次缺頁(yè)異常才能完成,總共需要2560次缺頁(yè)異常能完成。本發(fā)明實(shí)施例,提供ー種方案,就是在引發(fā)一次缺頁(yè)異常時(shí),建立多個(gè)虛擬地址頁(yè)與多個(gè)物理頁(yè)幀的關(guān)聯(lián)映射,從而減少缺頁(yè)異常的次數(shù),假如一次缺頁(yè)異常,直接建立256個(gè)虛擬地址頁(yè)與256個(gè)物理頁(yè)幀的關(guān)聯(lián)映射,那么每個(gè)進(jìn)程只需要I次缺頁(yè)異常就能完成,那么對(duì)于上述10個(gè)進(jìn)程,只需要10次缺頁(yè)異常就能完成。因系統(tǒng)本身某些進(jìn)程的代碼段、數(shù)據(jù)段或者棧上的缺頁(yè)異常并不是很多,如果引發(fā)一次缺頁(yè)異常就建立多個(gè)關(guān)聯(lián)映射,可能會(huì)導(dǎo)致系統(tǒng)空間的浪費(fèi),這樣,可以 設(shè)定ー個(gè)預(yù)置閾值,當(dāng)同一進(jìn)程在同一 VMA中連續(xù)發(fā)生缺頁(yè)異常的次數(shù)達(dá)到預(yù)置閾值時(shí)才啟動(dòng)一次缺頁(yè)異常建立多個(gè)關(guān)聯(lián)映射,沒(méi)達(dá)到預(yù)置閾值,還保持一次缺頁(yè)異常建立一個(gè)關(guān)聯(lián)映射,但本發(fā)明并不限定預(yù)置閾值的大小,預(yù)置閾值可以為1,也就是說(shuō),可以是引發(fā)一次缺頁(yè)異常就建立多個(gè)關(guān)聯(lián)映射。對(duì)于引發(fā)一次缺頁(yè)異常,針對(duì)每個(gè)進(jìn)程建立多少個(gè)VMA中虛擬地址頁(yè)與物理頁(yè)幀的關(guān)聯(lián)映射可能不相同,程序員可能回根據(jù)每個(gè)進(jìn)程的數(shù)據(jù)段和代碼段為該進(jìn)程設(shè)定第一數(shù)值,所述第一數(shù)值為發(fā)生缺頁(yè)異常的次數(shù)達(dá)到預(yù)置閾值后,每次發(fā)生缺頁(yè)異常吋,建立VMA中虛擬地址頁(yè)與物理頁(yè)幀關(guān)聯(lián)映射的個(gè)數(shù),假設(shè)第一數(shù)值為N,處理器在發(fā)生缺頁(yè)異常的次數(shù)達(dá)到預(yù)置閾值后,獲取所述第一數(shù)值。本發(fā)明實(shí)施例中,不僅要獲取第一數(shù)值,還要獲取第二數(shù)值,所述第二數(shù)值為所述同一進(jìn)程所在的VMA中未映射物理頁(yè)幀的虛擬地址頁(yè)的個(gè)數(shù)。所述獲取第二數(shù)值之前,還包括獲取所述VMA中沒(méi)有映射物理地址的虛擬內(nèi)存大??;根據(jù)所述沒(méi)有映射物理地址的虛擬內(nèi)存大小和所述虛擬地址頁(yè)的大小,計(jì)算所述第
ニ數(shù)值。因VMA中的ー些部分被映射了物理內(nèi)存,ー些部分映射硬盤(pán)上的交換文件,ー些部分什么也沒(méi)有映射,所以需要獲取VMA中未映射的虛擬內(nèi)存大小,因?yàn)樘摂M地址頁(yè)的大小為4KB,用VMA中未映射的虛擬內(nèi)存大小除以4KB,就得到了第二數(shù)值,假設(shè)該第二數(shù)值為M0102、比較所述獲取的第一數(shù)值和所述第二數(shù)值的大小。對(duì)于滿(mǎn)足同一進(jìn)程在同一 VMA中連續(xù)發(fā)生缺頁(yè)異常的次數(shù)達(dá)到預(yù)置閾值這一條件吋,需要考慮,一次缺頁(yè)異常建立多少個(gè)關(guān)聯(lián)映射較合適,一次缺頁(yè)異常建立多少個(gè)關(guān)聯(lián)映射取決于第一數(shù)值和第二數(shù)值的大小,所以先比較所述第一數(shù)值和所述第二數(shù)值的大小,當(dāng)所述第二數(shù)值大于等于所述第一數(shù)值時(shí),也就是,當(dāng)M > N時(shí),執(zhí)行步驟103,當(dāng)所述第ニ數(shù)值小于第一數(shù)值時(shí),也就是當(dāng)M < N時(shí),執(zhí)行步驟104。103、當(dāng)所述第二數(shù)值大于等于所述第一數(shù)值時(shí),每次發(fā)生缺頁(yè)異常吋,按照關(guān)聯(lián)映射的方向,建立連續(xù)的第一數(shù)值個(gè)虛擬地址頁(yè)與物理頁(yè)幀的關(guān)聯(lián)映射,以使所述同一進(jìn)程快速讀取物理內(nèi)存。舉例來(lái)說(shuō),當(dāng)N = 64,M = 256時(shí),每次缺頁(yè)異常可以建立64個(gè)關(guān)聯(lián)映射,那么4次缺頁(yè)異常就可以完成該進(jìn)程。一次建立多個(gè)映射之前,還要獲取所述關(guān)聯(lián)映射的方向,所述關(guān)聯(lián)映射的方向?yàn)閺陌l(fā)生缺頁(yè)異常的虛擬地址頁(yè)對(duì)應(yīng)的物理頁(yè)幀處開(kāi)始向上、向下或同時(shí)向上和向下。這樣建立關(guān)聯(lián)映射時(shí),從發(fā)生缺頁(yè)異常的虛擬地址頁(yè)對(duì)應(yīng)的物理頁(yè)幀處開(kāi)始,按照向上、向下或同時(shí)向上和向下的方向,建立連續(xù)的第一數(shù)值個(gè)虛擬地址頁(yè)與物理頁(yè)幀的關(guān)聯(lián)映射。對(duì)于以上技術(shù)方案的具體理解可以為對(duì)于本發(fā)明實(shí)施例中提到的關(guān)聯(lián)映射的方向有三種,可以是從缺頁(yè)異常的虛擬地址對(duì)應(yīng)的物理頁(yè)幀開(kāi)始,由低地址向高地址一次性建立N個(gè)關(guān)聯(lián)映射,也可以是從缺頁(yè)異常的虛擬地址對(duì)應(yīng)的物理頁(yè)幀開(kāi)始,由高地址向低地址一次性建立N個(gè)關(guān)聯(lián)映射,還可以是從缺頁(yè)異常的虛擬地址對(duì)應(yīng)的物理頁(yè)幀開(kāi)始,分別向低地址和高地址同時(shí)關(guān)聯(lián)映射,總共建立N個(gè)關(guān)聯(lián)映射。對(duì)于按照哪個(gè)方向關(guān)聯(lián)映射,根據(jù)獲取的方向進(jìn)行建立,如果獲取的是由低到高,那么就由低到高建立,如果是其他兩種,就按照其他兩種方向關(guān)聯(lián)映射。所述獲取所述關(guān)聯(lián)映射的方向之前,還包括統(tǒng)計(jì)所述同一進(jìn)程在所述VMA中發(fā)生第預(yù)置閾值次缺頁(yè)異常之前,發(fā)生的缺頁(yè)異常的虛擬地址連續(xù)遞增的次數(shù)和連續(xù)遞減的次數(shù);計(jì)算所述連續(xù)遞增次數(shù)與連續(xù)遞減次數(shù)的差值;根據(jù)所述連續(xù)遞增次數(shù)與連續(xù)遞減次數(shù)的差值,確定所述關(guān)聯(lián)映射的方向。例如,假設(shè)同一進(jìn)程在同一個(gè)VMA中,發(fā)生第預(yù)置閾值次缺頁(yè)異常吋,前(預(yù)置閾值-I)次缺頁(yè)異常的虛擬地址連續(xù)遞增的次數(shù)為A,連續(xù)遞減的次數(shù)為B,那么兩者的差值為X = A-B,使用兩者的差值與ー個(gè)預(yù)先設(shè)定的經(jīng)驗(yàn)值進(jìn)行比較,假設(shè)該經(jīng)驗(yàn)值為C,當(dāng)X >C時(shí),從缺頁(yè)異常的虛擬地址對(duì)應(yīng)的物理頁(yè)幀開(kāi)始,由低地址向高地址一次性建立N個(gè)關(guān)聯(lián)映射,當(dāng)X < -C時(shí),從缺頁(yè)異常的虛擬地址對(duì)應(yīng)的物理頁(yè)幀開(kāi)始,由高地址向低地址一次性建立N個(gè)關(guān)聯(lián)映射;當(dāng)O < X < |C|時(shí),從缺頁(yè)異常的虛擬地址對(duì)應(yīng)的物理頁(yè)幀開(kāi)始,分別向低地址和高地址同時(shí)關(guān)聯(lián)映射,總共建立N個(gè)關(guān)聯(lián)映射。一次性建立多個(gè)缺頁(yè)異常后,可以避免后續(xù)發(fā)生多次缺頁(yè)異常影響處理器的時(shí)鐘周期,從而可以使所述同ー進(jìn)程快速讀取物理內(nèi)存。104、當(dāng)所述第二數(shù)值小于第一數(shù)值時(shí),毎次缺頁(yè)異常時(shí),按照關(guān)聯(lián)映射的方向,建立連續(xù)的第二數(shù)值個(gè)虛擬地址頁(yè)與物理頁(yè)幀的關(guān)聯(lián)映射,以使所述同一進(jìn)程快速讀取物理內(nèi)存。舉例來(lái)說(shuō),當(dāng)M = 64,N = 256時(shí),那么只需要引發(fā)一次缺頁(yè)異常,建立64個(gè)關(guān)聯(lián)映射就完成了 ー個(gè)進(jìn)程。本步驟中的關(guān)聯(lián)映射的方向與上述104中的相同,在此不再做詳細(xì)贅述。從以上幾個(gè)步驟中可以看出,N = M時(shí),只需要引發(fā)一次缺頁(yè)異常就可以完成ー個(gè)進(jìn)程。本發(fā)明實(shí)施例中,當(dāng)同一進(jìn)程在同一虛擬內(nèi)存區(qū)VMA中連續(xù)發(fā)生缺頁(yè)異常的次數(shù)達(dá)到預(yù)置閾值時(shí),獲取第一數(shù)值和第二數(shù)值,所述第一數(shù)值為發(fā)生缺頁(yè)異常的次數(shù)達(dá)到預(yù)置閾值后,每次發(fā)生缺頁(yè)異常時(shí),建立VMA中虛擬地址頁(yè)與物理頁(yè)幀關(guān)聯(lián)映射的個(gè)數(shù),所述第二數(shù)值為所述同一進(jìn)程所在的VMA中未映射物理頁(yè)幀的虛擬地址頁(yè)的個(gè)數(shù);比較所述獲 取的第一數(shù)值和所述第二數(shù)值的大?。划?dāng)所述第二數(shù)值大于等于所述第一數(shù)值時(shí),毎次發(fā)生缺頁(yè)異常時(shí),按照關(guān)聯(lián)映射的方向,建立連續(xù)的第一數(shù)值個(gè)虛擬地址頁(yè)與物理頁(yè)幀的關(guān)聯(lián)映射,以使所述同一進(jìn)程快速讀取物理內(nèi)存;當(dāng)所述第二數(shù)值小于第一數(shù)值時(shí),毎次缺頁(yè)異常時(shí),按照關(guān)聯(lián)映射的方向,建立連續(xù)的第二數(shù)值個(gè)虛擬地址頁(yè)與物理頁(yè)幀的關(guān)聯(lián)映射,以使所述同一進(jìn)程快速讀取物理內(nèi)存。與現(xiàn)有技術(shù)相比,本發(fā)明實(shí)施例提供的缺頁(yè)異常的處理方法,可以在一次缺頁(yè)異常中建立多個(gè)虛擬地址與物理頁(yè)幀的關(guān)聯(lián)關(guān)聯(lián)映射,從而減少缺頁(yè)異常的次數(shù),提高系統(tǒng)性能。參閱圖2,本發(fā)明實(shí)施例提供的缺頁(yè)異常的處理方法的另ー實(shí)施例包括201、當(dāng)同一進(jìn)程在同一 VMA中連續(xù)發(fā)生缺頁(yè)異常的次數(shù)達(dá)到預(yù)置閾值時(shí),獲取第三數(shù)值,所述第三數(shù)值為所述VMA中未與物理頁(yè)幀關(guān)聯(lián)映射的虛擬地址頁(yè)的個(gè) 數(shù)。因系統(tǒng)本身某些進(jìn)程的代碼段、數(shù)據(jù)段或者棧上的缺頁(yè)異常并不是很多,如果引發(fā)一次缺頁(yè)異常就建立多個(gè)關(guān)聯(lián)映射,可能會(huì)導(dǎo)致系統(tǒng)空間的浪費(fèi),這樣,可以設(shè)定ー個(gè)預(yù)置閾值,當(dāng)同一進(jìn)程在同一 VMA中連續(xù)發(fā)生缺頁(yè)異常的次數(shù)達(dá)到預(yù)置閾值時(shí)才啟動(dòng)一次缺頁(yè)異常建立多個(gè)關(guān)聯(lián)映射,沒(méi)達(dá)到預(yù)置閾值,還保持一次缺頁(yè)建立一個(gè)關(guān)聯(lián)映射,但本發(fā)明并不限定預(yù)置閾值的大小,預(yù)置閾值可以為1,也就是說(shuō),可以是引發(fā)一次缺頁(yè)異常就建立多個(gè)關(guān)聯(lián)映射。所述獲取第三數(shù)值,具體包括獲取所述VMA中沒(méi)有映射物理地址的虛擬內(nèi)存大小;根據(jù)所述沒(méi)有映射物理地址的虛擬內(nèi)存大小和所述虛擬地址頁(yè)的大小,計(jì)算所述第二數(shù)值。舉例來(lái)說(shuō),假設(shè)預(yù)置閾值為H,當(dāng)H次缺頁(yè)異常都是同一進(jìn)程在同一 VMA中連續(xù)發(fā)生的,則獲取VMA中沒(méi)有映射物理地址的虛擬內(nèi)存大小,假設(shè)VMA中沒(méi)有映射物理地址的虛擬內(nèi)存大小=IM = 1024KB。每頁(yè)為4KB,那么第三數(shù)值為1024/4 = 256,則VMA中還未關(guān)聯(lián)映射的頁(yè)數(shù)為256。實(shí)際上,也可以獲取整個(gè)VMA內(nèi)存的大小,包括之前已經(jīng)發(fā)生的(H-I)次關(guān)聯(lián)映射的VMA虛擬內(nèi)存的大小,這種情況,因前面已經(jīng)發(fā)生了 H-I次缺頁(yè)異常,已經(jīng)建立了 H-I個(gè)關(guān)聯(lián)映射,VMA中還未關(guān)聯(lián)映射的頁(yè)數(shù)為((VMA-(H-I)*每頁(yè)的字節(jié)數(shù)))/每頁(yè)的字節(jié)數(shù),本實(shí)施例中,第三數(shù)值為根據(jù)該公式計(jì)算得出,((VMA- (H-I) *每頁(yè)的字節(jié)數(shù)))/每頁(yè)的字節(jié)數(shù)。假設(shè),VMA= 1064KB,H = 10次,每頁(yè)的字節(jié)數(shù)為4K,則將VMA = 1064KB,H = 10,頁(yè)的字節(jié)數(shù)為4K帶入公式可以得出,VMA中還未關(guān)聯(lián)映射的頁(yè)數(shù)為256。202、按照關(guān)聯(lián)映射的方向,建立連續(xù)的第三數(shù)值個(gè)虛擬地址頁(yè)與物理頁(yè)幀的關(guān)聯(lián)映射。本步驟中的關(guān)聯(lián)映射的方向與上述103中的相同,在此不再做詳細(xì)贅述。本實(shí)施例中,按照上述例子,就是前面發(fā)生給了 9次缺頁(yè)異常,先一対一的建立9個(gè)關(guān)聯(lián)映射,到第10次缺頁(yè)異常時(shí),直接一次性建立256個(gè)關(guān)聯(lián)映射,與現(xiàn)有技術(shù)相比,現(xiàn)有技術(shù)中需要256次缺頁(yè)異常建立的關(guān)聯(lián)映射,本發(fā)明實(shí)施例只需要10次就能建立完成。本發(fā)明實(shí)施例中,當(dāng)同一進(jìn)程在同一 VMA中連續(xù)發(fā)生缺頁(yè)異常的次數(shù)達(dá)到預(yù)置閾值時(shí),獲取第三數(shù)值,所述第三數(shù)值為所述VMA中未與物理頁(yè)幀關(guān)聯(lián)映射的虛擬地址頁(yè)的個(gè)數(shù);按照關(guān)聯(lián)映射的方向,建立連續(xù)的第三數(shù)值個(gè)虛擬地址頁(yè)與物理頁(yè)幀的關(guān)聯(lián)映射。與現(xiàn)有技術(shù)相比,本發(fā)明實(shí)施例提供的缺頁(yè)異常的處理方法,可以在一次缺頁(yè)異常中建立多個(gè)虛擬地址與物理地址頁(yè)幀的關(guān)聯(lián)映射,從而減少缺頁(yè)異常的次數(shù),提高系統(tǒng)性能。為了便于理解,下面以三個(gè)具體應(yīng)用場(chǎng)景為了,詳細(xì)說(shuō)明本發(fā)明實(shí)施例提供的缺頁(yè)異常的處理方法參閱圖3,圖3為現(xiàn)有技術(shù)中虛擬地址與物理地址關(guān)聯(lián)映射的示意圖;從中可以看出,每引發(fā)一次缺頁(yè)異常,就對(duì)應(yīng)建立一個(gè)虛擬地址與物理地址頁(yè)幀的關(guān)聯(lián)映射,當(dāng)建立(K-I)次關(guān)聯(lián)映射時(shí),就需要發(fā)生(K-I)次缺頁(yè)異常,當(dāng)K值很大時(shí),這么多次的缺頁(yè)異常降低了操作系統(tǒng)的系能。參閱圖4,圖4為本發(fā)明實(shí)施例提供的虛擬地址與物理地址關(guān)聯(lián)映射的一實(shí)施例 示意圖;從圖4中可以看出,引發(fā)一次缺頁(yè)異常,就建立N個(gè)虛擬地址與物理地址頁(yè)幀的關(guān)聯(lián)映射,當(dāng)N很大吋,不需要像現(xiàn)有技術(shù)中一祥,要引發(fā)N次缺頁(yè)異常,只需要一次缺頁(yè)異常就完成了該進(jìn)程。參閱圖5,圖5為本發(fā)明實(shí)施例提供的關(guān)聯(lián)映射的方向示意圖;從圖5中可以看出,關(guān)聯(lián)映射的方向有三種,可以是從缺頁(yè)異常的虛擬地址對(duì)應(yīng)的頁(yè)幀開(kāi)始,由低地址向高地址一次性建立N個(gè)關(guān)聯(lián)映射,也可以是從缺頁(yè)異常的虛擬地址對(duì)應(yīng)的頁(yè)幀開(kāi)始,由高地址向低地址一次性建立N個(gè)關(guān)聯(lián)映射,還可以是從缺頁(yè)異常的虛擬地址對(duì)應(yīng)的頁(yè)幀開(kāi)始,分別向低地址和高地址同時(shí)關(guān)聯(lián)映射,總共建立N個(gè)關(guān)聯(lián)映射。參閱圖6,圖6為本發(fā)明實(shí)施例提供的虛擬地址與物理地址關(guān)聯(lián)映射的另ー實(shí)施例示意圖;從圖6中可以看出,本應(yīng)用場(chǎng)景是考慮到了某些進(jìn)程的代碼段、數(shù)據(jù)段或者棧上的缺頁(yè)異常不多的情況,對(duì)啟動(dòng)一次缺頁(yè)異常建立多個(gè)關(guān)聯(lián)映射設(shè)置了啟動(dòng)條件,從圖中可以看出,前H-I次引起缺頁(yè)異常后,都是每次建立一個(gè)關(guān)聯(lián)映射,當(dāng)?shù)贖次缺頁(yè)異常時(shí),才一次性的建立了 N個(gè)關(guān)聯(lián)映射。參閱圖7,圖7為本發(fā)明實(shí)施例提供的虛擬地址與物理地址關(guān)聯(lián)映射的另ー實(shí)施例示意圖;從圖7中可以看出,本應(yīng)用場(chǎng)景本應(yīng)用場(chǎng)景是考慮到了某些進(jìn)程的代碼段、數(shù)據(jù)段或者棧上的缺頁(yè)異常不多的情況,對(duì)啟動(dòng)一次缺頁(yè)異常建立多個(gè)關(guān)聯(lián)映射設(shè)置了啟動(dòng)條件,從圖中可以看出,前H-I次引起缺頁(yè)異常后,都是每次建立一個(gè)關(guān)聯(lián)映射,當(dāng)?shù)贖次缺頁(yè)異常時(shí),才一次性的建立了 N-H+1個(gè)關(guān)聯(lián)映射。參閱圖8,本發(fā)明實(shí)施例提供的缺頁(yè)異常的處理裝置的一實(shí)施例包括第一獲取單元301,用于當(dāng)同一進(jìn)程在同一虛擬內(nèi)存區(qū)VMA中連續(xù)發(fā)生缺頁(yè)異常的次數(shù)達(dá)到預(yù)置閾值時(shí),獲取第一數(shù)值和第二數(shù)值,所述第一數(shù)值為發(fā)生缺頁(yè)異常的次數(shù)達(dá)到預(yù)置閾值后,每次發(fā)生缺頁(yè)異常吋,建立VMA中虛擬地址頁(yè)與物理頁(yè)幀關(guān)聯(lián)映射的個(gè)數(shù),所述第二數(shù)值為所述同一進(jìn)程所在的VMA中未映射物理頁(yè)幀的虛擬地址頁(yè)的個(gè)數(shù);比較單元302,用于比較所述第一獲取單元301獲取的第一數(shù)值和第二數(shù)值的大?。坏谝挥成浣g元303,用于當(dāng)所述比較単元302比較出所述第二數(shù)值大于等于所述第一數(shù)值時(shí),毎次發(fā)生缺頁(yè)異常時(shí),按照關(guān)聯(lián)映射的方向,建立連續(xù)的第一數(shù)值個(gè)虛擬地址頁(yè)與物理頁(yè)幀的關(guān)聯(lián)映射,以使所述同一進(jìn)程快速讀取物理內(nèi)存;所述第一映射建立単元303,還用于當(dāng)所述比較単元302比較出第二數(shù)值小于第一數(shù)值時(shí),毎次缺頁(yè)異常時(shí),按照關(guān)聯(lián)映射的方向,建立連續(xù)的第二數(shù)值個(gè)虛擬地址頁(yè)與物理頁(yè)幀的關(guān)聯(lián)映射,以使所述同一進(jìn)程快速讀取物理內(nèi)存。本發(fā)明實(shí)施例中,第一獲取單元301當(dāng)同一進(jìn)程在同一虛擬內(nèi)存區(qū)VMA中連續(xù)發(fā)生缺頁(yè)異常的次數(shù)達(dá)到預(yù)置閾值時(shí),獲取第一數(shù)值和第二數(shù)值,所述第一數(shù)值為發(fā)生缺頁(yè)異常的次數(shù)達(dá)到預(yù)置閾值后,每次發(fā)生缺頁(yè)異常吋,建立VMA中虛擬地址頁(yè)與物理頁(yè)幀關(guān)聯(lián)映射的個(gè)數(shù),所述第二數(shù)值為所述同一進(jìn)程所在的VMA中未映射物理頁(yè)幀的虛擬地址頁(yè)的個(gè)數(shù);比較單元302比較所述第一獲取單元301獲取的第一數(shù)值和第二數(shù)值的大小;第一映射建立単元303當(dāng)所述比較単元302比較出所述第二數(shù)值大于等于所述第一數(shù)值時(shí),每次發(fā)生缺頁(yè)異常時(shí),按照關(guān)聯(lián)映射的方向,建立連續(xù)的第一數(shù)值個(gè)虛擬地址頁(yè)與物理頁(yè)幀的關(guān)聯(lián)映射,以使所述同一進(jìn)程快速讀取物理內(nèi)存;所述第一映射建立単元303當(dāng)所述比較單元302比較出第二數(shù)值小于第一數(shù)值時(shí),毎次缺頁(yè)異常時(shí),按照關(guān)聯(lián)映射的方向,建立連續(xù)的第二數(shù)值個(gè)虛擬地址頁(yè)與物理頁(yè)幀的關(guān)聯(lián)映射,以使所述同一進(jìn)程快速讀取物理內(nèi)存。與現(xiàn)有技術(shù)相比,本發(fā)明實(shí)施例提供的處理裝置,可以在一次缺頁(yè)異常中建立多個(gè)虛擬地址與物理頁(yè)幀的關(guān)聯(lián)映射,從而減少缺頁(yè)異常的次數(shù),提高系統(tǒng)性能。參閱圖9,在上述圖8對(duì)應(yīng)的實(shí)施例的基礎(chǔ)上,本發(fā)明實(shí)施例提供的處理裝置的另ー實(shí)施例還包括所述第一獲取單元301,還用于獲取所述VMA中沒(méi)有映射物理地址的虛擬內(nèi)存大小;第一計(jì)算單元304,用于根據(jù)所述第一獲取單元301獲取的沒(méi)有映射物理地址的虛擬內(nèi)存大小和所述虛擬地址頁(yè)的大小,計(jì)算所述第二數(shù)值。在上述圖8或圖9對(duì)應(yīng)的實(shí)施例的基礎(chǔ)上,本發(fā)明實(shí)施例提供的處理裝置的另ー實(shí)施例還包括所述第一獲取單元301,用于獲取所述關(guān)聯(lián)映射的方向,所述關(guān)聯(lián)映射的方向?yàn)閺陌l(fā)生缺頁(yè)異常的虛擬地址頁(yè)對(duì)應(yīng)的物理頁(yè)幀處開(kāi)始向上、向下或同時(shí)向上和向下;所述第一映射建立單元303,具體用于從發(fā)生缺頁(yè)異常的虛擬地址頁(yè)對(duì)應(yīng)的物理頁(yè)幀處開(kāi)始,按照所述第一獲取單元301獲取的向上、向下或同時(shí)向上和向下的方向,建立連續(xù)的第一數(shù)值個(gè)或第二數(shù)值個(gè)虛擬地址頁(yè)與物理頁(yè)幀的關(guān)聯(lián)映射。參閱圖10,在上述實(shí)施例的基礎(chǔ)上,本發(fā)明實(shí)施例提供的處理裝置的另ー實(shí)施例還包括第一統(tǒng)計(jì)單元305,用于統(tǒng)計(jì)所述同一進(jìn)程在所述VMA中發(fā)生第預(yù)置閾值次缺頁(yè)異常之前,發(fā)生的缺頁(yè)異常的虛擬地址連續(xù)遞增的次數(shù)和連續(xù)遞減的次數(shù);所述第一計(jì)算單元304,還用于計(jì)算所述第一統(tǒng)計(jì)單元305統(tǒng)計(jì)出的連續(xù)遞增次數(shù)與連續(xù)遞減次數(shù)的差值;第一確定單元306,用于根據(jù)所述第一計(jì)算單元304計(jì)算出的連續(xù)遞增次數(shù)與連續(xù)遞減次數(shù)的差值,確定關(guān)聯(lián)映射的方向。參閱圖11,本發(fā)明實(shí)施例提供的處理裝置的另ー實(shí)施例包括第二獲取單元311,用于當(dāng)同一進(jìn)程在同一 VMA中連續(xù)發(fā)生缺頁(yè)異常的次數(shù)達(dá)到預(yù)置閾值時(shí),獲取第三數(shù)值,所述第三數(shù)值為所述VMA中未與物理頁(yè)幀關(guān)聯(lián)映射的虛擬地址頁(yè)的個(gè)數(shù);第二映射建立単元312,用于按照關(guān)聯(lián)映射的方向,建立連續(xù)的所述第二獲取單元311獲取的第三數(shù)值個(gè)虛擬地址頁(yè)與物理頁(yè)幀的關(guān)聯(lián)映射。本發(fā)明實(shí)施例中,第二獲取單元311當(dāng)同一進(jìn)程在同一 VMA中連續(xù)發(fā)生缺頁(yè)異常的次數(shù)達(dá)到預(yù)置閾值時(shí),獲取第三數(shù)值,所述第三數(shù)值為所述VMA中未與物理頁(yè)幀關(guān)聯(lián)映、射的虛擬地址頁(yè)的個(gè)數(shù);第二映射建立単元312按照關(guān)聯(lián)映射的方向,建立連續(xù)的所述第ニ獲取單元311獲取的第三數(shù)值個(gè)虛擬地址頁(yè)與物理頁(yè)幀的關(guān)聯(lián)映射。與現(xiàn)有技術(shù)相比,本發(fā)明實(shí)施例提供的處理裝置,可以在一次缺頁(yè)異常中建立多個(gè)虛擬地址與物理頁(yè)幀的關(guān)聯(lián)映射,從而減少缺頁(yè)異常的次數(shù),提高系統(tǒng)性能。參閱圖12,在上述圖11對(duì)應(yīng)的實(shí)施例的基礎(chǔ)上,本發(fā)明實(shí)施例提供的處理裝置另ー實(shí)施例還包括所述第二獲取單元311,還用于獲取所述VMA中沒(méi)有映射物理地址的虛擬內(nèi)存大小;第二計(jì)算單元313,用于根據(jù)所述第二獲取單元311獲取的沒(méi)有映射物理地址的虛擬內(nèi)存大小和所述虛擬地址頁(yè)的大小,計(jì)算所述第二數(shù)值。在上述圖11或圖12對(duì)應(yīng)的實(shí)施例的基礎(chǔ)上,本發(fā)明實(shí)施例提供的處理裝置另ー實(shí)施例還包括所述第二獲取單元311,還用于獲取所述關(guān)聯(lián)映射的方向,所述關(guān)聯(lián)映射的方向?yàn)閺陌l(fā)生缺頁(yè)異常的虛擬地址頁(yè)對(duì)應(yīng)的物理頁(yè)幀處開(kāi)始向上、向下或同時(shí)向上和向下;所述第二映射建立単元312,具體用于從發(fā)生缺頁(yè)異常的虛擬地址頁(yè)對(duì)應(yīng)的物理頁(yè)幀處開(kāi)始,按照所述第二獲取單元311獲取的向上、向下或同時(shí)向上和向下的方向,建立連續(xù)的第三數(shù)值個(gè)虛擬地址頁(yè)與物理頁(yè)幀的關(guān)聯(lián)映射。參閱圖13,在上述實(shí)施例的基礎(chǔ)上,本發(fā)明實(shí)施例提供的處理裝置另ー實(shí)施例還包括第二統(tǒng)計(jì)單元314,用于統(tǒng)計(jì)所述同一進(jìn)程在所述VMA中發(fā)生第預(yù)置閾值次缺頁(yè)異常之前,發(fā)生的缺頁(yè)異常的虛擬地址連續(xù)遞增的次數(shù)和連續(xù)遞減的次數(shù);所述第二計(jì)算單元313,還用于計(jì)算所述第二統(tǒng)計(jì)單元314統(tǒng)計(jì)出的連續(xù)遞增次數(shù)與連續(xù)遞減次數(shù)的差值;第二確定單元315,用于根據(jù)所述第二計(jì)算單元313計(jì)算出的連續(xù)遞增次數(shù)與連續(xù)遞減次數(shù)的差值,確定所述關(guān)聯(lián)映射的方向。本發(fā)明實(shí)施例中,通過(guò)多個(gè)技術(shù)方案來(lái)實(shí)現(xiàn)缺頁(yè)異常的處理方法,可以在一次缺頁(yè)異常中建立多個(gè)虛擬地址與物理地址頁(yè)幀的關(guān)聯(lián)映射,從而減少缺頁(yè)異常的次數(shù),提高系統(tǒng)性能。本發(fā)明實(shí)施例可以應(yīng)用于各種的操作系統(tǒng)中,例如適用于64位系統(tǒng)。參閱圖14,本發(fā)明實(shí)施例提供了一種計(jì)算機(jī)系統(tǒng),所述計(jì)算機(jī)系統(tǒng)包括處理器20和存儲(chǔ)器30,所述處理器上運(yùn)行有操作系統(tǒng),所述操作系統(tǒng)之上運(yùn)行有至少ー種應(yīng)用程序,所述應(yīng)用程序表現(xiàn)為進(jìn)程,所述存儲(chǔ)器30中劃分有虛擬內(nèi)存301和物理內(nèi)存302 ;其中當(dāng)所述進(jìn)程訪(fǎng)問(wèn)的所述虛擬內(nèi)存中的虛擬地址頁(yè)與所述物理內(nèi)存中的物理頁(yè)幀未建立關(guān)聯(lián)映射,所述處理器引發(fā)一次缺頁(yè)異常,所述處理器處理所述缺頁(yè)異常;所述處理器20,用于當(dāng)同一進(jìn)程在同一虛擬內(nèi)存區(qū)VMA中連續(xù)發(fā)生缺頁(yè)異常的次數(shù)達(dá)到預(yù)置閾值時(shí),獲取第一數(shù)值和第二數(shù)值,所述第一數(shù)值為發(fā)生缺頁(yè)異常的次數(shù)達(dá)到預(yù)置閾值后,每次發(fā)生缺頁(yè)異常時(shí),建立VMA中虛擬地址頁(yè)與物理頁(yè)幀關(guān)聯(lián)映射的個(gè)數(shù),所述第二數(shù)值為所述同一進(jìn)程所在的VMA中未映射物理頁(yè)幀的虛擬地址頁(yè)的個(gè)數(shù);比較所述獲取的第一數(shù)值和所述第二數(shù)值的大小;
當(dāng)所述第二數(shù)值大于等于所述第一數(shù)值時(shí),每次發(fā)生缺頁(yè)異常吋,按照關(guān)聯(lián)映射的方向,建立連續(xù)的第一數(shù)值個(gè)虛擬地址頁(yè)與物理頁(yè)幀的關(guān)聯(lián)映射,以使所述同一進(jìn)程快速讀取物理內(nèi)存;當(dāng)所述第二數(shù)值小于第一數(shù)值時(shí),毎次缺頁(yè)異常時(shí),按照關(guān)聯(lián)映射的方向,建立連續(xù)的第二數(shù)值個(gè)虛擬地址頁(yè)與物理 頁(yè)幀的關(guān)聯(lián)映射,以使所述同一進(jìn)程快速讀取物理內(nèi)存?;蛘撸鎏幚砥?0,用于統(tǒng)計(jì)所述同一進(jìn)程在所述VMA中發(fā)生第預(yù)置閾值次缺頁(yè)異常之前,發(fā)生的缺頁(yè)異常的虛擬地址連續(xù)遞增的次數(shù)和連續(xù)遞減的次數(shù);計(jì)算所述連續(xù)遞增次數(shù)與連續(xù)遞減次數(shù)的差值;根據(jù)所述連續(xù)遞增次數(shù)與連續(xù)遞減次數(shù)的差值,確定所述關(guān)聯(lián)映射的方向。本發(fā)明實(shí)施例中物理內(nèi)存指的是計(jì)算機(jī)中的內(nèi)存、虛擬內(nèi)存為磁盤(pán)或硬盤(pán)提供的內(nèi)存空間。本領(lǐng)域普通技術(shù)人員可以理解上述實(shí)施例的各種方法中的全部或部分步驟是可以通過(guò)程序來(lái)指令相關(guān)的硬件來(lái)完成,該程序可以存儲(chǔ)于ー計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,存儲(chǔ)介質(zhì)可以包括ROM、RAM、磁盤(pán)或光盤(pán)等。以上對(duì)本發(fā)明實(shí)施例所提供的缺頁(yè)異常的處理方法、裝置及系統(tǒng)進(jìn)行了詳細(xì)介紹,本文中應(yīng)用了具體個(gè)例對(duì)本發(fā)明的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說(shuō)明只是用于幫助理解本發(fā)明的方法及其核心思想;同時(shí),對(duì)于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在具體實(shí)施方式
及應(yīng)用范圍上均會(huì)有改變之處,綜上所述,本說(shuō)明書(shū)內(nèi)容不應(yīng)理解為對(duì)本發(fā)明的限制。
權(quán)利要求
1.一種缺頁(yè)異常的處理方法,其特征在于,包括 當(dāng)同一進(jìn)程在同一虛擬內(nèi)存區(qū)VMA中連續(xù)發(fā)生缺頁(yè)異常的次數(shù)達(dá)到預(yù)置閾值時(shí),獲取第一數(shù)值和第二數(shù)值,所述第一數(shù)值為發(fā)生缺頁(yè)異常的次數(shù)達(dá)到預(yù)置閾值后,每次發(fā)生缺頁(yè)異常時(shí),建立VMA中虛擬地址頁(yè)與物理頁(yè)幀關(guān)聯(lián)映射的個(gè)數(shù),所述第二數(shù)值為所述同一進(jìn)程所在的VMA中未映射物理頁(yè)幀的虛擬地址頁(yè)的個(gè)數(shù); 比較所述獲取的第一數(shù)值和所述第二數(shù)值的大??; 當(dāng)所述第二數(shù)值大于等于所述第一數(shù)值時(shí),每次發(fā)生缺頁(yè)異常時(shí),按照關(guān)聯(lián)映射的方向,建立連續(xù)的第一數(shù)值個(gè)虛擬地址頁(yè)與物理頁(yè)幀的關(guān)聯(lián)映射,以使所述同一進(jìn)程快速讀取物理內(nèi)存; 當(dāng)所述第二數(shù)值小于第一數(shù)值時(shí),每次缺頁(yè)異常時(shí),按照關(guān)聯(lián)映射的方向,建立連續(xù)的第二數(shù)值個(gè)虛擬地址頁(yè)與物理頁(yè)幀的關(guān)聯(lián)映射,以使所述同一進(jìn)程快速讀取物理內(nèi)存。
2.根據(jù)權(quán)利要求I所述的方法,其特征在于,所述獲取第二數(shù)值之前,還包括 獲取所述VMA中沒(méi)有映射物理地址的虛擬內(nèi)存大小; 根據(jù)所述沒(méi)有映射物理地址的虛擬內(nèi)存大小和所述虛擬地址頁(yè)的大小,計(jì)算所述第二數(shù)值。
3.根據(jù)權(quán)利要求I或2所述的方法,其特征在于,所述按照關(guān)聯(lián)映射的方向,建立連續(xù)的第一數(shù)值個(gè)或第二數(shù)值個(gè)虛擬地址頁(yè)與物理頁(yè)幀的關(guān)聯(lián)映射,具體包括 獲取所述關(guān)聯(lián)映射的方向,所述關(guān)聯(lián)映射的方向?yàn)閺陌l(fā)生缺頁(yè)異常的虛擬地址頁(yè)對(duì)應(yīng)的物理頁(yè)幀處開(kāi)始向上、向下或同時(shí)向上和向下; 從發(fā)生缺頁(yè)異常的虛擬地址頁(yè)對(duì)應(yīng)的物理頁(yè)幀處開(kāi)始,按照向上、向下或同時(shí)向上和向下的方向,建立連續(xù)的第一數(shù)值個(gè)或第二數(shù)值個(gè)虛擬地址頁(yè)與物理頁(yè)幀的關(guān)聯(lián)映射。
4.根據(jù)權(quán)利要求I或2所述的方法,其特征在于,所述獲取所述關(guān)聯(lián)映射的方向之前,還包括 統(tǒng)計(jì)所述同一進(jìn)程在所述VMA中發(fā)生第預(yù)置閾值次缺頁(yè)異常之前,發(fā)生的缺頁(yè)異常的虛擬地址連續(xù)遞增的次數(shù)和連續(xù)遞減的次數(shù); 計(jì)算所述連續(xù)遞增次數(shù)與連續(xù)遞減次數(shù)的差值;根據(jù)所述連續(xù)遞增次數(shù)與連續(xù)遞減次數(shù)的差值,確定所述關(guān)聯(lián)映射的方向。
5.一種缺頁(yè)異常的處理方法,其特征在于,包括 當(dāng)同一進(jìn)程在同一 VMA中連續(xù)發(fā)生缺頁(yè)異常的次數(shù)達(dá)到預(yù)置閾值時(shí),獲取第三數(shù)值,所述第三數(shù)值為所述VMA中未與物理頁(yè)幀關(guān)聯(lián)映射的虛擬地址頁(yè)的個(gè)數(shù); 按照關(guān)聯(lián)映射的方向,建立連續(xù)的第三數(shù)值個(gè)虛擬地址頁(yè)與物理頁(yè)幀的關(guān)聯(lián)映射。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述獲取第三數(shù)值,具體包括 獲取所述VMA中沒(méi)有映射物理地址的虛擬內(nèi)存大??; 根據(jù)所述沒(méi)有映射物理地址的虛擬內(nèi)存大小和所述虛擬地址頁(yè)的大小,計(jì)算所述第二數(shù)值。
7.根據(jù)權(quán)利要求5或6所述的方法,其特征在于,所述按照關(guān)聯(lián)映射的方向,建立連續(xù)的第三數(shù)值個(gè)虛擬地址頁(yè)與物理頁(yè)幀的關(guān)聯(lián)映射,具體包括 獲取所述關(guān)聯(lián)映射的方向,所述關(guān)聯(lián)映射的方向?yàn)閺陌l(fā)生缺頁(yè)異常的虛擬地址頁(yè)對(duì)應(yīng)的物理頁(yè)幀處開(kāi)始向上、向下或同時(shí)向上和向下;從發(fā)生缺頁(yè)異常的虛擬地址頁(yè)對(duì)應(yīng)的物理頁(yè)幀處開(kāi)始,按照向上、向下或同時(shí)向上和向下的方向,建立連續(xù)的第三數(shù)值個(gè)虛擬地址頁(yè)與物理頁(yè)幀的關(guān)聯(lián)映射。
8.根據(jù)權(quán)利要求7所述的方法,其特征在于,所述獲取所述關(guān)聯(lián)映射的方向之前,還包括 統(tǒng)計(jì)所述同一進(jìn)程在所述VMA中發(fā)生第預(yù)置閾值次缺頁(yè)異常之前,發(fā)生的缺頁(yè)異常的虛擬地址連續(xù)遞增的次數(shù)和連續(xù)遞減的次數(shù); 計(jì)算所述連續(xù)遞增次數(shù)與連續(xù)遞減次數(shù)的差值;根據(jù)所述連續(xù)遞增次數(shù)與連續(xù)遞減次數(shù)的差值,確定所述關(guān)聯(lián)映射的方向。
9.一種缺頁(yè)異常的處理裝置,其特征在于,包括 第一獲取單元,用于當(dāng)同一進(jìn)程在同一虛擬內(nèi)存區(qū)VMA中連續(xù)發(fā)生缺頁(yè)異常的次數(shù)達(dá)到預(yù)置閾值時(shí),獲取第一數(shù)值和第二數(shù)值,所述第一數(shù)值為發(fā)生缺頁(yè)異常的次數(shù)達(dá)到預(yù)置閾值后,每次發(fā)生缺頁(yè)異常時(shí),建立VMA中虛擬地址頁(yè)與物理頁(yè)幀關(guān)聯(lián)映射的個(gè)數(shù),所述第二數(shù)值為所述同一進(jìn)程所在的VMA中未映射物理頁(yè)幀的虛擬地址頁(yè)的個(gè)數(shù); 比較單元,用于比較所述第一獲取單元獲取的第一數(shù)值和第二數(shù)值的大?。? 第一映射建立單元,用于當(dāng)所述比較單元比較出所述第二數(shù)值大于等于所述第一數(shù)值時(shí),每次發(fā)生缺頁(yè)異常時(shí),按照關(guān)聯(lián)映射的方向,建立連續(xù)的第一數(shù)值個(gè)虛擬地址頁(yè)與物理頁(yè)幀的關(guān)聯(lián)映射,以使所述同一進(jìn)程快速讀取物理內(nèi)存; 所述第一映射建立單元,還用于當(dāng)所述比較單元比較出第二數(shù)值小于第一數(shù)值時(shí),每次缺頁(yè)異常時(shí),按照關(guān)聯(lián)映射的方向,建立連續(xù)的第二數(shù)值個(gè)虛擬地址頁(yè)與物理頁(yè)幀的關(guān)聯(lián)映射,以使所述同一進(jìn)程快速讀取物理內(nèi)存。
10.根據(jù)權(quán)利要求9所述的裝置,其特征在于,還包括 所述第一獲取單元,還用于獲取所述VMA中沒(méi)有映射物理地址的虛擬內(nèi)存大??;第一計(jì)算單元,用于根據(jù)所述第一獲取單元獲取的沒(méi)有映射物理地址的虛擬內(nèi)存大小和所述虛擬地址頁(yè)的大小,計(jì)算所述第二數(shù)值。
11.根據(jù)權(quán)利要求9或10所述的裝置,其特征在于, 所述第一獲取單元,用于獲取所述關(guān)聯(lián)映射的方向,所述關(guān)聯(lián)映射的方向?yàn)閺陌l(fā)生缺頁(yè)異常的虛擬地址頁(yè)對(duì)應(yīng)的物理頁(yè)幀處開(kāi)始向上、向下或同時(shí)向上和向下; 所述第一映射建立單元,具體用于從發(fā)生缺頁(yè)異常的虛擬地址頁(yè)對(duì)應(yīng)的物理頁(yè)幀處開(kāi)始,按照所述第一獲取單元獲取的向上、向下或同時(shí)向上和向下的方向,建立連續(xù)的第一數(shù)值個(gè)或第二數(shù)值個(gè)虛擬地址頁(yè)與物理頁(yè)幀的關(guān)聯(lián)映射。
12.根據(jù)權(quán)利要求10所述的裝置,其特征在于,還包括 第一統(tǒng)計(jì)單元,用于統(tǒng)計(jì)所述同一進(jìn)程在所述VMA中發(fā)生第預(yù)置閾值次缺頁(yè)異常之前,發(fā)生的缺頁(yè)異常的虛擬地址連續(xù)遞增的次數(shù)和連續(xù)遞減的次數(shù); 所述第一計(jì)算單元,還用于計(jì)算所述第一統(tǒng)計(jì)單元統(tǒng)計(jì)出的連續(xù)遞增次數(shù)與連續(xù)遞減次數(shù)的差值; 第一確定單元,用于根據(jù)所述第一計(jì)算單元計(jì)算出的連續(xù)遞增次數(shù)與連續(xù)遞減次數(shù)的差值,確定關(guān)聯(lián)映射的方向。
13.—種缺頁(yè)異常的處理裝置,其特征在于,包括 第二獲取單元,用于當(dāng)同一進(jìn)程在同一 VMA中連續(xù)發(fā)生缺頁(yè)異常的次數(shù)達(dá)到預(yù)置閾值時(shí),獲取第三數(shù)值,所述第三數(shù)值為所述VMA中未與物理頁(yè)幀關(guān)聯(lián)映射的虛擬地址頁(yè)的個(gè)數(shù); 第二映射建立單元,用于按照關(guān)聯(lián)映射的方向,建立連續(xù)的所述第二獲取單元獲取的第三數(shù)值個(gè)虛擬地址頁(yè)與物理頁(yè)幀的關(guān)聯(lián)映射。
14.根據(jù)權(quán)利要求13所述的裝置,其特征在于,還包括 所述第二獲取單元,還用于獲取所述VMA中沒(méi)有映射物理地址的虛擬內(nèi)存大小; 第二計(jì)算單元,用于根據(jù)所述第二獲取單元獲取的沒(méi)有映射物理地址的虛擬內(nèi)存大小和所述虛擬地址頁(yè)的大小,計(jì)算所述第二數(shù)值。
15.根據(jù)權(quán)利要求13或14所述的裝置,其特征在于, 所述第二獲取單元,還用于獲取所述關(guān)聯(lián)映射的方向,所述關(guān)聯(lián)映射的方向?yàn)閺陌l(fā)生缺頁(yè)異常的虛擬地址頁(yè)對(duì)應(yīng)的物理頁(yè)幀處開(kāi)始向上、向下或同時(shí)向上和向下; 所述第二映射建立單元,具體用于從發(fā)生缺頁(yè)異常的虛擬地址頁(yè)對(duì)應(yīng)的物理頁(yè)幀處開(kāi)始,按照所述第二獲取單元獲取的向上、向下或同時(shí)向上和向下的方向,建立連續(xù)的第三數(shù)值個(gè)虛擬地址頁(yè)與物理頁(yè)幀的關(guān)聯(lián)映射。
16.根據(jù)權(quán)利要求15所述的裝置,其特征在于,還包括 第二統(tǒng)計(jì)單元,用于統(tǒng)計(jì)所述同一進(jìn)程在所述VMA中發(fā)生第預(yù)置閾值次缺頁(yè)異常之前,發(fā)生的缺頁(yè)異常的虛擬地址連續(xù)遞增的次數(shù)和連續(xù)遞減的次數(shù); 所述第二計(jì)算單元,還用于計(jì)算所述第二統(tǒng)計(jì)單元統(tǒng)計(jì)出的連續(xù)遞增次數(shù)與連續(xù)遞減次數(shù)的差值; 第二確定單元,用于根據(jù)所述第二計(jì)算單元計(jì)算出的連續(xù)遞增次數(shù)與連續(xù)遞減次數(shù)的差值,確定所述關(guān)聯(lián)映射的方向。
17.一種計(jì)算機(jī)系統(tǒng),其特征在于,包括所述計(jì)算機(jī)系統(tǒng)包括處理器和存儲(chǔ)器,所述處理器上運(yùn)行有操作系統(tǒng),所述操作系統(tǒng)之上運(yùn)行有至少一種應(yīng)用程序,所述應(yīng)用程序表現(xiàn)為進(jìn)程,所述存儲(chǔ)器中劃分有虛擬內(nèi)存和物理內(nèi)存;其中當(dāng)所述進(jìn)程訪(fǎng)問(wèn)的所述虛擬內(nèi)存中的虛擬地址頁(yè)與所述物理內(nèi)存中的物理頁(yè)幀未建立關(guān)聯(lián)映射,所述處理器弓I發(fā)一次缺頁(yè)異常,所述處理器處理所述缺頁(yè)異常,所述處理器為上述權(quán)利要求9 16任意一項(xiàng)所述的缺頁(yè)異常的處理裝置。
全文摘要
本發(fā)明公開(kāi)了一種缺頁(yè)異常的處理方法,當(dāng)同一進(jìn)程在同一虛擬內(nèi)存區(qū)VMA中連續(xù)發(fā)生缺頁(yè)異常的次數(shù)達(dá)到預(yù)置閾值時(shí),獲取第一數(shù)值和第二數(shù)值;比較所述獲取的第一數(shù)值和所述第二數(shù)值的大?。划?dāng)所述第二數(shù)值大于等于所述第一數(shù)值時(shí),每次發(fā)生缺頁(yè)異常時(shí),按照關(guān)聯(lián)映射的方向,建立連續(xù)的第一數(shù)值個(gè)虛擬地址頁(yè)與物理頁(yè)幀的關(guān)聯(lián)映射,以使所述同一進(jìn)程快速讀取物理內(nèi)存;當(dāng)所述第二數(shù)值小于第一數(shù)值時(shí),每次缺頁(yè)異常時(shí),按照關(guān)聯(lián)映射的方向,建立連續(xù)的第二數(shù)值個(gè)虛擬地址頁(yè)與物理頁(yè)幀的關(guān)聯(lián)映射,以使所述同一進(jìn)程快速讀取物理內(nèi)存。本發(fā)明實(shí)施例提供的技術(shù)方案可以減少發(fā)生缺頁(yè)異常的次數(shù),提高系統(tǒng)性能。
文檔編號(hào)G06F12/08GK102662864SQ201210087940
公開(kāi)日2012年9月12日 申請(qǐng)日期2012年3月29日 優(yōu)先權(quán)日2012年3月29日
發(fā)明者林志南 申請(qǐng)人:華為技術(shù)有限公司