欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種缺頁異常的處理方法、裝置及系統(tǒng)的制作方法

文檔序號:6367174閱讀:210來源:國知局
專利名稱:一種缺頁異常的處理方法、裝置及系統(tǒng)的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及操作系統(tǒng)技術(shù)領(lǐng)域,具體涉及ー種缺頁異常的處理方法、裝置及系統(tǒng)。
背景技術(shù)
現(xiàn)在的操作系統(tǒng),都使用基于分頁機制的虛擬內(nèi)存,虛擬內(nèi)存一般有4G,虛擬地址(virtual address)就是4G虛擬地址空間中的地址,姆個進程有4GB的虛擬地址空間,進程通過訪問4GB的虛擬地址進行物理內(nèi)存的訪問。內(nèi)存可以視為連續(xù)的字節(jié),即內(nèi)存為字節(jié)數(shù)組,內(nèi)存單元的地址編號,可作為字節(jié)數(shù)組的索引,分頁管理吋,將4KB個字節(jié)視為ー頁。此時,內(nèi)存變成了連續(xù)的頁,即內(nèi)存為頁數(shù)組,每ー頁物理內(nèi)存叫頁幀,以頁為單位對內(nèi)存進行編號,該編號可作為頁數(shù)組的索引,又稱為頁巾貞號。進程在實際需要某個虛擬內(nèi)存區(qū)(VMA, Virtual Memory Area)的數(shù)據(jù)之前,虛擬地址和物理內(nèi)存之間的關(guān)聯(lián)不會建立。如果進程訪問的虛擬地址空間尚未與物理內(nèi)存中的頁中貞關(guān)聯(lián),貝1J中央處理器(CPU, Central Processing Unit)自動地引發(fā)ー個缺頁異?!,F(xiàn)有技術(shù)中發(fā)生缺頁異常吋,CPU在缺頁異常處理函數(shù)中做相應處理,找到虛擬地址對應的VMA,如果該虛擬地址屬于代碼段或者數(shù)據(jù)段,則申請ー個4KB頁映射到該VMA,如果該地址屬于棧,則擴展棧對應的VMA,并調(diào)入ー個4KB頁以擴展該VMA。在對現(xiàn)有技術(shù)的研究和實踐過程中,本發(fā)明的發(fā)明人發(fā)現(xiàn),無論進程訪問代碼段數(shù)據(jù)段還是訪問棧地址所引發(fā)的缺頁異常,針對請求調(diào)頁方面,都是每次缺頁異常申請分配ー頁,當程序本身的代碼段、數(shù)據(jù)段或者棧都較大時,那么對對應段的訪問將導致大量的缺頁異常,需要多次請求調(diào)頁,假設一個程序代碼段大小為1M,那么該程序?qū)Υa段的訪問最多將需要經(jīng)歷256次缺頁異常才能完成,需要申請256次調(diào)頁,降低了系統(tǒng)的性能。

發(fā)明內(nèi)容
本發(fā)明實施例提供ー種缺頁異常處理方法,可以在一次缺頁異常中申請分配多個頁面,從而減少缺頁異常的次數(shù),提高系統(tǒng)性能。本發(fā)明實施例還提供相應的裝置及系統(tǒng)。ー種缺頁異常的處理方法,包括當同一進程在同一虛擬內(nèi)存區(qū)VMA中連續(xù)發(fā)生缺頁異常的次數(shù)達到預置閾值吋,獲取第一數(shù)值和第二數(shù)值,所述第一數(shù)值為發(fā)生缺頁異常的次數(shù)達到預置閾值后,每次發(fā)生缺頁異常吋,建立VMA中虛擬地址頁與物理頁幀關(guān)聯(lián)映射的個數(shù),所述第二數(shù)值為所述同一進程所在的VMA中未映射物理頁幀的虛擬地址頁的個數(shù);比較所述獲取的第一數(shù)值和所述第二數(shù)值的大?。划斔龅诙?shù)值大于等于所述第一數(shù)值時,毎次發(fā)生缺頁異常時,按照關(guān)聯(lián)映射的方向,建立連續(xù)的第一數(shù)值個虛擬地址頁與物理頁幀的關(guān)聯(lián)映射,以使所述同一進程快速讀取物理內(nèi)存;
當所述第二數(shù)值小于第一數(shù)值時,毎次缺頁異常時,按照關(guān)聯(lián)映射的方向,建立連續(xù)的第二數(shù)值個虛擬地址頁與物理頁幀的關(guān)聯(lián)映射,以使所述同一進程快速讀取物理內(nèi)存。ー種缺頁異常的處理方法,包括當同一進程在同一 VMA中連續(xù)發(fā)生缺頁異常的次數(shù)達到預置閾值時,獲取第三數(shù)值,所述第三數(shù)值為所述VMA中未與物理頁幀關(guān)聯(lián)映射的虛擬地址頁的個數(shù);按照關(guān)聯(lián)映射的方向,建立連續(xù)的第三數(shù)值個虛擬地址頁與物理頁幀的關(guān)聯(lián)映射。ー種缺頁異常的處理裝置,包括第一獲取單元,用于當同一進程在同一虛擬內(nèi)存區(qū)VMA中連續(xù)發(fā)生缺頁異常的次 數(shù)達到預置閾值時,獲取第一數(shù)值和第二數(shù)值,所述第一數(shù)值為發(fā)生缺頁異常的次數(shù)達到預置閾值后,每次發(fā)生缺頁異常吋,建立VMA中虛擬地址頁與物理頁幀關(guān)聯(lián)映射的個數(shù),所述第二數(shù)值為所述同一進程所在的VMA中未映射物理頁幀的虛擬地址頁的個數(shù);比較單元,用于比較所述第一獲取單元獲取的第一數(shù)值和第二數(shù)值的大??;第一映射建立単元,用于當所述比較単元比較出所述第二數(shù)值大于等于所述第一數(shù)值時,毎次發(fā)生缺頁異常時,按照關(guān)聯(lián)映射的方向,建立連續(xù)的第一數(shù)值個虛擬地址頁與物理頁幀的關(guān)聯(lián)映射,以使所述同一進程快速讀取物理內(nèi)存;所述第一映射建立単元,還用于當所述比較単元比較出第二數(shù)值小于第一數(shù)值時,每次缺頁異常時,按照關(guān)聯(lián)映射的方向,建立連續(xù)的第二數(shù)值個虛擬地址頁與物理頁幀的關(guān)聯(lián)映射,以使所述同一進程快速讀取物理內(nèi)存。ー種缺頁異常的處理裝置,包括第二獲取單元,用于當同一進程在同一 VMA中連續(xù)發(fā)生缺頁異常的次數(shù)達到預置閾值時,獲取第三數(shù)值,所述第三數(shù)值為所述VMA中未與物理頁幀關(guān)聯(lián)映射的虛擬地址頁的個數(shù);第二映射建立単元,用于按照關(guān)聯(lián)映射的方向,建立連續(xù)的所述第二獲取單元獲取的第三數(shù)值個虛擬地址頁與物理頁幀的關(guān)聯(lián)映射。一種計算機系統(tǒng),包括所述計算機系統(tǒng)包括處理器和存儲器,所述處理器上運行有操作系統(tǒng),所述操作系統(tǒng)之上運行有至少ー種應用程序,所述應用程序關(guān)聯(lián)有/表現(xiàn)為進程,所述存儲器中劃分有虛擬內(nèi)存和物理內(nèi)存;其中當進程訪問的虛擬地址頁與物理頁幀未建立關(guān)聯(lián)映射,所述處理器引發(fā)一次缺頁異常,所述處理器處理所述缺頁異常,所述處理器為上述技術(shù)方案中任意一項所述的缺頁異常的處理裝置。本發(fā)明實施例采用當同一進程在同一虛擬內(nèi)存區(qū)VMA中連續(xù)發(fā)生缺頁異常的次數(shù)達到預置閾值時,獲取第一數(shù)值和第二數(shù)值,所述第一數(shù)值為發(fā)生缺頁異常的次數(shù)達到預置閾值后,每次發(fā)生缺頁異常時,建立VMA中虛擬地址頁與物理頁幀關(guān)聯(lián)映射的個數(shù),所述第二數(shù)值為所述同一進程所在的VMA中未映射物理頁幀的虛擬地址頁的個數(shù);比較所述獲取的第一數(shù)值和所述第二數(shù)值的大?。划斔龅诙?shù)值大于等于所述第一數(shù)值時,毎次發(fā)生缺頁異常時,按照關(guān)聯(lián)映射的方向,建立連續(xù)的第一數(shù)值個虛擬地址頁與物理頁幀的關(guān)聯(lián)映射,以使所述同一進程快速讀取物理內(nèi)存;當所述第二數(shù)值小于第一數(shù)值時,毎次缺頁異常時,按照關(guān)聯(lián)映射的方向,建立連續(xù)的第二數(shù)值個虛擬地址頁與物理頁幀的關(guān)聯(lián)映射,以使所述同一進程快速讀取物理內(nèi)存。與現(xiàn)有技術(shù)相比,本發(fā)明實施例提供的缺頁異常的處理方法,可以在一次缺頁異常中建立多個虛擬地址與物理頁幀的關(guān)聯(lián)關(guān)聯(lián)映射,從而減少缺頁異常的次數(shù),提高系統(tǒng)性能。


圖I是本發(fā)明實施例中缺頁異常的處理方法的ー實施例示意圖;圖2是本發(fā)明實施例中缺頁異常的處理方法的另ー實施例示意圖;圖3是本發(fā)明實施例應用場景中的一示意圖;圖4是本發(fā)明實施例應用場景中的另ー示意圖;圖5是本發(fā)明實施例應用場景中的另ー示意圖;圖6是本發(fā)明實施例應用場景中的另ー示意圖;圖7是本發(fā)明實施例應用場景中的另ー示意圖;圖8是本發(fā)明實施例中處理裝置的ー實施例示意圖;圖9是本發(fā)明實施例中處理裝置的一另實施例示意圖;圖10是本發(fā)明實施例中處理裝置的另ー實施例示意圖;圖11是本發(fā)明實施例中處理裝置的另ー實施例示意圖;圖12是本發(fā)明實施例中處理裝置的另ー實施例示意圖;圖13是本發(fā)明實施例中處理裝置的另ー實施例示意圖;圖14是本發(fā)明實施例中系統(tǒng)的ー實施例示意圖。
具體實施例方式本發(fā)明實施例提供ー種缺頁異常處理方法,可以在一次缺頁異常中申請分配多個頁面,從而減少缺頁異常的次數(shù),提高系統(tǒng)性能。本發(fā)明實施例還提供相應的處理器。以下分別進行詳細說明。參閱圖1,本發(fā)明實施例提供的缺頁異常的處理方法的一實施例包括101、當同一進程在同一虛擬內(nèi)存區(qū)VMA中連續(xù)發(fā)生缺頁異常的次數(shù)達到預置閾值時,獲取第一數(shù)值和第二數(shù)值。所述第一數(shù)值為發(fā)生缺頁異常的次數(shù)達到預置閾值后,每次發(fā)生缺頁異常吋,建立VMA中虛擬地址頁與物理頁幀關(guān)聯(lián)映射的個數(shù),所述第二數(shù)值為所述同一進程所在的VMA中未映射物理頁幀的虛擬地址頁的個數(shù)。內(nèi)存可以視為連續(xù)的字節(jié),即內(nèi)存為字節(jié)數(shù)組,內(nèi)存單元的地址編號,可作為字節(jié)數(shù)組的索引,分頁管理吋,將4KB個字節(jié)視為ー頁。此時,內(nèi)存變成了連續(xù)的頁,即內(nèi)存為頁數(shù)組,每ー頁物理內(nèi)存叫頁幀。進程在實際需要某個虛擬內(nèi)存區(qū)(VMA, Virtual Memory Area)的數(shù)據(jù)之前,虛擬地址和物理內(nèi)存之間的關(guān)聯(lián)不會建立,也就是還沒有建立虛擬地址與物理內(nèi)存中頁幀的關(guān)聯(lián)映射,如果進程訪問的虛擬地址尚未與物理內(nèi)存中的頁幀關(guān)聯(lián)映射,則會引發(fā)一次缺頁異常。也就是說,缺頁異常是由于虛擬地址的頁與物理頁幀沒有關(guān)聯(lián)映射導致的,處理缺頁異常,也就需要將VMA的虛擬地址頁與物理頁幀關(guān)聯(lián)映射。現(xiàn)有技術(shù)中處理器每引發(fā)一次缺頁異常,處理器就會建立一個虛擬地址頁與物理內(nèi)存中ー個頁幀的關(guān)聯(lián)映射,這樣導致缺頁異常次數(shù)增多,假設系統(tǒng)上有10個進程,進程的代碼段大小都為1MB,1MB/4KB = 256頁,則每個進程運行所有的代碼將會需要256次缺頁異常才能完成,總共需要2560次缺頁異常能完成。本發(fā)明實施例,提供ー種方案,就是在引發(fā)一次缺頁異常時,建立多個虛擬地址頁與多個物理頁幀的關(guān)聯(lián)映射,從而減少缺頁異常的次數(shù),假如一次缺頁異常,直接建立256個虛擬地址頁與256個物理頁幀的關(guān)聯(lián)映射,那么每個進程只需要I次缺頁異常就能完成,那么對于上述10個進程,只需要10次缺頁異常就能完成。因系統(tǒng)本身某些進程的代碼段、數(shù)據(jù)段或者棧上的缺頁異常并不是很多,如果引發(fā)一次缺頁異常就建立多個關(guān)聯(lián)映射,可能會導致系統(tǒng)空間的浪費,這樣,可以 設定ー個預置閾值,當同一進程在同一 VMA中連續(xù)發(fā)生缺頁異常的次數(shù)達到預置閾值時才啟動一次缺頁異常建立多個關(guān)聯(lián)映射,沒達到預置閾值,還保持一次缺頁異常建立一個關(guān)聯(lián)映射,但本發(fā)明并不限定預置閾值的大小,預置閾值可以為1,也就是說,可以是引發(fā)一次缺頁異常就建立多個關(guān)聯(lián)映射。對于引發(fā)一次缺頁異常,針對每個進程建立多少個VMA中虛擬地址頁與物理頁幀的關(guān)聯(lián)映射可能不相同,程序員可能回根據(jù)每個進程的數(shù)據(jù)段和代碼段為該進程設定第一數(shù)值,所述第一數(shù)值為發(fā)生缺頁異常的次數(shù)達到預置閾值后,每次發(fā)生缺頁異常吋,建立VMA中虛擬地址頁與物理頁幀關(guān)聯(lián)映射的個數(shù),假設第一數(shù)值為N,處理器在發(fā)生缺頁異常的次數(shù)達到預置閾值后,獲取所述第一數(shù)值。本發(fā)明實施例中,不僅要獲取第一數(shù)值,還要獲取第二數(shù)值,所述第二數(shù)值為所述同一進程所在的VMA中未映射物理頁幀的虛擬地址頁的個數(shù)。所述獲取第二數(shù)值之前,還包括獲取所述VMA中沒有映射物理地址的虛擬內(nèi)存大小;根據(jù)所述沒有映射物理地址的虛擬內(nèi)存大小和所述虛擬地址頁的大小,計算所述第
ニ數(shù)值。因VMA中的ー些部分被映射了物理內(nèi)存,ー些部分映射硬盤上的交換文件,ー些部分什么也沒有映射,所以需要獲取VMA中未映射的虛擬內(nèi)存大小,因為虛擬地址頁的大小為4KB,用VMA中未映射的虛擬內(nèi)存大小除以4KB,就得到了第二數(shù)值,假設該第二數(shù)值為M0102、比較所述獲取的第一數(shù)值和所述第二數(shù)值的大小。對于滿足同一進程在同一 VMA中連續(xù)發(fā)生缺頁異常的次數(shù)達到預置閾值這一條件吋,需要考慮,一次缺頁異常建立多少個關(guān)聯(lián)映射較合適,一次缺頁異常建立多少個關(guān)聯(lián)映射取決于第一數(shù)值和第二數(shù)值的大小,所以先比較所述第一數(shù)值和所述第二數(shù)值的大小,當所述第二數(shù)值大于等于所述第一數(shù)值時,也就是,當M > N時,執(zhí)行步驟103,當所述第ニ數(shù)值小于第一數(shù)值時,也就是當M < N時,執(zhí)行步驟104。103、當所述第二數(shù)值大于等于所述第一數(shù)值時,每次發(fā)生缺頁異常吋,按照關(guān)聯(lián)映射的方向,建立連續(xù)的第一數(shù)值個虛擬地址頁與物理頁幀的關(guān)聯(lián)映射,以使所述同一進程快速讀取物理內(nèi)存。舉例來說,當N = 64,M = 256時,每次缺頁異常可以建立64個關(guān)聯(lián)映射,那么4次缺頁異常就可以完成該進程。一次建立多個映射之前,還要獲取所述關(guān)聯(lián)映射的方向,所述關(guān)聯(lián)映射的方向為從發(fā)生缺頁異常的虛擬地址頁對應的物理頁幀處開始向上、向下或同時向上和向下。這樣建立關(guān)聯(lián)映射時,從發(fā)生缺頁異常的虛擬地址頁對應的物理頁幀處開始,按照向上、向下或同時向上和向下的方向,建立連續(xù)的第一數(shù)值個虛擬地址頁與物理頁幀的關(guān)聯(lián)映射。對于以上技術(shù)方案的具體理解可以為對于本發(fā)明實施例中提到的關(guān)聯(lián)映射的方向有三種,可以是從缺頁異常的虛擬地址對應的物理頁幀開始,由低地址向高地址一次性建立N個關(guān)聯(lián)映射,也可以是從缺頁異常的虛擬地址對應的物理頁幀開始,由高地址向低地址一次性建立N個關(guān)聯(lián)映射,還可以是從缺頁異常的虛擬地址對應的物理頁幀開始,分別向低地址和高地址同時關(guān)聯(lián)映射,總共建立N個關(guān)聯(lián)映射。對于按照哪個方向關(guān)聯(lián)映射,根據(jù)獲取的方向進行建立,如果獲取的是由低到高,那么就由低到高建立,如果是其他兩種,就按照其他兩種方向關(guān)聯(lián)映射。所述獲取所述關(guān)聯(lián)映射的方向之前,還包括統(tǒng)計所述同一進程在所述VMA中發(fā)生第預置閾值次缺頁異常之前,發(fā)生的缺頁異常的虛擬地址連續(xù)遞增的次數(shù)和連續(xù)遞減的次數(shù);計算所述連續(xù)遞增次數(shù)與連續(xù)遞減次數(shù)的差值;根據(jù)所述連續(xù)遞增次數(shù)與連續(xù)遞減次數(shù)的差值,確定所述關(guān)聯(lián)映射的方向。例如,假設同一進程在同一個VMA中,發(fā)生第預置閾值次缺頁異常吋,前(預置閾值-I)次缺頁異常的虛擬地址連續(xù)遞增的次數(shù)為A,連續(xù)遞減的次數(shù)為B,那么兩者的差值為X = A-B,使用兩者的差值與ー個預先設定的經(jīng)驗值進行比較,假設該經(jīng)驗值為C,當X >C時,從缺頁異常的虛擬地址對應的物理頁幀開始,由低地址向高地址一次性建立N個關(guān)聯(lián)映射,當X < -C時,從缺頁異常的虛擬地址對應的物理頁幀開始,由高地址向低地址一次性建立N個關(guān)聯(lián)映射;當O < X < |C|時,從缺頁異常的虛擬地址對應的物理頁幀開始,分別向低地址和高地址同時關(guān)聯(lián)映射,總共建立N個關(guān)聯(lián)映射。一次性建立多個缺頁異常后,可以避免后續(xù)發(fā)生多次缺頁異常影響處理器的時鐘周期,從而可以使所述同ー進程快速讀取物理內(nèi)存。104、當所述第二數(shù)值小于第一數(shù)值時,毎次缺頁異常時,按照關(guān)聯(lián)映射的方向,建立連續(xù)的第二數(shù)值個虛擬地址頁與物理頁幀的關(guān)聯(lián)映射,以使所述同一進程快速讀取物理內(nèi)存。舉例來說,當M = 64,N = 256時,那么只需要引發(fā)一次缺頁異常,建立64個關(guān)聯(lián)映射就完成了 ー個進程。本步驟中的關(guān)聯(lián)映射的方向與上述104中的相同,在此不再做詳細贅述。從以上幾個步驟中可以看出,N = M時,只需要引發(fā)一次缺頁異常就可以完成ー個進程。本發(fā)明實施例中,當同一進程在同一虛擬內(nèi)存區(qū)VMA中連續(xù)發(fā)生缺頁異常的次數(shù)達到預置閾值時,獲取第一數(shù)值和第二數(shù)值,所述第一數(shù)值為發(fā)生缺頁異常的次數(shù)達到預置閾值后,每次發(fā)生缺頁異常時,建立VMA中虛擬地址頁與物理頁幀關(guān)聯(lián)映射的個數(shù),所述第二數(shù)值為所述同一進程所在的VMA中未映射物理頁幀的虛擬地址頁的個數(shù);比較所述獲 取的第一數(shù)值和所述第二數(shù)值的大??;當所述第二數(shù)值大于等于所述第一數(shù)值時,毎次發(fā)生缺頁異常時,按照關(guān)聯(lián)映射的方向,建立連續(xù)的第一數(shù)值個虛擬地址頁與物理頁幀的關(guān)聯(lián)映射,以使所述同一進程快速讀取物理內(nèi)存;當所述第二數(shù)值小于第一數(shù)值時,毎次缺頁異常時,按照關(guān)聯(lián)映射的方向,建立連續(xù)的第二數(shù)值個虛擬地址頁與物理頁幀的關(guān)聯(lián)映射,以使所述同一進程快速讀取物理內(nèi)存。與現(xiàn)有技術(shù)相比,本發(fā)明實施例提供的缺頁異常的處理方法,可以在一次缺頁異常中建立多個虛擬地址與物理頁幀的關(guān)聯(lián)關(guān)聯(lián)映射,從而減少缺頁異常的次數(shù),提高系統(tǒng)性能。參閱圖2,本發(fā)明實施例提供的缺頁異常的處理方法的另ー實施例包括201、當同一進程在同一 VMA中連續(xù)發(fā)生缺頁異常的次數(shù)達到預置閾值時,獲取第三數(shù)值,所述第三數(shù)值為所述VMA中未與物理頁幀關(guān)聯(lián)映射的虛擬地址頁的個 數(shù)。因系統(tǒng)本身某些進程的代碼段、數(shù)據(jù)段或者棧上的缺頁異常并不是很多,如果引發(fā)一次缺頁異常就建立多個關(guān)聯(lián)映射,可能會導致系統(tǒng)空間的浪費,這樣,可以設定ー個預置閾值,當同一進程在同一 VMA中連續(xù)發(fā)生缺頁異常的次數(shù)達到預置閾值時才啟動一次缺頁異常建立多個關(guān)聯(lián)映射,沒達到預置閾值,還保持一次缺頁建立一個關(guān)聯(lián)映射,但本發(fā)明并不限定預置閾值的大小,預置閾值可以為1,也就是說,可以是引發(fā)一次缺頁異常就建立多個關(guān)聯(lián)映射。所述獲取第三數(shù)值,具體包括獲取所述VMA中沒有映射物理地址的虛擬內(nèi)存大??;根據(jù)所述沒有映射物理地址的虛擬內(nèi)存大小和所述虛擬地址頁的大小,計算所述第二數(shù)值。舉例來說,假設預置閾值為H,當H次缺頁異常都是同一進程在同一 VMA中連續(xù)發(fā)生的,則獲取VMA中沒有映射物理地址的虛擬內(nèi)存大小,假設VMA中沒有映射物理地址的虛擬內(nèi)存大小=IM = 1024KB。每頁為4KB,那么第三數(shù)值為1024/4 = 256,則VMA中還未關(guān)聯(lián)映射的頁數(shù)為256。實際上,也可以獲取整個VMA內(nèi)存的大小,包括之前已經(jīng)發(fā)生的(H-I)次關(guān)聯(lián)映射的VMA虛擬內(nèi)存的大小,這種情況,因前面已經(jīng)發(fā)生了 H-I次缺頁異常,已經(jīng)建立了 H-I個關(guān)聯(lián)映射,VMA中還未關(guān)聯(lián)映射的頁數(shù)為((VMA-(H-I)*每頁的字節(jié)數(shù)))/每頁的字節(jié)數(shù),本實施例中,第三數(shù)值為根據(jù)該公式計算得出,((VMA- (H-I) *每頁的字節(jié)數(shù)))/每頁的字節(jié)數(shù)。假設,VMA= 1064KB,H = 10次,每頁的字節(jié)數(shù)為4K,則將VMA = 1064KB,H = 10,頁的字節(jié)數(shù)為4K帶入公式可以得出,VMA中還未關(guān)聯(lián)映射的頁數(shù)為256。202、按照關(guān)聯(lián)映射的方向,建立連續(xù)的第三數(shù)值個虛擬地址頁與物理頁幀的關(guān)聯(lián)映射。本步驟中的關(guān)聯(lián)映射的方向與上述103中的相同,在此不再做詳細贅述。本實施例中,按照上述例子,就是前面發(fā)生給了 9次缺頁異常,先一対一的建立9個關(guān)聯(lián)映射,到第10次缺頁異常時,直接一次性建立256個關(guān)聯(lián)映射,與現(xiàn)有技術(shù)相比,現(xiàn)有技術(shù)中需要256次缺頁異常建立的關(guān)聯(lián)映射,本發(fā)明實施例只需要10次就能建立完成。本發(fā)明實施例中,當同一進程在同一 VMA中連續(xù)發(fā)生缺頁異常的次數(shù)達到預置閾值時,獲取第三數(shù)值,所述第三數(shù)值為所述VMA中未與物理頁幀關(guān)聯(lián)映射的虛擬地址頁的個數(shù);按照關(guān)聯(lián)映射的方向,建立連續(xù)的第三數(shù)值個虛擬地址頁與物理頁幀的關(guān)聯(lián)映射。與現(xiàn)有技術(shù)相比,本發(fā)明實施例提供的缺頁異常的處理方法,可以在一次缺頁異常中建立多個虛擬地址與物理地址頁幀的關(guān)聯(lián)映射,從而減少缺頁異常的次數(shù),提高系統(tǒng)性能。為了便于理解,下面以三個具體應用場景為了,詳細說明本發(fā)明實施例提供的缺頁異常的處理方法參閱圖3,圖3為現(xiàn)有技術(shù)中虛擬地址與物理地址關(guān)聯(lián)映射的示意圖;從中可以看出,每引發(fā)一次缺頁異常,就對應建立一個虛擬地址與物理地址頁幀的關(guān)聯(lián)映射,當建立(K-I)次關(guān)聯(lián)映射時,就需要發(fā)生(K-I)次缺頁異常,當K值很大時,這么多次的缺頁異常降低了操作系統(tǒng)的系能。參閱圖4,圖4為本發(fā)明實施例提供的虛擬地址與物理地址關(guān)聯(lián)映射的一實施例 示意圖;從圖4中可以看出,引發(fā)一次缺頁異常,就建立N個虛擬地址與物理地址頁幀的關(guān)聯(lián)映射,當N很大吋,不需要像現(xiàn)有技術(shù)中一祥,要引發(fā)N次缺頁異常,只需要一次缺頁異常就完成了該進程。參閱圖5,圖5為本發(fā)明實施例提供的關(guān)聯(lián)映射的方向示意圖;從圖5中可以看出,關(guān)聯(lián)映射的方向有三種,可以是從缺頁異常的虛擬地址對應的頁幀開始,由低地址向高地址一次性建立N個關(guān)聯(lián)映射,也可以是從缺頁異常的虛擬地址對應的頁幀開始,由高地址向低地址一次性建立N個關(guān)聯(lián)映射,還可以是從缺頁異常的虛擬地址對應的頁幀開始,分別向低地址和高地址同時關(guān)聯(lián)映射,總共建立N個關(guān)聯(lián)映射。參閱圖6,圖6為本發(fā)明實施例提供的虛擬地址與物理地址關(guān)聯(lián)映射的另ー實施例示意圖;從圖6中可以看出,本應用場景是考慮到了某些進程的代碼段、數(shù)據(jù)段或者棧上的缺頁異常不多的情況,對啟動一次缺頁異常建立多個關(guān)聯(lián)映射設置了啟動條件,從圖中可以看出,前H-I次引起缺頁異常后,都是每次建立一個關(guān)聯(lián)映射,當?shù)贖次缺頁異常時,才一次性的建立了 N個關(guān)聯(lián)映射。參閱圖7,圖7為本發(fā)明實施例提供的虛擬地址與物理地址關(guān)聯(lián)映射的另ー實施例示意圖;從圖7中可以看出,本應用場景本應用場景是考慮到了某些進程的代碼段、數(shù)據(jù)段或者棧上的缺頁異常不多的情況,對啟動一次缺頁異常建立多個關(guān)聯(lián)映射設置了啟動條件,從圖中可以看出,前H-I次引起缺頁異常后,都是每次建立一個關(guān)聯(lián)映射,當?shù)贖次缺頁異常時,才一次性的建立了 N-H+1個關(guān)聯(lián)映射。參閱圖8,本發(fā)明實施例提供的缺頁異常的處理裝置的一實施例包括第一獲取單元301,用于當同一進程在同一虛擬內(nèi)存區(qū)VMA中連續(xù)發(fā)生缺頁異常的次數(shù)達到預置閾值時,獲取第一數(shù)值和第二數(shù)值,所述第一數(shù)值為發(fā)生缺頁異常的次數(shù)達到預置閾值后,每次發(fā)生缺頁異常吋,建立VMA中虛擬地址頁與物理頁幀關(guān)聯(lián)映射的個數(shù),所述第二數(shù)值為所述同一進程所在的VMA中未映射物理頁幀的虛擬地址頁的個數(shù);比較單元302,用于比較所述第一獲取單元301獲取的第一數(shù)值和第二數(shù)值的大??;第一映射建立単元303,用于當所述比較単元302比較出所述第二數(shù)值大于等于所述第一數(shù)值時,毎次發(fā)生缺頁異常時,按照關(guān)聯(lián)映射的方向,建立連續(xù)的第一數(shù)值個虛擬地址頁與物理頁幀的關(guān)聯(lián)映射,以使所述同一進程快速讀取物理內(nèi)存;所述第一映射建立単元303,還用于當所述比較単元302比較出第二數(shù)值小于第一數(shù)值時,毎次缺頁異常時,按照關(guān)聯(lián)映射的方向,建立連續(xù)的第二數(shù)值個虛擬地址頁與物理頁幀的關(guān)聯(lián)映射,以使所述同一進程快速讀取物理內(nèi)存。本發(fā)明實施例中,第一獲取單元301當同一進程在同一虛擬內(nèi)存區(qū)VMA中連續(xù)發(fā)生缺頁異常的次數(shù)達到預置閾值時,獲取第一數(shù)值和第二數(shù)值,所述第一數(shù)值為發(fā)生缺頁異常的次數(shù)達到預置閾值后,每次發(fā)生缺頁異常吋,建立VMA中虛擬地址頁與物理頁幀關(guān)聯(lián)映射的個數(shù),所述第二數(shù)值為所述同一進程所在的VMA中未映射物理頁幀的虛擬地址頁的個數(shù);比較單元302比較所述第一獲取單元301獲取的第一數(shù)值和第二數(shù)值的大小;第一映射建立単元303當所述比較単元302比較出所述第二數(shù)值大于等于所述第一數(shù)值時,每次發(fā)生缺頁異常時,按照關(guān)聯(lián)映射的方向,建立連續(xù)的第一數(shù)值個虛擬地址頁與物理頁幀的關(guān)聯(lián)映射,以使所述同一進程快速讀取物理內(nèi)存;所述第一映射建立単元303當所述比較單元302比較出第二數(shù)值小于第一數(shù)值時,毎次缺頁異常時,按照關(guān)聯(lián)映射的方向,建立連續(xù)的第二數(shù)值個虛擬地址頁與物理頁幀的關(guān)聯(lián)映射,以使所述同一進程快速讀取物理內(nèi)存。與現(xiàn)有技術(shù)相比,本發(fā)明實施例提供的處理裝置,可以在一次缺頁異常中建立多個虛擬地址與物理頁幀的關(guān)聯(lián)映射,從而減少缺頁異常的次數(shù),提高系統(tǒng)性能。參閱圖9,在上述圖8對應的實施例的基礎(chǔ)上,本發(fā)明實施例提供的處理裝置的另ー實施例還包括所述第一獲取單元301,還用于獲取所述VMA中沒有映射物理地址的虛擬內(nèi)存大??;第一計算單元304,用于根據(jù)所述第一獲取單元301獲取的沒有映射物理地址的虛擬內(nèi)存大小和所述虛擬地址頁的大小,計算所述第二數(shù)值。在上述圖8或圖9對應的實施例的基礎(chǔ)上,本發(fā)明實施例提供的處理裝置的另ー實施例還包括所述第一獲取單元301,用于獲取所述關(guān)聯(lián)映射的方向,所述關(guān)聯(lián)映射的方向為從發(fā)生缺頁異常的虛擬地址頁對應的物理頁幀處開始向上、向下或同時向上和向下;所述第一映射建立單元303,具體用于從發(fā)生缺頁異常的虛擬地址頁對應的物理頁幀處開始,按照所述第一獲取單元301獲取的向上、向下或同時向上和向下的方向,建立連續(xù)的第一數(shù)值個或第二數(shù)值個虛擬地址頁與物理頁幀的關(guān)聯(lián)映射。參閱圖10,在上述實施例的基礎(chǔ)上,本發(fā)明實施例提供的處理裝置的另ー實施例還包括第一統(tǒng)計單元305,用于統(tǒng)計所述同一進程在所述VMA中發(fā)生第預置閾值次缺頁異常之前,發(fā)生的缺頁異常的虛擬地址連續(xù)遞增的次數(shù)和連續(xù)遞減的次數(shù);所述第一計算單元304,還用于計算所述第一統(tǒng)計單元305統(tǒng)計出的連續(xù)遞增次數(shù)與連續(xù)遞減次數(shù)的差值;第一確定單元306,用于根據(jù)所述第一計算單元304計算出的連續(xù)遞增次數(shù)與連續(xù)遞減次數(shù)的差值,確定關(guān)聯(lián)映射的方向。參閱圖11,本發(fā)明實施例提供的處理裝置的另ー實施例包括第二獲取單元311,用于當同一進程在同一 VMA中連續(xù)發(fā)生缺頁異常的次數(shù)達到預置閾值時,獲取第三數(shù)值,所述第三數(shù)值為所述VMA中未與物理頁幀關(guān)聯(lián)映射的虛擬地址頁的個數(shù);第二映射建立単元312,用于按照關(guān)聯(lián)映射的方向,建立連續(xù)的所述第二獲取單元311獲取的第三數(shù)值個虛擬地址頁與物理頁幀的關(guān)聯(lián)映射。本發(fā)明實施例中,第二獲取單元311當同一進程在同一 VMA中連續(xù)發(fā)生缺頁異常的次數(shù)達到預置閾值時,獲取第三數(shù)值,所述第三數(shù)值為所述VMA中未與物理頁幀關(guān)聯(lián)映、射的虛擬地址頁的個數(shù);第二映射建立単元312按照關(guān)聯(lián)映射的方向,建立連續(xù)的所述第ニ獲取單元311獲取的第三數(shù)值個虛擬地址頁與物理頁幀的關(guān)聯(lián)映射。與現(xiàn)有技術(shù)相比,本發(fā)明實施例提供的處理裝置,可以在一次缺頁異常中建立多個虛擬地址與物理頁幀的關(guān)聯(lián)映射,從而減少缺頁異常的次數(shù),提高系統(tǒng)性能。參閱圖12,在上述圖11對應的實施例的基礎(chǔ)上,本發(fā)明實施例提供的處理裝置另ー實施例還包括所述第二獲取單元311,還用于獲取所述VMA中沒有映射物理地址的虛擬內(nèi)存大?。坏诙嬎銌卧?13,用于根據(jù)所述第二獲取單元311獲取的沒有映射物理地址的虛擬內(nèi)存大小和所述虛擬地址頁的大小,計算所述第二數(shù)值。在上述圖11或圖12對應的實施例的基礎(chǔ)上,本發(fā)明實施例提供的處理裝置另ー實施例還包括所述第二獲取單元311,還用于獲取所述關(guān)聯(lián)映射的方向,所述關(guān)聯(lián)映射的方向為從發(fā)生缺頁異常的虛擬地址頁對應的物理頁幀處開始向上、向下或同時向上和向下;所述第二映射建立単元312,具體用于從發(fā)生缺頁異常的虛擬地址頁對應的物理頁幀處開始,按照所述第二獲取單元311獲取的向上、向下或同時向上和向下的方向,建立連續(xù)的第三數(shù)值個虛擬地址頁與物理頁幀的關(guān)聯(lián)映射。參閱圖13,在上述實施例的基礎(chǔ)上,本發(fā)明實施例提供的處理裝置另ー實施例還包括第二統(tǒng)計單元314,用于統(tǒng)計所述同一進程在所述VMA中發(fā)生第預置閾值次缺頁異常之前,發(fā)生的缺頁異常的虛擬地址連續(xù)遞增的次數(shù)和連續(xù)遞減的次數(shù);所述第二計算單元313,還用于計算所述第二統(tǒng)計單元314統(tǒng)計出的連續(xù)遞增次數(shù)與連續(xù)遞減次數(shù)的差值;第二確定單元315,用于根據(jù)所述第二計算單元313計算出的連續(xù)遞增次數(shù)與連續(xù)遞減次數(shù)的差值,確定所述關(guān)聯(lián)映射的方向。本發(fā)明實施例中,通過多個技術(shù)方案來實現(xiàn)缺頁異常的處理方法,可以在一次缺頁異常中建立多個虛擬地址與物理地址頁幀的關(guān)聯(lián)映射,從而減少缺頁異常的次數(shù),提高系統(tǒng)性能。本發(fā)明實施例可以應用于各種的操作系統(tǒng)中,例如適用于64位系統(tǒng)。參閱圖14,本發(fā)明實施例提供了一種計算機系統(tǒng),所述計算機系統(tǒng)包括處理器20和存儲器30,所述處理器上運行有操作系統(tǒng),所述操作系統(tǒng)之上運行有至少ー種應用程序,所述應用程序表現(xiàn)為進程,所述存儲器30中劃分有虛擬內(nèi)存301和物理內(nèi)存302 ;其中當所述進程訪問的所述虛擬內(nèi)存中的虛擬地址頁與所述物理內(nèi)存中的物理頁幀未建立關(guān)聯(lián)映射,所述處理器引發(fā)一次缺頁異常,所述處理器處理所述缺頁異常;所述處理器20,用于當同一進程在同一虛擬內(nèi)存區(qū)VMA中連續(xù)發(fā)生缺頁異常的次數(shù)達到預置閾值時,獲取第一數(shù)值和第二數(shù)值,所述第一數(shù)值為發(fā)生缺頁異常的次數(shù)達到預置閾值后,每次發(fā)生缺頁異常時,建立VMA中虛擬地址頁與物理頁幀關(guān)聯(lián)映射的個數(shù),所述第二數(shù)值為所述同一進程所在的VMA中未映射物理頁幀的虛擬地址頁的個數(shù);比較所述獲取的第一數(shù)值和所述第二數(shù)值的大??;
當所述第二數(shù)值大于等于所述第一數(shù)值時,每次發(fā)生缺頁異常吋,按照關(guān)聯(lián)映射的方向,建立連續(xù)的第一數(shù)值個虛擬地址頁與物理頁幀的關(guān)聯(lián)映射,以使所述同一進程快速讀取物理內(nèi)存;當所述第二數(shù)值小于第一數(shù)值時,毎次缺頁異常時,按照關(guān)聯(lián)映射的方向,建立連續(xù)的第二數(shù)值個虛擬地址頁與物理 頁幀的關(guān)聯(lián)映射,以使所述同一進程快速讀取物理內(nèi)存?;蛘?,所述處理器20,用于統(tǒng)計所述同一進程在所述VMA中發(fā)生第預置閾值次缺頁異常之前,發(fā)生的缺頁異常的虛擬地址連續(xù)遞增的次數(shù)和連續(xù)遞減的次數(shù);計算所述連續(xù)遞增次數(shù)與連續(xù)遞減次數(shù)的差值;根據(jù)所述連續(xù)遞增次數(shù)與連續(xù)遞減次數(shù)的差值,確定所述關(guān)聯(lián)映射的方向。本發(fā)明實施例中物理內(nèi)存指的是計算機中的內(nèi)存、虛擬內(nèi)存為磁盤或硬盤提供的內(nèi)存空間。本領(lǐng)域普通技術(shù)人員可以理解上述實施例的各種方法中的全部或部分步驟是可以通過程序來指令相關(guān)的硬件來完成,該程序可以存儲于ー計算機可讀存儲介質(zhì)中,存儲介質(zhì)可以包括ROM、RAM、磁盤或光盤等。以上對本發(fā)明實施例所提供的缺頁異常的處理方法、裝置及系統(tǒng)進行了詳細介紹,本文中應用了具體個例對本發(fā)明的原理及實施方式進行了闡述,以上實施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想;同時,對于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在具體實施方式
及應用范圍上均會有改變之處,綜上所述,本說明書內(nèi)容不應理解為對本發(fā)明的限制。
權(quán)利要求
1.一種缺頁異常的處理方法,其特征在于,包括 當同一進程在同一虛擬內(nèi)存區(qū)VMA中連續(xù)發(fā)生缺頁異常的次數(shù)達到預置閾值時,獲取第一數(shù)值和第二數(shù)值,所述第一數(shù)值為發(fā)生缺頁異常的次數(shù)達到預置閾值后,每次發(fā)生缺頁異常時,建立VMA中虛擬地址頁與物理頁幀關(guān)聯(lián)映射的個數(shù),所述第二數(shù)值為所述同一進程所在的VMA中未映射物理頁幀的虛擬地址頁的個數(shù); 比較所述獲取的第一數(shù)值和所述第二數(shù)值的大小; 當所述第二數(shù)值大于等于所述第一數(shù)值時,每次發(fā)生缺頁異常時,按照關(guān)聯(lián)映射的方向,建立連續(xù)的第一數(shù)值個虛擬地址頁與物理頁幀的關(guān)聯(lián)映射,以使所述同一進程快速讀取物理內(nèi)存; 當所述第二數(shù)值小于第一數(shù)值時,每次缺頁異常時,按照關(guān)聯(lián)映射的方向,建立連續(xù)的第二數(shù)值個虛擬地址頁與物理頁幀的關(guān)聯(lián)映射,以使所述同一進程快速讀取物理內(nèi)存。
2.根據(jù)權(quán)利要求I所述的方法,其特征在于,所述獲取第二數(shù)值之前,還包括 獲取所述VMA中沒有映射物理地址的虛擬內(nèi)存大?。? 根據(jù)所述沒有映射物理地址的虛擬內(nèi)存大小和所述虛擬地址頁的大小,計算所述第二數(shù)值。
3.根據(jù)權(quán)利要求I或2所述的方法,其特征在于,所述按照關(guān)聯(lián)映射的方向,建立連續(xù)的第一數(shù)值個或第二數(shù)值個虛擬地址頁與物理頁幀的關(guān)聯(lián)映射,具體包括 獲取所述關(guān)聯(lián)映射的方向,所述關(guān)聯(lián)映射的方向為從發(fā)生缺頁異常的虛擬地址頁對應的物理頁幀處開始向上、向下或同時向上和向下; 從發(fā)生缺頁異常的虛擬地址頁對應的物理頁幀處開始,按照向上、向下或同時向上和向下的方向,建立連續(xù)的第一數(shù)值個或第二數(shù)值個虛擬地址頁與物理頁幀的關(guān)聯(lián)映射。
4.根據(jù)權(quán)利要求I或2所述的方法,其特征在于,所述獲取所述關(guān)聯(lián)映射的方向之前,還包括 統(tǒng)計所述同一進程在所述VMA中發(fā)生第預置閾值次缺頁異常之前,發(fā)生的缺頁異常的虛擬地址連續(xù)遞增的次數(shù)和連續(xù)遞減的次數(shù); 計算所述連續(xù)遞增次數(shù)與連續(xù)遞減次數(shù)的差值;根據(jù)所述連續(xù)遞增次數(shù)與連續(xù)遞減次數(shù)的差值,確定所述關(guān)聯(lián)映射的方向。
5.一種缺頁異常的處理方法,其特征在于,包括 當同一進程在同一 VMA中連續(xù)發(fā)生缺頁異常的次數(shù)達到預置閾值時,獲取第三數(shù)值,所述第三數(shù)值為所述VMA中未與物理頁幀關(guān)聯(lián)映射的虛擬地址頁的個數(shù); 按照關(guān)聯(lián)映射的方向,建立連續(xù)的第三數(shù)值個虛擬地址頁與物理頁幀的關(guān)聯(lián)映射。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述獲取第三數(shù)值,具體包括 獲取所述VMA中沒有映射物理地址的虛擬內(nèi)存大?。? 根據(jù)所述沒有映射物理地址的虛擬內(nèi)存大小和所述虛擬地址頁的大小,計算所述第二數(shù)值。
7.根據(jù)權(quán)利要求5或6所述的方法,其特征在于,所述按照關(guān)聯(lián)映射的方向,建立連續(xù)的第三數(shù)值個虛擬地址頁與物理頁幀的關(guān)聯(lián)映射,具體包括 獲取所述關(guān)聯(lián)映射的方向,所述關(guān)聯(lián)映射的方向為從發(fā)生缺頁異常的虛擬地址頁對應的物理頁幀處開始向上、向下或同時向上和向下;從發(fā)生缺頁異常的虛擬地址頁對應的物理頁幀處開始,按照向上、向下或同時向上和向下的方向,建立連續(xù)的第三數(shù)值個虛擬地址頁與物理頁幀的關(guān)聯(lián)映射。
8.根據(jù)權(quán)利要求7所述的方法,其特征在于,所述獲取所述關(guān)聯(lián)映射的方向之前,還包括 統(tǒng)計所述同一進程在所述VMA中發(fā)生第預置閾值次缺頁異常之前,發(fā)生的缺頁異常的虛擬地址連續(xù)遞增的次數(shù)和連續(xù)遞減的次數(shù); 計算所述連續(xù)遞增次數(shù)與連續(xù)遞減次數(shù)的差值;根據(jù)所述連續(xù)遞增次數(shù)與連續(xù)遞減次數(shù)的差值,確定所述關(guān)聯(lián)映射的方向。
9.一種缺頁異常的處理裝置,其特征在于,包括 第一獲取單元,用于當同一進程在同一虛擬內(nèi)存區(qū)VMA中連續(xù)發(fā)生缺頁異常的次數(shù)達到預置閾值時,獲取第一數(shù)值和第二數(shù)值,所述第一數(shù)值為發(fā)生缺頁異常的次數(shù)達到預置閾值后,每次發(fā)生缺頁異常時,建立VMA中虛擬地址頁與物理頁幀關(guān)聯(lián)映射的個數(shù),所述第二數(shù)值為所述同一進程所在的VMA中未映射物理頁幀的虛擬地址頁的個數(shù); 比較單元,用于比較所述第一獲取單元獲取的第一數(shù)值和第二數(shù)值的大?。? 第一映射建立單元,用于當所述比較單元比較出所述第二數(shù)值大于等于所述第一數(shù)值時,每次發(fā)生缺頁異常時,按照關(guān)聯(lián)映射的方向,建立連續(xù)的第一數(shù)值個虛擬地址頁與物理頁幀的關(guān)聯(lián)映射,以使所述同一進程快速讀取物理內(nèi)存; 所述第一映射建立單元,還用于當所述比較單元比較出第二數(shù)值小于第一數(shù)值時,每次缺頁異常時,按照關(guān)聯(lián)映射的方向,建立連續(xù)的第二數(shù)值個虛擬地址頁與物理頁幀的關(guān)聯(lián)映射,以使所述同一進程快速讀取物理內(nèi)存。
10.根據(jù)權(quán)利要求9所述的裝置,其特征在于,還包括 所述第一獲取單元,還用于獲取所述VMA中沒有映射物理地址的虛擬內(nèi)存大小;第一計算單元,用于根據(jù)所述第一獲取單元獲取的沒有映射物理地址的虛擬內(nèi)存大小和所述虛擬地址頁的大小,計算所述第二數(shù)值。
11.根據(jù)權(quán)利要求9或10所述的裝置,其特征在于, 所述第一獲取單元,用于獲取所述關(guān)聯(lián)映射的方向,所述關(guān)聯(lián)映射的方向為從發(fā)生缺頁異常的虛擬地址頁對應的物理頁幀處開始向上、向下或同時向上和向下; 所述第一映射建立單元,具體用于從發(fā)生缺頁異常的虛擬地址頁對應的物理頁幀處開始,按照所述第一獲取單元獲取的向上、向下或同時向上和向下的方向,建立連續(xù)的第一數(shù)值個或第二數(shù)值個虛擬地址頁與物理頁幀的關(guān)聯(lián)映射。
12.根據(jù)權(quán)利要求10所述的裝置,其特征在于,還包括 第一統(tǒng)計單元,用于統(tǒng)計所述同一進程在所述VMA中發(fā)生第預置閾值次缺頁異常之前,發(fā)生的缺頁異常的虛擬地址連續(xù)遞增的次數(shù)和連續(xù)遞減的次數(shù); 所述第一計算單元,還用于計算所述第一統(tǒng)計單元統(tǒng)計出的連續(xù)遞增次數(shù)與連續(xù)遞減次數(shù)的差值; 第一確定單元,用于根據(jù)所述第一計算單元計算出的連續(xù)遞增次數(shù)與連續(xù)遞減次數(shù)的差值,確定關(guān)聯(lián)映射的方向。
13.—種缺頁異常的處理裝置,其特征在于,包括 第二獲取單元,用于當同一進程在同一 VMA中連續(xù)發(fā)生缺頁異常的次數(shù)達到預置閾值時,獲取第三數(shù)值,所述第三數(shù)值為所述VMA中未與物理頁幀關(guān)聯(lián)映射的虛擬地址頁的個數(shù); 第二映射建立單元,用于按照關(guān)聯(lián)映射的方向,建立連續(xù)的所述第二獲取單元獲取的第三數(shù)值個虛擬地址頁與物理頁幀的關(guān)聯(lián)映射。
14.根據(jù)權(quán)利要求13所述的裝置,其特征在于,還包括 所述第二獲取單元,還用于獲取所述VMA中沒有映射物理地址的虛擬內(nèi)存大小; 第二計算單元,用于根據(jù)所述第二獲取單元獲取的沒有映射物理地址的虛擬內(nèi)存大小和所述虛擬地址頁的大小,計算所述第二數(shù)值。
15.根據(jù)權(quán)利要求13或14所述的裝置,其特征在于, 所述第二獲取單元,還用于獲取所述關(guān)聯(lián)映射的方向,所述關(guān)聯(lián)映射的方向為從發(fā)生缺頁異常的虛擬地址頁對應的物理頁幀處開始向上、向下或同時向上和向下; 所述第二映射建立單元,具體用于從發(fā)生缺頁異常的虛擬地址頁對應的物理頁幀處開始,按照所述第二獲取單元獲取的向上、向下或同時向上和向下的方向,建立連續(xù)的第三數(shù)值個虛擬地址頁與物理頁幀的關(guān)聯(lián)映射。
16.根據(jù)權(quán)利要求15所述的裝置,其特征在于,還包括 第二統(tǒng)計單元,用于統(tǒng)計所述同一進程在所述VMA中發(fā)生第預置閾值次缺頁異常之前,發(fā)生的缺頁異常的虛擬地址連續(xù)遞增的次數(shù)和連續(xù)遞減的次數(shù); 所述第二計算單元,還用于計算所述第二統(tǒng)計單元統(tǒng)計出的連續(xù)遞增次數(shù)與連續(xù)遞減次數(shù)的差值; 第二確定單元,用于根據(jù)所述第二計算單元計算出的連續(xù)遞增次數(shù)與連續(xù)遞減次數(shù)的差值,確定所述關(guān)聯(lián)映射的方向。
17.一種計算機系統(tǒng),其特征在于,包括所述計算機系統(tǒng)包括處理器和存儲器,所述處理器上運行有操作系統(tǒng),所述操作系統(tǒng)之上運行有至少一種應用程序,所述應用程序表現(xiàn)為進程,所述存儲器中劃分有虛擬內(nèi)存和物理內(nèi)存;其中當所述進程訪問的所述虛擬內(nèi)存中的虛擬地址頁與所述物理內(nèi)存中的物理頁幀未建立關(guān)聯(lián)映射,所述處理器弓I發(fā)一次缺頁異常,所述處理器處理所述缺頁異常,所述處理器為上述權(quán)利要求9 16任意一項所述的缺頁異常的處理裝置。
全文摘要
本發(fā)明公開了一種缺頁異常的處理方法,當同一進程在同一虛擬內(nèi)存區(qū)VMA中連續(xù)發(fā)生缺頁異常的次數(shù)達到預置閾值時,獲取第一數(shù)值和第二數(shù)值;比較所述獲取的第一數(shù)值和所述第二數(shù)值的大??;當所述第二數(shù)值大于等于所述第一數(shù)值時,每次發(fā)生缺頁異常時,按照關(guān)聯(lián)映射的方向,建立連續(xù)的第一數(shù)值個虛擬地址頁與物理頁幀的關(guān)聯(lián)映射,以使所述同一進程快速讀取物理內(nèi)存;當所述第二數(shù)值小于第一數(shù)值時,每次缺頁異常時,按照關(guān)聯(lián)映射的方向,建立連續(xù)的第二數(shù)值個虛擬地址頁與物理頁幀的關(guān)聯(lián)映射,以使所述同一進程快速讀取物理內(nèi)存。本發(fā)明實施例提供的技術(shù)方案可以減少發(fā)生缺頁異常的次數(shù),提高系統(tǒng)性能。
文檔編號G06F12/08GK102662864SQ201210087940
公開日2012年9月12日 申請日期2012年3月29日 優(yōu)先權(quán)日2012年3月29日
發(fā)明者林志南 申請人:華為技術(shù)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
宜兴市| 马鞍山市| 保康县| 平邑县| 开化县| 法库县| 武威市| 那坡县| 凉山| 东丰县| 湘阴县| 怀化市| 福贡县| 义马市| 新邵县| 永春县| 固原市| 定安县| 和政县| 天津市| 重庆市| 镇雄县| 铁岭县| 延长县| 蒙自县| 抚宁县| 定州市| 铜山县| 聊城市| 财经| 南开区| 博客| 新平| 区。| 松阳县| 措勤县| 桦南县| 瓦房店市| 厦门市| 唐海县| 阳原县|