国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      內(nèi)存分配方法、裝置及系統(tǒng)的制作方法

      文檔序號:6491107閱讀:259來源:國知局
      內(nèi)存分配方法、裝置及系統(tǒng)的制作方法
      【專利摘要】本發(fā)明提供一種內(nèi)存分配方法、裝置及系統(tǒng),其中內(nèi)存分配方法包括,接收一個或多個處理模塊分別發(fā)送的內(nèi)存狀態(tài)信息;根據(jù)內(nèi)存狀態(tài)信息,分別確定一個或多個處理模塊各自的內(nèi)存壓力的數(shù)值;判斷一個或多個處理模塊的內(nèi)存壓力的數(shù)值中最大值與最小值之差是否大于或等于預設閾值;若是,則向最小值對應的處理模塊發(fā)送內(nèi)存搶占消息,內(nèi)存搶占消息中攜帶有需釋放的內(nèi)存大小;在從最小值對應的處理模塊中搶占到內(nèi)存資源之后,向最大值對應的處理模塊發(fā)送內(nèi)存分配消息,內(nèi)存分配消息中攜帶有待分配的內(nèi)存大小,能夠有效地滿足內(nèi)存壓力較大的處理模塊的高內(nèi)存需求,有效地提高整個多操作系統(tǒng)結(jié)構(gòu)中內(nèi)存資源的利用率和系統(tǒng)性能。
      【專利說明】內(nèi)存分配方法、裝置及系統(tǒng)
      【技術領域】
      [0001]本發(fā)明涉及計算機技術,尤其涉及一種內(nèi)存分配方法、裝置及系統(tǒng)。
      【背景技術】
      [0002]隨著計算機領域內(nèi)數(shù)據(jù)量及數(shù)據(jù)處理需求的不斷提升,負載對操作系統(tǒng)性能的要求越來越高,微內(nèi)核、多內(nèi)核已經(jīng)成為了操作系統(tǒng)未來發(fā)展的一個趨勢。多內(nèi)核協(xié)同工作能夠很好地實現(xiàn)對不同應用的隔離,提升系統(tǒng)的吞吐率,能夠在一定程度上提高系統(tǒng)的性能。
      [0003]圖1為現(xiàn)有技術中一種多操作系統(tǒng)的架構(gòu)圖,如圖1所示,該多操作系統(tǒng)結(jié)構(gòu)包括全局共享內(nèi)存(Global Memory)、多個中央處理器(Central Processing Unit,CPU)或中央處理器內(nèi)核。分別運行在各CPU或內(nèi)核上的操作系統(tǒng)共享該全局共享內(nèi)存,各操作系統(tǒng)也被稱為子系統(tǒng)。
      [0004]當某個子系統(tǒng)的出現(xiàn)內(nèi)存資源不足的情況時,可以向其他各子系統(tǒng)發(fā)送內(nèi)存申請消息。其他各子系統(tǒng)在收到該內(nèi)存申請消息之后,分別判斷其自身的內(nèi)存使用情況。擁有空閑內(nèi)存資源的子系統(tǒng)會向申請內(nèi)存的子系統(tǒng)發(fā)送回復消息,并在消息中攜帶其空閑內(nèi)存的大小;沒有空閑內(nèi)存資源的子系統(tǒng)則會向申請內(nèi)存的子系統(tǒng)發(fā)送拒絕消息。申請內(nèi)存的子系統(tǒng)在收到其他各子系統(tǒng)的回復之后,從具有空閑內(nèi)存資源的子系統(tǒng)中選擇最符合條件的一個子系統(tǒng),作為候選子系統(tǒng)。其中該條件可以包括空閑內(nèi)存資源的大小是否滿足要求;在計算機集群系統(tǒng)中,該條件還可以包括,各子系統(tǒng)所在的CPU或內(nèi)核與申請內(nèi)存資源子系統(tǒng)的CPU或內(nèi)核之間的距離遠近是否滿足要求。申請內(nèi)存資源的子系統(tǒng)通過與候選子系統(tǒng)之間進行通信,實現(xiàn)整個內(nèi)存資源的申請過程。其中,上述內(nèi)存為全局共享內(nèi)存,各子系統(tǒng)中通過維護各自的物理內(nèi)存列表的方式,對其可使用的內(nèi)存資源進行表征。
      [0005]但是,當申請內(nèi)存資源的子系統(tǒng)對內(nèi)存資源的需求較高,而其他子系統(tǒng)的空閑內(nèi)存資源均達不到所需內(nèi)存資源的大小時,該子系統(tǒng)的高內(nèi)存需求無法得到滿足,從而會使得整個多操作系統(tǒng)結(jié)構(gòu)在滿足高內(nèi)存需求方面存在不足。

      【發(fā)明內(nèi)容】

      [0006]本發(fā)明提供一種內(nèi)存分配方法、裝置及系統(tǒng),用于滿足整個多操作系統(tǒng)結(jié)構(gòu)在滿足高內(nèi)存需求方面的需求。
      [0007]本發(fā)明的第一個方面是提供一種內(nèi)存分配方法,包括:
      [0008]接收一個或多個處理模塊分別發(fā)送的內(nèi)存狀態(tài)信息;
      [0009]根據(jù)所述內(nèi)存狀態(tài)信息,分別確定所述一個或多個處理模塊各自的內(nèi)存壓力的數(shù)值;
      [0010]判斷所述一個或多個處理模塊的內(nèi)存壓力的數(shù)值中最大值與最小值之差是否大于或等于預設閾值;
      [0011]若是,則向所述最小值對應的處理模塊發(fā)送內(nèi)存搶占消息,所述內(nèi)存搶占消息中攜帶有需釋放的內(nèi)存大小,以供所述最小值對應的處理模塊對所述需釋放的內(nèi)存大小對應的內(nèi)存資源進行釋放;
      [0012]在從所述最小值對應的處理模塊中搶占到內(nèi)存資源之后,向所述最大值對應的處理模塊發(fā)送內(nèi)存分配消息,所述內(nèi)存分配消息中攜帶有待分配的內(nèi)存大小,以使所述最大值對應的處理模塊在可用內(nèi)存資源中增加了所述待分配的內(nèi)存大小之后,內(nèi)存壓力的數(shù)值相應地減小。
      [0013]結(jié)合第一個方面的內(nèi)存分配方法,在第一種可能的實現(xiàn)方式中,單個處理模塊的所述內(nèi)存狀態(tài)信息包括:所述單個處理模塊在預設時間范圍內(nèi)發(fā)生缺頁異常的物理頁面的數(shù)量與所述預設時間范圍內(nèi)的物理頁面總數(shù)的比值;
      [0014]相應地,所述根據(jù)所述內(nèi)存狀態(tài)信息,分別確定所述一個或多個處理模塊各自的內(nèi)存壓力的數(shù)值具體為:
      [0015]根據(jù)所述一個或多個處理模塊各自的內(nèi)存分配時間間隔,確定內(nèi)存分配時間間隔的平均值,所述內(nèi)存分配時間間隔為所述單個處理模塊最近一次物理頁面總數(shù)發(fā)生變更的時間點與當前時間點之間的時間間隔;
      [0016]所述單個處理模塊的內(nèi)存壓力P為,P=a*C+i3*At ;其中,所述C為所述單個處理模塊在預設時間范圍內(nèi)發(fā)生缺頁異常的物理頁面的數(shù)量與所述預設時間范圍內(nèi)的物理頁面總數(shù)的比值,所述At為所述單個處理模塊的內(nèi)存分配時間間隔與所述內(nèi)存分配時間間隔的平均值之間的比值,所述a和所述β為預設系數(shù)。
      [0017]結(jié)合第一個方面的內(nèi)存分配方法,在第二種可能的實現(xiàn)方式中,單個處理模塊的所述內(nèi)存狀態(tài)信息包括最小頁面駐留時間,所述頁面駐留時間為物理頁面換入內(nèi)存的時間點與換出內(nèi)存的時間點的間隔時間,或者物理頁面換入內(nèi)存的時間點與當前時間點的間隔時間,所述最小頁面駐留時間為預設時間范圍內(nèi)一個或多個頁面駐留時間中數(shù)值最小的頁面駐留時間;
      [0018]相應地,所述根據(jù)所述內(nèi)存狀態(tài)信息,分別確定所述一個或多個處理模塊各自的內(nèi)存壓力的數(shù)值具體為:
      [0019]根據(jù)所述一個或多個處理模塊各自的最小頁面駐留時間,確定最小頁面駐留時間的平均值;
      [0020]所述單個處理模塊的內(nèi)存壓力P為,所述單個處理模塊的最小頁面駐留時間與所述最小頁面駐留時間的平均值之間的比值。
      [0021]結(jié)合內(nèi)存分配方法的第一個方面的第一種可能的實現(xiàn)方式或第二種可能的實現(xiàn)方式,在第三種可能的實現(xiàn)方式中,所述需釋放的內(nèi)存大小具體為:
      [0022]所述一個或多個處理模塊的內(nèi)存壓力的數(shù)值的平均值與所述內(nèi)存壓力的數(shù)值中最小值之差,與所述最小值對應的處理模塊中內(nèi)存資源的總數(shù)的乘積。
      [0023]結(jié)合內(nèi)存分配方法的第一個方面的第一種可能的實現(xiàn)方式或第二種可能的實現(xiàn)方式,在第四種可能的實現(xiàn)方式中,所述待分配的內(nèi)存大小具體為:
      [0024]所述內(nèi)存壓力的數(shù)值中最大值與所述一個或多個處理模塊的內(nèi)存壓力的數(shù)值的平均值之差,與所述最大值對應的處理模塊中內(nèi)存資源的總數(shù)的乘積。
      [0025]結(jié)合內(nèi)存分配方法的第一個方面或第一個方面的第一至四種可能的實現(xiàn)方式,在第五種可能的實現(xiàn)方式中,所述接收一個或多個處理模塊分別發(fā)送的內(nèi)存狀態(tài)信息具體為:[0026]分別按照所述一個或多個處理模塊各自的心跳頻率,接收所述一個或多個處理模塊分別發(fā)送的內(nèi)存狀態(tài)信息。
      [0027]本發(fā)明的第二個方面是提供一種內(nèi)存分配方法,包括:
      [0028]將內(nèi)存狀態(tài)信息發(fā)送給主控處理模塊,以供所述主控處理模塊根據(jù)所述內(nèi)存狀態(tài)信息,確定內(nèi)存壓力的數(shù)值,并判斷分別確定的一個或多個處理模塊的內(nèi)存壓力的數(shù)值中最大值與最小值之差是否大于或等于預設閾值;
      [0029]接收所述主控處理模塊發(fā)送的內(nèi)存搶占消息,所述內(nèi)存搶占消息為所述主控處理模塊在判斷出所述一個或多個處理模塊的內(nèi)存壓力的數(shù)值中最大值與最小值之差大于或等于所述預設閾值之后,向所述最小值對應的處理模塊發(fā)送的,所述內(nèi)存搶占消息中攜帶有需釋放的內(nèi)存大??;
      [0030]對所述需釋放的內(nèi)存大小對應的內(nèi)存資源進行釋放。
      [0031]結(jié)合第二個方面的內(nèi)存分配方法,在第一種可能的實現(xiàn)方式中,在所述接收所述主控處理模塊發(fā)送的內(nèi)存搶占消息之后,所述對所述需釋放的內(nèi)存大小對應的內(nèi)存資源進行釋放之前,所述方法還包括:
      [0032]判斷所述需釋放的內(nèi)存大小是否大于或等于空閑內(nèi)存的大小;
      [0033]若是,則采用模擬換頁機制,從非空閑內(nèi)存中搶占可被交換的內(nèi)存,搶占的所述可被交換的內(nèi)存的大小等于所述需釋放的內(nèi)存大小與所述空閑內(nèi)存的大小之差;
      [0034]相應地,所述對所述需釋放的內(nèi)存大小對應的內(nèi)存資源進行釋放具體為:
      [0035]對所述空閑內(nèi)存的大小和搶占的所述可被交換的內(nèi)存的大小對應的內(nèi)存資源進行釋放。
      [0036]結(jié)合第二個方面的內(nèi)存分配方法,在第二種可能的實現(xiàn)方式中,所述內(nèi)存狀態(tài)信息包括:
      [0037]在預設時間范圍內(nèi)發(fā)生缺頁異常的物理頁面的數(shù)量與所述預設時間范圍內(nèi)的物理頁面總數(shù)的比值;或者
      [0038]最小頁面駐留時間,所述頁面駐留時間為物理頁面換入內(nèi)存的時間點與換出內(nèi)存的時間點的間隔時間,或者物理頁面換入內(nèi)存的時間點與當前時間點的間隔時間,所述最小頁面駐留時間為預設時間范圍內(nèi)一個或多個所述頁面駐留時間中數(shù)值最小的頁面駐留時間。
      [0039]結(jié)合第二個方面的內(nèi)存分配方法或第二個方面的第一種至第二種可能的實現(xiàn)方式中,在第三種可能的實現(xiàn)方式中,所述將內(nèi)存狀態(tài)信息發(fā)送給主控處理模塊具體為:
      [0040]按照預設的心跳頻率,將心跳周期內(nèi)的內(nèi)存狀態(tài)信息發(fā)送給所述主控處理模塊。
      [0041]結(jié)合第二個方面的內(nèi)存分配方法,在第四種可能的實現(xiàn)方式中,所述將內(nèi)存狀態(tài)信息發(fā)送給主控處理模塊之后,所述方法還包括:
      [0042]接收所述主控處理模塊發(fā)送的內(nèi)存分配消息,所述內(nèi)存分配消息為所述主控處理模塊在從所述最小值對應的處理模塊中搶占到內(nèi)存資源之后,向所述最大值對應的處理模塊發(fā)送的,所述內(nèi)存分配消息中攜帶有待分配的內(nèi)存大??;
      [0043]在可用內(nèi)存資源中增加所述待分配的內(nèi)存大小。
      [0044]本發(fā)明的第三個方面是提供一種內(nèi)存分配方法,包括:
      [0045]將內(nèi)存狀態(tài)信息發(fā)送給主控處理模塊,以供所述主控處理模塊根據(jù)所述內(nèi)存狀態(tài)信息,確定內(nèi)存壓力的數(shù)值,并判斷分別確定的一個或多個處理模塊的內(nèi)存壓力的數(shù)值中最大值與最小值之差是否大于或等于預設閾值;
      [0046]接收所述主控處理模塊發(fā)送的內(nèi)存分配消息,所述內(nèi)存分配消息為所述主控處理模塊在從所述最小值對應的處理模塊中搶占到內(nèi)存資源之后,向所述最大值對應的處理模塊發(fā)送的,所述內(nèi)存分配消息中攜帶有待分配的內(nèi)存大??;
      [0047]在可用內(nèi)存資源中增加所述待分配的內(nèi)存大小。
      [0048]結(jié)合第三個方面的內(nèi)存分配方法,在第一種可能的實現(xiàn)方式中,所述內(nèi)存狀態(tài)信息包括:
      [0049]在預設時間范圍內(nèi)發(fā)生缺頁異常的物理頁面的數(shù)量與所述預設時間范圍內(nèi)的物理頁面總數(shù)的比值;或者
      [0050]最小頁面駐留時間,所述頁面駐留時間為物理頁面換入內(nèi)存的時間點與換出內(nèi)存的時間點的間隔時間,或者物理頁面換入內(nèi)存的時間點與當前時間點的間隔時間,所述最小頁面駐留時間為預設時間范圍內(nèi)一個或多個所述頁面駐留時間中數(shù)值最小的頁面駐留時間。
      [0051]結(jié)合第三個方面的內(nèi)存分配方法或第三個方面的第一種可能的實現(xiàn)方式,在第二種可能的實現(xiàn)方式中,所述將內(nèi)存狀態(tài)信息發(fā)送給主控處理模塊具體為:
      [0052]按照預設的心跳頻率,將心跳周期內(nèi)的內(nèi)存狀態(tài)信息發(fā)送給所述主控處理模塊。
      [0053]本發(fā)明的第四個方面是提供一種主控處理模塊,包括:
      [0054]接收單元,用于接收一個或多個處理模塊分別發(fā)送的內(nèi)存狀態(tài)信息;
      [0055]處理單元,用于根據(jù)所述內(nèi)存狀態(tài)信息,分別確定所述一個或多個處理模塊各自的內(nèi)存壓力的數(shù)值;
      [0056]判斷單元,用于判斷所述一個或多個處理模塊的內(nèi)存壓力的數(shù)值中最大值與最小值之差是否大于或等于預設閾值;
      [0057]發(fā)送單元,用于在判斷出所述一個或多個處理模塊的內(nèi)存壓力的數(shù)值中最大值與最小值之差大于或等于預設閾值時,向所述最小值對應的處理模塊發(fā)送內(nèi)存搶占消息,所述內(nèi)存搶占消息中攜帶有需釋放的內(nèi)存大小,以供所述最小值對應的處理模塊對所述需釋放的內(nèi)存大小對應的內(nèi)存資源進行釋放;在從所述最小值對應的處理模塊中搶占到內(nèi)存資源之后,向所述最大值對應的處理模塊發(fā)送內(nèi)存分配消息,所述內(nèi)存分配消息中攜帶有待分配的內(nèi)存大小,以使所述最大值對應的處理模塊在可用內(nèi)存資源中增加了所述待分配的內(nèi)存大小之后,內(nèi)存壓力的數(shù)值相應地減小。
      [0058]結(jié)合第四個方面的主控處理模塊,在第一種可能的實現(xiàn)方式中,所述接收單元接收到的單個處理模塊的所述內(nèi)存狀態(tài)信息包括:所述單個處理模塊在預設時間范圍內(nèi)發(fā)生缺頁異常的物理頁面的數(shù)量與所述預設時間范圍內(nèi)的物理頁面總數(shù)的比值;
      [0059]相應地,所述處理單元具體用于,根據(jù)所述一個或多個處理模塊各自的內(nèi)存分配時間間隔,確定內(nèi)存分配時間間隔的平均值,所述內(nèi)存分配時間間隔為所述單個處理模塊最近一次物理頁面總數(shù)發(fā)生變更的時間點與當前時間點之間的時間間隔;所述單個處理模塊的內(nèi)存壓力P為,P=a*C+i3*At ;其中,所述C為所述單個處理模塊在預設時間范圍內(nèi)發(fā)生缺頁異常的物理頁面的數(shù)量與所述預設時間范圍內(nèi)的物理頁面總數(shù)的比值,所述At為所述單個處理模塊的內(nèi)存分配時間間隔與所述內(nèi)存分配時間間隔的平均值之間的比值,所述α和所述β為預設系數(shù)。
      [0060]結(jié)合第四個方面的主控處理模塊,在第二種可能的實現(xiàn)方式中,所述接收單元接收到的單個處理模塊的所述內(nèi)存狀態(tài)信息包括最小頁面駐留時間,所述頁面駐留時間為物理頁面換入內(nèi)存的時間點與換出內(nèi)存的時間點的間隔時間,或者物理頁面換入內(nèi)存的時間點與當前時間點的間隔時間,所述最小頁面駐留時間為預設時間范圍內(nèi)一個或多個頁面駐留時間中數(shù)值最小的頁面駐留時間;
      [0061]相應地,所述處理單元具體用于,根據(jù)所述一個或多個處理模塊各自的最小頁面駐留時間,確定最小頁面駐留時間的平均值;所述單個處理模塊的內(nèi)存壓力P為,所述單個處理模塊的最小頁面駐留時間與所述最小頁面駐留時間的平均值之間的比值。
      [0062]結(jié)合第四個方面的主控處理模塊的第一種或第二種可能的實現(xiàn)方式,在第三種可能的實現(xiàn)方式中,所述需釋放的內(nèi)存大小具體為:
      [0063]所述一個或多個處理模塊的內(nèi)存壓力的數(shù)值的平均值與所述內(nèi)存壓力的數(shù)值中最小值之差,與所述最小值對應的處理模塊中內(nèi)存資源的總數(shù)的乘積。
      [0064]結(jié)合第四個方面的主控處理模塊的第一種或第二種可能的實現(xiàn)方式,在第四種可能的實現(xiàn)方式中,所述待分配的內(nèi)存大小具體為:
      [0065]所述內(nèi)存壓力的數(shù)值中最大值與所述一個或多個處理模塊的內(nèi)存壓力的數(shù)值的平均值之差,與所述最大值對應的處理模塊中內(nèi)存資源的總數(shù)的乘積。
      [0066]結(jié)合第四個方面的主控處理模塊或第四個方面的第一種至第四種可能的實現(xiàn)方式,在第五種可能的實現(xiàn)方式中,所述接收單元具體用于:
      [0067]分別按照所述一個或多個處理模塊各自的心跳頻率,接收所述一個或多個處理模塊分別發(fā)送的內(nèi)存狀態(tài)信息。
      [0068]本發(fā)明的第五個方面是提供一種處理模塊,包括:
      [0069]發(fā)送單元,用于將內(nèi)存狀態(tài)信息發(fā)送給主控處理模塊,以供所述主控處理模塊根據(jù)所述內(nèi)存狀態(tài)信息,確定內(nèi)存壓力的數(shù)值,并判斷分別確定的一個或多個處理模塊的內(nèi)存壓力的數(shù)值中最大值與最小值之差是否大于或等于預設閾值;
      [0070]接收單元,用于接收所述主控處理模塊發(fā)送的內(nèi)存搶占消息,所述內(nèi)存搶占消息為所述主控處理模塊在判斷出所述一個或多個處理模塊的內(nèi)存壓力的數(shù)值中最大值與最小值之差大于或等于所述預設閾值之后,向所述最小值對應的處理模塊發(fā)送的,所述內(nèi)存搶占消息中攜帶有需釋放的內(nèi)存大小;
      [0071]處理單元,用于對所述需釋放的內(nèi)存大小對應的內(nèi)存資源進行釋放。
      [0072]結(jié)合第五個方面的處理模塊,在第一種可能的實現(xiàn)方式中,所述處理模塊還包括:
      [0073]判斷單元,用于所述接收單元接收所述主控處理模塊發(fā)送的內(nèi)存搶占消息之后,所述接收單元對所述需釋放的內(nèi)存大小對應的內(nèi)存資源進行釋放之前,判斷所述需釋放的內(nèi)存大小是否大于或等于空閑內(nèi)存的大小;
      [0074]所述處理單元還用于,在所述判斷單元判斷出所述需釋放的內(nèi)存大小大于或等于所述空閑內(nèi)存的大小時,采用模擬換頁機制,從非空閑內(nèi)存中搶占可被交換的內(nèi)存,對所述空閑內(nèi)存的大小和搶占的所述可被交換的內(nèi)存的大小對應的內(nèi)存資源進行釋放,其中,搶占的所述可被交換的內(nèi)存的大小等于所述需釋放的內(nèi)存大小與所述空閑內(nèi)存的大小之差。[0075]結(jié)合第五個方面的處理模塊,在第二種可能的實現(xiàn)方式中,所述內(nèi)存狀態(tài)信息包括:
      [0076]在預設時間范圍內(nèi)發(fā)生缺頁異常的物理頁面的數(shù)量與所述預設時間范圍內(nèi)的物理頁面總數(shù)的比值;或者
      [0077]最小頁面駐留時間,所述頁面駐留時間為物理頁面換入內(nèi)存的時間點與換出內(nèi)存的時間點的間隔時間,或者物理頁面換入內(nèi)存的時間點與當前時間點的間隔時間,所述最小頁面駐留時間為預設時間范圍內(nèi)一個或多個所述頁面駐留時間中數(shù)值最小的頁面駐留時間。
      [0078]結(jié)合第五個方面的處理模塊或第五個方面的第一種至第二種可能的實現(xiàn)方式,在第三種可能的實現(xiàn)方式中,所述發(fā)送單元具體用于:
      [0079]按照預設的心跳頻率,將心跳周期內(nèi)的內(nèi)存狀態(tài)信息發(fā)送給所述主控處理模塊。
      [0080]結(jié)合第五個方面的處理模塊,在第四種可能的實現(xiàn)方式中,所述接收單元還用于:
      [0081 ] 在所述發(fā)送單元將內(nèi)存狀態(tài)信息發(fā)送給主控處理模塊之后,接收所述主控處理模塊發(fā)送的內(nèi)存分配消息,所述內(nèi)存分配消息為所述主控處理模塊在從所述最小值對應的處理模塊中搶占到內(nèi)存資源之后,向所述最大值對應的處理模塊發(fā)送的,所述內(nèi)存分配消息中攜帶有待分配的內(nèi)存大??;
      [0082]相應地,所述處理單元還用于,在可用內(nèi)存資源中增加所述待分配的內(nèi)存大小。
      [0083]本發(fā)明的第六個方面是提供一種處理模塊,包括:
      [0084]發(fā)送單元,用于將內(nèi)存狀態(tài)信息發(fā)送給主控處理模塊,以供所述主控處理模塊根據(jù)所述內(nèi)存狀態(tài)信息,確定內(nèi)存壓力的數(shù)值,并判斷分別確定的一個或多個處理模塊的內(nèi)存壓力的數(shù)值中最大值與最小值之差是否大于或等于預設閾值;
      [0085]接收單元,用于接收所述主控處理模塊發(fā)送的內(nèi)存分配消息,所述內(nèi)存分配消息為所述主控處理模塊在從所述最小值對應的處理模塊中搶占到內(nèi)存資源之后,向所述最大值對應的處理模塊發(fā)送的,所述內(nèi)存分配消息中攜帶有待分配的內(nèi)存大??;
      [0086]處理單元,用于在可用內(nèi)存資源中增加所述待分配的內(nèi)存大小。
      [0087]結(jié)合第六個方面的處理模塊,在第一種可能的實現(xiàn)方式中,所述內(nèi)存狀態(tài)信息包括:
      [0088]在預設時間范圍內(nèi)發(fā)生缺頁異常的物理頁面的數(shù)量與所述預設時間范圍內(nèi)的物理頁面總數(shù)的比值;或者
      [0089]最小頁面駐留時間,所述頁面駐留時間為物理頁面換入內(nèi)存的時間點與換出內(nèi)存的時間點的間隔時間,或者物理頁面換入內(nèi)存的時間點與當前時間點的間隔時間,所述最小頁面駐留時間為預設時間范圍內(nèi)一個或多個所述頁面駐留時間中數(shù)值最小的頁面駐留時間。
      [0090]結(jié)合第六個方面的處理模塊或第六個方面的第一種可能的實現(xiàn)方式,在第二種可能的實現(xiàn)方式中,所述處理單元具體用于:
      [0091]按照預設的心跳頻率,將心跳周期內(nèi)的內(nèi)存狀態(tài)信息發(fā)送給所述主控處理模塊。
      [0092]本發(fā)明的第七個方面是提供一種中央處理器,包括上述第四個方面或第四個方面的第一種至第五種可能的實現(xiàn)方式中的主控處理模塊。[0093]本發(fā)明的第八個方面是提供一種中央處理器,包括上述第五個方面或第五個方面的第一種至第四種可能的實現(xiàn)方式中的處理模塊。
      [0094]本發(fā)明的第九個方面是提供一種中央處理器,包括上述第六個方面或第六個方面的第一種或第二種可能的實現(xiàn)方式中的處理模塊。
      [0095]本發(fā)明第十個方面是提供一種計算機系統(tǒng)包括上述第七個方面中的中央處理器、第八個方面中的中央處理器,以及地九個方面中的中央處理器。
      [0096]本發(fā)明提供的內(nèi)存分配方法、裝置及系統(tǒng),在接收一個或多個處理模塊分別發(fā)送的內(nèi)存狀態(tài)信息之后,分別確定一個或多個處理模塊各自的內(nèi)存壓力的數(shù)值,并在判斷出一個或多個處理模塊的內(nèi)存壓力的數(shù)值中最大值與最小值之差大于或等于預設閾值時,向最小值對應的處理模塊發(fā)送內(nèi)存搶占消息,在從最小值對應的處理模塊中搶占到內(nèi)存資源之后,向最大值對應的處理模塊發(fā)送內(nèi)存分配消息,使得最大值對應的處理模塊在可用內(nèi)存資源中增加了待分配的內(nèi)存大小之后,內(nèi)存壓力的數(shù)值相應地減小。當多操作系統(tǒng)結(jié)構(gòu)中的各處理模塊的內(nèi)存壓力分布懸殊時,從內(nèi)存壓力較小的處理模塊的內(nèi)存資源中搶占一部分分配給內(nèi)存壓力較大的處理模塊,能夠有效地滿足內(nèi)存壓力較大的處理模塊的高內(nèi)存需求,并且能夠?qū)Ω魈幚砟K之間的內(nèi)存壓力進行均衡,有效地提高整個多操作系統(tǒng)結(jié)構(gòu)中內(nèi)存資源的利用率和系統(tǒng)性能。
      [0097]本發(fā)明實施例提供的內(nèi)存分配方法、裝置及系統(tǒng),將內(nèi)存狀態(tài)信息發(fā)送給主控處理模塊,用于供主控處理模塊根據(jù)內(nèi)存狀態(tài)信息,確定內(nèi)存壓力的數(shù)值,并判斷分別確定的一個或多個處理模塊的內(nèi)存壓力的數(shù)值中最大值與最小值之差是否大于或等于預設閾值,在主控處理模塊判斷出一個或多個處理模塊的內(nèi)存壓力的數(shù)值中最大值與最小值之差大于或等于預設閾值之后,接收主控處理模塊發(fā)送的內(nèi)存搶占消息,并根據(jù)內(nèi)存搶占消息中攜帶有需釋放的內(nèi)存大小,對需釋放的內(nèi)存大小對應的內(nèi)存資源進行釋放。當多操作系統(tǒng)結(jié)構(gòu)中的各處理模塊的內(nèi)存壓力分布懸殊時,從內(nèi)存壓力較小的處理模塊的內(nèi)存資源中搶占一部分分配給內(nèi)存壓力較大的處理模塊,能夠有效地滿足內(nèi)存壓力較大的處理模塊的高內(nèi)存需求,并且能夠?qū)Ω魈幚砟K之間的內(nèi)存壓力進行均衡,有效地提高整個多操作系統(tǒng)結(jié)構(gòu)中內(nèi)存資源的利用率和系統(tǒng)性能。
      [0098]本發(fā)明實施例提供的內(nèi)存分配方法、裝置及系統(tǒng),在判斷出需釋放的內(nèi)存大小大于或等于空閑內(nèi)存的大小之后,采用模擬換頁機制,從非空閑內(nèi)存中搶占可被交換的內(nèi)存,所搶占的可被交換的內(nèi)存的大小等于需釋放的內(nèi)存大小與空閑內(nèi)存的大小之差,從而對空閑內(nèi)存的大小和搶占的可被交換的內(nèi)存的大小對應的內(nèi)存資源進行釋放,當多操作系統(tǒng)結(jié)構(gòu)中的各處理模塊的內(nèi)存壓力分布懸殊時,不僅能夠從內(nèi)存壓力較小的處理模塊的內(nèi)存資源中搶占到空閑的內(nèi)存,還能夠從非空閑的內(nèi)存中搶占可被交換的部分內(nèi)存,從而能夠盡量保證有足夠的內(nèi)存資源可以分配給內(nèi)存壓力較大的處理模塊,能夠有效地滿足內(nèi)存壓力較大的處理模塊的高內(nèi)存需求,并且能夠?qū)Ω魈幚砟K之間的內(nèi)存壓力進行均衡,有效地提高整個多操作系統(tǒng)結(jié)構(gòu)中內(nèi)存資源的利用率和系統(tǒng)性能。
      【專利附圖】

      【附圖說明】
      [0099]圖1為現(xiàn)有技術中一種多操作系統(tǒng)的架構(gòu)圖;
      [0100]圖2為本發(fā)明提供的內(nèi)存分配方法一實施例的流程圖;[0101]圖3為本發(fā)明提供的內(nèi)存分配方法另一實施例的流程圖;
      [0102]圖4為本發(fā)明提供的內(nèi)存分配方法又一實施例的流程圖;
      [0103]圖5為本發(fā)明提供的內(nèi)存分配方法又一實施例的流程圖;
      [0104]圖6a為本發(fā)明提供的多操作系統(tǒng)結(jié)構(gòu)的硬件架構(gòu)圖;
      [0105]圖6b為本發(fā)明提供的多操作系統(tǒng)結(jié)構(gòu)的軟件架構(gòu)圖;
      [0106]圖7為本發(fā)明提供的主控處理模塊一實施例的結(jié)構(gòu)示意圖;
      [0107]圖8為本發(fā)明提供的第一種處理模塊一實施例的結(jié)構(gòu)示意圖
      [0108]圖9為本發(fā)明提供的第一種處理模塊另一實施例的結(jié)構(gòu)示意圖;
      [0109]圖10為本發(fā)明提供的第二種處理模塊一實施例的結(jié)構(gòu)示意圖;
      [0110]圖11為本發(fā)明提供的第一種中央處理器實施例的結(jié)構(gòu)示意圖;
      [0111]圖12為本發(fā)明提供的第二種中央處理器實施例的結(jié)構(gòu)示意圖;
      [0112]圖13為本發(fā)明提供的第三種中央處理器實施例的結(jié)構(gòu)示意圖;
      [0113]圖14為本發(fā)明提供的計算機系統(tǒng)實施例的結(jié)構(gòu)示意圖。
      【具體實施方式】
      [0114]多操作系統(tǒng)結(jié)構(gòu)由多個CPU或多個CPU內(nèi)核組成的,操作系統(tǒng)可以運行在CPU上或者CPU內(nèi)核上。多操作系統(tǒng)結(jié)構(gòu)中的每個CPU或CPU內(nèi)核上各自獨立運行著操作系統(tǒng),各操作系統(tǒng)可以是異構(gòu)的,也可以是同構(gòu)的。各操作系統(tǒng)之間共享資源,協(xié)同工作。
      [0115]多操作系統(tǒng)結(jié)構(gòu)將不同的負載分配到不同的子系統(tǒng)上執(zhí)行,既可以提高多操作系統(tǒng)的處理能力,也能夠?qū)Σ煌僮飨到y(tǒng)上的應用實現(xiàn)兼容。與傳統(tǒng)的基于計算機集群的多操作系統(tǒng)結(jié)構(gòu)相比,目前的多操作系統(tǒng)結(jié)構(gòu)的粒度已經(jīng)有操作系統(tǒng)降低到操作系統(tǒng)內(nèi)核。各操作系統(tǒng)內(nèi)核獨立處理負載,并共享整個多操作系統(tǒng)結(jié)構(gòu)的資源,例如,輸入輸出端口(Input/Output, I/O)、內(nèi)存資源等。
      [0116]其中,在多個操作系統(tǒng)中有一個操作系統(tǒng)運行的是管理操作系統(tǒng),在該管理操作系統(tǒng)上運行全局管理服務(Global Management Services, GMS),用于協(xié)調(diào)各個子系統(tǒng)的運行。以下各實施例中的全局內(nèi)存管理服務為具體的對各個子系統(tǒng)的內(nèi)存占用進行管理的功能部分。
      [0117]全局內(nèi)存管理服務對全局共享內(nèi)存進行管理,各子系統(tǒng)通過物理內(nèi)存列表等方式表征其所占用的部分內(nèi)存資源,也就是說,各子系統(tǒng)并不實際配置有內(nèi)存,而是根據(jù)需要使用全局共享內(nèi)存中的部分內(nèi)存資源。
      [0118]以下實施例中所述的子系統(tǒng)即為運行在CPU或者CPU內(nèi)核上的操作系統(tǒng)。圖2所示實施例的執(zhí)行主體為主控處理模塊,主控處理模塊即為運行管理操作系統(tǒng)和全局內(nèi)存管理服務的處理模塊。
      [0119]圖2為本發(fā)明提供的內(nèi)存分配方法一實施例的流程圖,如圖2所示,該方法包括:
      [0120]步驟101、接收一個或多個處理模塊分別發(fā)送的內(nèi)存狀態(tài)信息。
      [0121]步驟102、根據(jù)所述內(nèi)存狀態(tài)信息,分別確定所述一個或多個處理模塊各自的內(nèi)存壓力的數(shù)值。
      [0122]多操作系統(tǒng)中包括多個處理模塊,在多個處理模塊中包括一個主控處理模塊。包括主控處理模塊在內(nèi)的各處理模塊上,分別運行各自的操作系統(tǒng),各操作系統(tǒng)也可以被稱為子系統(tǒng)。
      [0123]包括主控處理模塊在內(nèi)的各處理模塊均對其各自占用共享內(nèi)存的狀態(tài)信息進行收集,并將收集到的內(nèi)存狀態(tài)信息上報給主控處理模塊。
      [0124]需要說明的是,由于主控處理模塊是運行全局內(nèi)存管理服務的處理模塊,而其同樣可以作為本發(fā)明各實施例中參與內(nèi)存分配的處理模塊之一,因此,以下內(nèi)容中所提及的處理模塊可以包括主控處理模塊。
      [0125]主控處理模塊在接收到各處理模塊發(fā)送的內(nèi)存狀態(tài)信息之后,分別根據(jù)各處理模塊各自的內(nèi)存狀態(tài)信息,計算出各處理模塊的內(nèi)存壓力的數(shù)值。
      [0126]具體的,內(nèi)存狀態(tài)信息可以通過如下兩種指標體現(xiàn),一種為發(fā)生缺頁異常(PageFault)的物理頁面的數(shù)量與物理頁面總數(shù)的比值,另一種為內(nèi)存中物理頁面的駐留時間。可選的反映內(nèi)存狀態(tài)信息的指標并不僅限于此,能夠體現(xiàn)處理模塊對內(nèi)存占用情況的指標均可以作為內(nèi)存狀態(tài)信息,上報給主控處理模塊。由主控處理模塊根據(jù)內(nèi)存狀態(tài)信息確定內(nèi)存壓力的數(shù)值。
      [0127]一種可選的實施方式為,單個處理模塊的所述內(nèi)存狀態(tài)信息可以包括:所述單個處理模塊在預設時間范圍內(nèi)發(fā)生缺頁異常的物理頁面的數(shù)量與所述預設時間范圍內(nèi)的物理頁面總數(shù)的比值;
      [0128]相應地,步驟102具體可以為:
      [0129]根據(jù)所述一個或多個處理模塊各自的內(nèi)存分配時間間隔,確定內(nèi)存分配時間間隔的平均值,所述內(nèi)存分配時間間隔為所述單個處理模塊最近一次物理頁面總數(shù)發(fā)生變更的時間點與當前時間點之間的時間間隔。
      [0130]所述單個處理模塊的內(nèi)存壓力P為,P=a*C+i3*At ;其中,所述C為所述單個處理模塊在預設時間范圍內(nèi)發(fā)生缺頁異常的物理頁面的數(shù)量與所述預設時間范圍內(nèi)的物理頁面總數(shù)的比值,所述At為所述單個處理模塊的內(nèi)存分配時間間隔與所述內(nèi)存分配時間間隔的平均值之間的比值,所述a和所述β為預設系數(shù)。
      [0131]為了能夠?qū)Ω魈幚砟K上子系統(tǒng)的內(nèi)存壓力進行量化,可以將缺頁異常(PageFault)率和內(nèi)存分配時間間隔作為影響因素,并以其線性組合作為衡量處理模塊內(nèi)存壓力大小的指標。
      [0132]對于每個處理模塊而言,PageFault率為預設時間范圍內(nèi),該處理模塊發(fā)生PageFault的物理頁面的數(shù)量與物理頁面總數(shù)的比值。
      [0133]物理頁面總數(shù)與可用內(nèi)存的大小是對應的,處理模塊在被分配了一定大小的內(nèi)存資源時,被分配的內(nèi)存資源是以物理頁面的形式體現(xiàn)的。當處理模塊被重新分配了內(nèi)存資源時,相應地,該處理模塊的物理頁面的總數(shù)也相應地發(fā)生了變化。處理模塊可用的內(nèi)存資源越多時,其物理頁面的總數(shù)相應地越多。
      [0134]該預設時間范圍可以為處理模塊向主控處理模塊上報內(nèi)存狀態(tài)信息的周期對應的時間長度,也可以是小于該時間長度的其他時間長度。這樣可以保證在該預設時間范圍內(nèi)處理模塊的物理頁面的總數(shù)是不變的。
      [0135]將PageFault率作為衡量處理模塊的內(nèi)存壓力的一個影響因素,是因為當某個處理模塊上子系統(tǒng)的內(nèi)存壓力較大時,其對應的某個時間間隔內(nèi)的PageFault率一般較高。
      [0136]對于每個處理模塊而言,內(nèi)存分配時間間隔為當前時間戳減去該處理模塊最近一次被分配內(nèi)存資源的時間戳的時間長度,將該時間長度作為該處理模塊的內(nèi)存分配時間間隔。該內(nèi)存分配時間間隔與上述預設時間范圍無關。
      [0137]將內(nèi)存分配時間間隔作為衡量處理模塊的內(nèi)存壓力的另一個影響因素,是因為當某個處理模塊上子系統(tǒng)的內(nèi)存壓力較大時,其內(nèi)存分配時間間隔一般較短。
      [0138]因此,將PageFault率和內(nèi)存分配時間間隔的線性組合作為衡量處理模塊的內(nèi)存壓力的指標。其中,計算時PageFault率的權重較大,起主要作用;內(nèi)存分配時間間隔的權重較小,起輔助作用。
      [0139]具體的實現(xiàn)方式為,各處理模塊分別根據(jù)其在預設時間范圍內(nèi)發(fā)生PageFault的物理頁面的數(shù)量和物理頁面總數(shù)計算出PageFault率。在計算出PageFault率之后,處理模塊將該PageFault率發(fā)送給主控處理模塊。其中,處理模塊也可以將發(fā)生PageFault的物理頁面的數(shù)量和PageFault率一并發(fā)送給主控處理模塊。
      [0140]主控處理模塊在接收到處理模塊發(fā)送的PageFault率之后,計算該處理模塊的內(nèi)存分配時間間隔。由于全局內(nèi)存管理服務是運行在主控處理模塊上的,因此主控處理模塊可以獲知對各處理模塊進行內(nèi)存分配的情況。相應地,主控處理模塊在接收到哪個處理模塊發(fā)送的PageFault率之后,隨即相應地計算該處理模塊的內(nèi)存分配時間間隔。
      [0141]當主控處理模塊接收到全部各處理模塊分別發(fā)送的PageFault率之后,計算各處理模塊的內(nèi)存分配時間間隔的平均值。進而分別計算每個處理模塊的內(nèi)存壓力的數(shù)值P。
      [0142]單個處理模塊的內(nèi)存壓力P= a^C+β* At。C即為該處理模塊的PageFault率,At即為該處理模塊的內(nèi)存分配時間間隔與內(nèi)存分配時間間隔的平均值的比值,α和β為根據(jù)計算需要而預設的系數(shù)。
      [0143]從而,主控處理`模塊通過上述計算方法,可以計算出各處理模塊的內(nèi)存壓力的數(shù)值。
      [0144]另一種可選的實施方式為,單個處理模塊的所述內(nèi)存狀態(tài)信息還可以包括:最小頁面駐留時間。當物理頁面已從內(nèi)存中換出后,所述頁面駐留時間為物理頁面換入內(nèi)存的時間點與換出內(nèi)存的時間點的間隔時間;當物理頁面尚未從內(nèi)存中換出時,所述頁面駐留時間為物理頁面換入內(nèi)存的時間點與當前時間點的間隔時間,所述最小頁面駐留時間為預設時間范圍內(nèi)一個或多個頁面駐留時間中數(shù)值最小的頁面駐留時間。
      [0145]相應地,步驟102具體可以為:
      [0146]根據(jù)所述一個或多個處理模塊各自的最小頁面駐留時間,確定最小頁面駐留時間的平均值;
      [0147]所述單個處理模塊的內(nèi)存壓力P為,所述單個處理模塊的最小頁面駐留時間與所述最小頁面駐留時間的平均值之間的比值。
      [0148]為了能夠?qū)Ω魈幚砟K上子系統(tǒng)的內(nèi)存壓力進行量化,可以將頁面駐留時間作為影響因素,用于衡量處理模塊內(nèi)存壓力的大小。
      [0149]對于每個處理模塊而言,該處理模塊中的每個物理頁面的頁面駐留時間即為該頁面在內(nèi)存中駐留的時間。每個物理頁面從全局共享硬盤中換入到全局共享內(nèi)存中的時間點為換入時間點,從全局共享內(nèi)存中換出到全局共享硬盤的時間點為換出時間點,換出時間點與換入時間點之間的間隔時間為該物理頁面的頁面駐留時間;如果某個物理頁面已換入到全局共享內(nèi)存中而尚未換出時,則當前時間點與該換入時間點之間的間隔時間為該物理頁面的頁面駐留時間。
      [0150]每個處理模塊包括一個或多個物理頁面,在預設的時間范圍內(nèi),每個物理頁面分別有各自的駐留時間。在該預設時間范圍內(nèi),將多個物理頁面的多個頁面駐留時間中數(shù)值最小的頁面駐留時間,作為最小頁面駐留時間。處理模塊向主控處理模塊發(fā)送內(nèi)存狀態(tài)信息時,可以將該處理模塊在預設時間范圍內(nèi)的最小頁面駐留時間攜帶在該內(nèi)存狀態(tài)信息中。
      [0151]該預設時間范圍可以為處理模塊向主控處理模塊上報內(nèi)存狀態(tài)信息的周期對應的時間長度,也可以是小于該時間長度的其他時間長度。
      [0152]將最小頁面駐留時間作為衡量處理模塊內(nèi)存壓力的大小的影響因素,是因為當某個處理模塊上子系統(tǒng)的內(nèi)存壓力較大時,該物理模塊上的物理頁面在內(nèi)存中的駐留時間一般較短。
      [0153]具體的實現(xiàn)方式為,各處理模塊分別將其在預設時間范圍內(nèi)的最小頁面駐留時間發(fā)送給主控處理模塊;主控處理模塊在接收到處理模塊發(fā)送的最小頁面駐留時間之后,計算各處理模塊的最小頁面駐留時間的平均值,分別將各處理模塊的最小頁面駐留時間除以各最小頁面駐留時間的平均值。從而,每個處理|旲塊的最小頁面駐留時間與最小頁面駐留時間的平均值的比值,即為該處理模塊的內(nèi)存壓力的數(shù)值P。
      [0154]步驟103、判斷所述一個或多個處理模塊的內(nèi)存壓力的數(shù)值中最大值與最小值之差是否大于或等于預設閾值。若是,則執(zhí)行步驟104 ;若否,則執(zhí)行步驟105。
      [0155]主控處理模塊在計算出各處理模塊的內(nèi)存壓力的數(shù)值之后,判斷各處理模塊之間的內(nèi)存壓力是否均衡。判斷的方法是,計算出的內(nèi)存壓力的數(shù)值中的最大值與最小值之差是否大于或等于預設閾值。如果最大值與最小值之差大于或等于預設閾值,則說明當前各處理模塊之間的內(nèi)存壓力不均衡;如果最大值與最小值之差小于預設閾值,則說明當前各處理模塊之間的內(nèi)存壓力處于均衡狀態(tài)。其中,該預設閾值可以根據(jù)需要相應地進行設定。
      [0156]步驟104、向所述最小值對應的處理模塊發(fā)送內(nèi)存搶占消息,所述內(nèi)存搶占消息中攜帶有需釋放的內(nèi)存大小。
      [0157]執(zhí)行步驟104是為了供所述最小值對應的處理模塊對所述需釋放的內(nèi)存大小對應的內(nèi)存資源進行釋放。執(zhí)行步驟104之后,繼續(xù)執(zhí)行步驟106。
      [0158]步驟105、不需要對內(nèi)存進行分配。
      [0159]在主控處理模塊判斷出當前各處理模塊之間的內(nèi)存壓力不均衡時,可以申請從內(nèi)存壓力的數(shù)值中最小值對應的處理模塊的內(nèi)存資源中搶占一定的內(nèi)存資源。具體的實現(xiàn)方式可以為,主控處理模塊向該最小值對應的處理模塊發(fā)送內(nèi)存搶占消息,并且,在該內(nèi)存搶占消息中攜帶有需要搶占的內(nèi)存的大小,也就是說,需要該處理模塊進行釋放的內(nèi)存資源的大小。
      [0160]該最小值對應的處理模塊在接收到內(nèi)存搶占消息之后,根據(jù)內(nèi)存搶占消息中攜帶的需要釋放的內(nèi)存資源的大小,相應地,將該內(nèi)存大小對應的內(nèi)存資源進行釋放。從而,該處理模塊可用的內(nèi)存資源的內(nèi)存大小為,原有可用的內(nèi)存資源和該部分釋放的內(nèi)存資源的內(nèi)存大小之差。
      [0161]由于各處理模塊使用的內(nèi)存資源為全局共享內(nèi)存,也就是說,內(nèi)存資源并不是屬于每個處理模塊的,而是根據(jù)各處理模塊的需求相應地分配給其使用。因此,處理模塊對內(nèi)存進行占用或者進行釋放,體現(xiàn)為其物理內(nèi)存列表的更新。
      [0162]—種可選的實施方式為,處理模塊的物理內(nèi)存列表中標記為可用的內(nèi)存資源,是該處理模塊可以使用的內(nèi)存資源;標記為不可用的內(nèi)存資源,是該處理模塊不可以使用的內(nèi)存資源。相應地,該處理模塊對內(nèi)存資源進行占用,即為該處理模塊將其物理內(nèi)存列表中的該部分內(nèi)存資源標記為可用;該處理模塊對內(nèi)存資源進行釋放,即為該處理模塊將其物理內(nèi)存列表中的該部分內(nèi)存資源標記為不可用。
      [0163]在主控處理模塊判斷出當前各處理模塊之間的內(nèi)存壓力處于均衡狀態(tài)時,則不需要按照上述方法,從內(nèi)存壓力的數(shù)值中最小值對應的處理模塊中搶占內(nèi)存資源。
      [0164]步驟106、向所述最大值對應的處理模塊發(fā)送內(nèi)存分配消息,所述內(nèi)存分配消息中攜帶有待分配的內(nèi)存大小。
      [0165]執(zhí)行步驟106是為了使所述最大值對應的處理模塊在可用內(nèi)存資源中增加了所述待分配的內(nèi)存大小之后,內(nèi)存壓力的數(shù)值相應地減小。
      [0166]執(zhí)行步驟106具有是在從所述最小值對應的處理模塊中搶占到內(nèi)存資源之后進行的。
      [0167]主控處理模塊從內(nèi)存壓力的數(shù)值中最小值對應的處理模塊中搶占到了內(nèi)存資源之后,向內(nèi)存壓力的數(shù)值中最大值對應的處理模塊分配內(nèi)存資源。具體的實現(xiàn)方式為,主控處理模塊向最大值對應的處理模塊發(fā)送內(nèi)存分配消息,并且,在該內(nèi)存分配消息中攜帶有可分配的內(nèi)存大小,也就是說,待向該處理模塊進行分配的內(nèi)存資源的大小。
      [0168]該最大值對應的處理模塊在接收到內(nèi)存分配消息之后,根據(jù)內(nèi)存分配消息中攜帶的待分配的內(nèi)存資源的大小,相應地,將該內(nèi)存大小對應的內(nèi)存資源進行占用,也就是說,在其可用的內(nèi)存資源中增加該部分待分配的內(nèi)存資源的大小。從而,該處理模塊可用的內(nèi)存資源的內(nèi)存大小為,原有可用的內(nèi)存資源和該部分增加的內(nèi)存資源的內(nèi)存大小之和。
      [0169]由于各處理模塊使用的內(nèi)存資源為全局共享內(nèi)存,也就是說,內(nèi)存資源并不是屬于每個處理模塊的,而是根據(jù)各處理模塊的需求相應地分配給其使用。因此,處理模塊對內(nèi)存進行占用或者進行釋放,體現(xiàn)為其物理內(nèi)存列表的更新。
      [0170]一種可選的實施方式為,處理模塊的物理內(nèi)存列表中標記為可用的內(nèi)存資源,是該處理模塊可以使用的內(nèi)存資源;標記為不可用的內(nèi)存資源,是該處理模塊不可以使用的內(nèi)存資源。相應地,該處理模塊對內(nèi)存資源進行占用,即為該處理模塊將其物理內(nèi)存列表中的該部分內(nèi)存資源標記為可用;該處理模塊對內(nèi)存資源進行釋放,即為該處理模塊將其物理內(nèi)存列表中的該部分內(nèi)存資源標記為不可用。
      [0171]主控處理模塊從內(nèi)存壓力的數(shù)值中最小值對應的處理模塊中搶占了內(nèi)存資源之后,該最小值對應的處理模塊中的內(nèi)存壓力將由于可用內(nèi)存資源減少而增大;主控處理模塊向內(nèi)存壓力的數(shù)值中最大值對應的處理模塊分配了內(nèi)存資源之后,該最大值對應的處理模塊中的內(nèi)存壓力將由于可用內(nèi)存資源增多而減小,從而達到對各處理模塊的內(nèi)存壓力進行均衡化的效果。
      [0172]本發(fā)明實施例提供的內(nèi)存分配方法,在接收一個或多個處理模塊分別發(fā)送的內(nèi)存狀態(tài)信息之后,分別確定一個或多個處理模塊各自的內(nèi)存壓力的數(shù)值,并在判斷出一個或多個處理模塊的內(nèi)存壓力的數(shù)值中最大值與最小值之差大于或等于預設閾值時,向最小值對應的處理模塊發(fā)送內(nèi)存搶占消息,在從最小值對應的處理模塊中搶占到內(nèi)存資源之后,向最大值對應的處理模塊發(fā)送內(nèi)存分配消息,使得最大值對應的處理模塊在可用內(nèi)存資源中增加了待分配的內(nèi)存大小之后,內(nèi)存壓力的數(shù)值相應地減小。當多操作系統(tǒng)結(jié)構(gòu)中的各處理模塊的內(nèi)存壓力分布懸殊時,從內(nèi)存壓力較小的處理模塊的內(nèi)存資源中搶占一部分分配給內(nèi)存壓力較大的處理模塊,能夠有效地滿足內(nèi)存壓力較大的處理模塊的高內(nèi)存需求,并且能夠?qū)Ω魈幚砟K之間的內(nèi)存壓力進行均衡,有效地提高整個多操作系統(tǒng)結(jié)構(gòu)中內(nèi)存資源的利用率和系統(tǒng)性能。
      [0173]進一步地,在上述各實施例的基礎上,所述需釋放的內(nèi)存大小具體為:
      [0174]所述一個或多個處理模塊的內(nèi)存壓力的數(shù)值的平均值與所述內(nèi)存壓力的數(shù)值中最小值之差,與所述最小值對應的處理模塊中內(nèi)存資源的總數(shù)的乘積。
      [0175]在主控處理模塊向內(nèi)存壓力的數(shù)值中最小值對應的處理器發(fā)送的內(nèi)存搶占消息中攜帶有需釋放的內(nèi)存大小。該需釋放的內(nèi)存大小具體為,將該處理模塊的內(nèi)存壓力提升到平均水平,所需要釋放的內(nèi)存的大小。
      [0176]主控處理模塊在計算出各處理模塊的內(nèi)存壓力的數(shù)值之后,還需要計算出各處理模塊的內(nèi)存壓力的平均值。利用該平均值減去該處理模塊的內(nèi)存壓力的數(shù)值,所得差值即為該處理模塊的內(nèi)存壓力與平均水平的差距;利用該差值乘以該處理模塊中內(nèi)存資源的總數(shù),所得即為將該處理模塊的內(nèi)存壓力提升到平均水平所需要釋放的內(nèi)存的大小。
      [0177]其中,全局共享內(nèi)存中的內(nèi)存資源是通過物理內(nèi)存塊數(shù)體現(xiàn)的,每個物理內(nèi)存塊數(shù)對應的內(nèi)存大小是相等的。處理模塊對全局共享內(nèi)存中的內(nèi)存資源的占用就是對物理內(nèi)存塊的占用;對全局共享內(nèi)存中的內(nèi)存資源的釋放就是對物理內(nèi)存塊的釋放。
      [0178]根據(jù)需要釋放的內(nèi)存的大小和每個物理內(nèi)存塊的大小,計算需要釋放的物理內(nèi)存塊的數(shù)量,若計算結(jié)果不是整數(shù),則可以采用向上取整的方法,獲得最終需要釋放的物理內(nèi)存塊的數(shù)量。
      [0179]從而,根據(jù)上述計算方法可以得到該最小值對應的處理模塊需要釋放的物理內(nèi)存塊的多少,也就是需要釋放的內(nèi)存的大小。
      [0180]進一步地,所述待分配的內(nèi)存大小具體為:
      [0181]所述內(nèi)存壓力的數(shù)值中最大值與所述一個或多個處理模塊的內(nèi)存壓力的數(shù)值的平均值之差,與所述最大值對應的處理模塊中內(nèi)存資源的總數(shù)的乘積。
      [0182]在主控處理模塊向內(nèi)存壓力的數(shù)值中最大值對應的處理器發(fā)送的內(nèi)存分配消息中攜帶有待分配的內(nèi)存大小。該待分配的內(nèi)存大小具體為,將該處理模塊的內(nèi)存壓力降低到平均水平,所需要增加的內(nèi)存的大小。
      [0183]由于主控處理模塊計算出了各處理模塊的內(nèi)存壓力的數(shù)值的平均值,因此利用該處理模塊的內(nèi)存壓力的數(shù)值減去該平均值,所得差值即為該處理模塊的內(nèi)存壓力與平均水平的差距;利用該差值乘以該處理模塊中內(nèi)存資源的總數(shù),所得即為將該處理模塊的內(nèi)存壓力降低到平均水平所需要增加的內(nèi)存的大小。
      [0184]根據(jù)需要增加的內(nèi)存的大小和每個物理內(nèi)存塊的大小,計算需要增加的物理內(nèi)存塊的數(shù)量,若計算結(jié)果不是整數(shù),則可以采用向上取整的方法,獲得最終需要增加的物理內(nèi)存塊的數(shù)量。
      [0185]從而,根據(jù)上述計算方法可以得到該最小值對應的處理模塊需要增加的物理內(nèi)存塊的多少,也就是需要增加的內(nèi)存的大小。[0186]本發(fā)明實施例提供的內(nèi)存分配方法,根據(jù)該處理模塊的內(nèi)存壓力與內(nèi)存壓力的平均值之間的差距,確定需要從內(nèi)存壓力較小的處理模塊中搶占的內(nèi)存資源的大小,以及需要向內(nèi)存壓力較大的處理模塊分配的內(nèi)存資源的大小,能夠?qū)Ω魈幚砟K之間的內(nèi)存壓力進行均衡,有效地提高整個多操作系統(tǒng)結(jié)構(gòu)中內(nèi)存資源的利用率和系統(tǒng)性能。
      [0187]進一步地,在上述各實施例的基礎上,步驟101具體可以為,分別按照所述一個或多個處理模塊各自的心跳頻率,接收所述一個或多個處理模塊分別發(fā)送的內(nèi)存狀態(tài)信息。
      [0188]上述預設時間范圍可以為各處理模塊的心跳周期。每個處理模塊按照心跳頻率,周期性地向主控處理模塊發(fā)送心跳信息。主控處理模塊接收到心跳信息之后,即可獲知其可與發(fā)送該心跳信息的處理模塊之間進行通信。
      [0189]各處理模塊可以根據(jù)心跳頻率,在向主控處理模塊發(fā)送心跳信息時,將當前結(jié)束的一個心跳周期內(nèi)的內(nèi)存狀態(tài)信息發(fā)送給主控處理模塊。主控處理模塊接收到的各處理模塊的心跳信息,可能存在一定的先后順序。主控處理模塊在接收到每個處理模塊在發(fā)送心跳信息時發(fā)送的內(nèi)存狀態(tài)信息之后,即相應地對處理模塊的內(nèi)存壓力進行計算,當接收到全部各處理模塊的內(nèi)存狀態(tài)信息之后,即利用上述方法判斷是否需要進行內(nèi)存分配。
      [0190]對于主控處理模塊在單次內(nèi)存分配的過程中接收到的心跳信息和內(nèi)存狀態(tài)信息,可以忽略不計,而是在每次內(nèi)存分配結(jié)束之后,開始接收處理模塊發(fā)送的內(nèi)存狀態(tài)信息,直至接收到全部各處理模塊發(fā)送的各內(nèi)存狀態(tài)信息。
      [0191]由于主控處理模塊在每次進行內(nèi)存分配之后,或者判斷出不需要進行內(nèi)存分配之后,都將繼續(xù)收集各處理模塊繼續(xù)上報的內(nèi)存狀態(tài)信息,從而使得主控處理模塊對各處理模塊進行內(nèi)存分配的過程是動態(tài)進行的。一旦判斷出各處理模塊的內(nèi)存壓力存在不均衡的情況時,可以及時地對內(nèi)存資源的分配進行調(diào)整。
      [0192]本發(fā)明實施例提供的內(nèi)存分配方法,根據(jù)處理模塊的心跳頻率接收各處理模塊在心跳周期內(nèi)的內(nèi)存狀態(tài)信息,使得主控處理模塊能夠及時地對各處理模塊的內(nèi)存壓力是否平衡進行判斷,從而動態(tài)地對各處理模塊之間的內(nèi)存壓力進行均衡,有效地提高整個多操作系統(tǒng)結(jié)構(gòu)中內(nèi)存資源的利用率和系統(tǒng)性能。
      [0193]圖3和圖4所示實施例的執(zhí)行主體為處理模塊,該處理模塊是在各處理模塊中內(nèi)存壓力的數(shù)值為最小的處理模塊,是被主控處理模塊搶占內(nèi)存資源的處理模塊。
      [0194]圖3為本發(fā)明提供的內(nèi)存分配方法另一實施例的流程圖,如圖3所示,該方法包括:
      [0195]步驟201、將內(nèi)存狀態(tài)信息發(fā)送給主控處理模塊。
      [0196]執(zhí)行步驟201是為了供所述主控處理模塊根據(jù)所述內(nèi)存狀態(tài)信息,確定內(nèi)存壓力的數(shù)值,并判斷分別確定的一個或多個處理模塊的內(nèi)存壓力的數(shù)值中最大值與最小值之差是否大于或等于預設閾值。
      [0197]步驟202、接收所述主控處理模塊發(fā)送的內(nèi)存搶占消息。
      [0198]其中,所述內(nèi)存搶占消息為所述主控處理模塊在判斷出所述一個或多個處理模塊的內(nèi)存壓力的數(shù)值中最大值與最小值之差大于或等于所述預設閾值之后,向所述最小值對應的處理模塊發(fā)送的,所述內(nèi)存搶占消息中攜帶有需釋放的內(nèi)存大小。
      [0199]步驟203、對所述需釋放的內(nèi)存大小對應的內(nèi)存資源進行釋放。
      [0200]具體的,本發(fā)明實施例中的處理模塊被主控處理模塊搶占內(nèi)存資源的方法可以參見上述步驟101-106所述的實現(xiàn)方式,此處不再贅述。
      [0201]本發(fā)明實施例提供的內(nèi)存分配方法,將內(nèi)存狀態(tài)信息發(fā)送給主控處理模塊,用于供主控處理模塊根據(jù)內(nèi)存狀態(tài)信息,確定內(nèi)存壓力的數(shù)值,并判斷分別確定的一個或多個處理模塊的內(nèi)存壓力的數(shù)值中最大值與最小值之差是否大于或等于預設閾值,在主控處理模塊判斷出一個或多個處理模塊的內(nèi)存壓力的數(shù)值中最大值與最小值之差大于或等于預設閾值之后,接收主控處理模塊發(fā)送的內(nèi)存搶占消息,并根據(jù)內(nèi)存搶占消息中攜帶有需釋放的內(nèi)存大小,對需釋放的內(nèi)存大小對應的內(nèi)存資源進行釋放。當多操作系統(tǒng)結(jié)構(gòu)中的各處理模塊的內(nèi)存壓力分布懸殊時,從內(nèi)存壓力較小的處理模塊的內(nèi)存資源中搶占一部分分配給內(nèi)存壓力較大的處理模塊,能夠有效地滿足內(nèi)存壓力較大的處理模塊的高內(nèi)存需求,并且能夠?qū)Ω魈幚砟K之間的內(nèi)存壓力進行均衡,有效地提高整個多操作系統(tǒng)結(jié)構(gòu)中內(nèi)存資源的利用率和系統(tǒng)性能。
      [0202]圖4為本發(fā)明提供的內(nèi)存分配方法又一實施例的流程圖,如圖4所示,在上述實施例的基礎上,在執(zhí)行步驟202之后,執(zhí)行步驟203之前,該方法還包括:
      [0203]步驟204、判斷所述需釋放的內(nèi)存大小是否大于或等于空閑內(nèi)存的大小。若是,則執(zhí)行步驟205 ;若否,則執(zhí)行步驟206。
      [0204]步驟205、采用模擬換頁機制,從非空閑內(nèi)存中搶占可被交換的內(nèi)存。執(zhí)行完步驟205之后,繼續(xù)執(zhí)行步驟207。其中,搶占的所述可被交換的內(nèi)存的大小等于所述需釋放的內(nèi)存大小與所述空閑內(nèi)存的大小之差。
      [0205]步驟206、對所述需釋放的內(nèi)存大小對應的內(nèi)存資源進行釋放。
      [0206]步驟207、對所述空閑內(nèi)存的大小和搶占的所述可被交換的內(nèi)存的大小對應的內(nèi)存資源進行釋放。
      [0207]其中,步驟206和步驟207分別為步驟203在本實施例中的具體實現(xiàn)方式。
      [0208]處理模塊接收到主控處理模塊發(fā)送的內(nèi)存搶占信息之后,還可以進一步地判斷內(nèi)存搶占信息中的需釋放的內(nèi)存大小是否大于或等于其上空閑內(nèi)存的大小。
      [0209]若需釋放的內(nèi)存大小小于其上空閑內(nèi)存的大小,則處理模塊直接將需釋放的內(nèi)存大小對應的內(nèi)存資源進行釋放即可。
      [0210]若需釋放的內(nèi)存大小大于或等于其上空閑內(nèi)存的大小,則計算出需釋放的內(nèi)存大小與空閑內(nèi)存的大小的差值,從非空閑的內(nèi)存資源中對該差值對應的內(nèi)存大小進行搶占。
      [0211]處理模塊中除了操作系統(tǒng)內(nèi)核占用的內(nèi)存以外,其他負載,或稱程序,所占用的內(nèi)存資源是可以被交換出來的。具體的實現(xiàn)方式為,利用模擬換頁機制,將上述差值對應的內(nèi)存大小中的負載從全局共享內(nèi)存中交換到全局共享硬盤上,從而將該部分內(nèi)存資源空閑出來,使得該部分內(nèi)存資源被搶占。
      [0212]由于處理模塊中可以利用物理內(nèi)存列表的方式表征其可用的內(nèi)存資源。從而,當內(nèi)存中的負載被交換到硬盤中之后,可以在物理內(nèi)存列表中進行相應的標記,以表征該部分負載被交換到硬盤上的相應存儲空間中。
      [0213]處理模塊將原有的空閑內(nèi)存和該部分被搶占的內(nèi)存資源進行釋放。
      [0214]本發(fā)明實施例提供的內(nèi)存分配方法,在判斷出需釋放的內(nèi)存大小大于或等于空閑內(nèi)存的大小之后,采用模擬換頁機制,從非空閑內(nèi)存中搶占可被交換的內(nèi)存,所搶占的可被交換的內(nèi)存的大小等于需釋放的內(nèi)存大小與空閑內(nèi)存的大小之差,從而對空閑內(nèi)存的大小和搶占的可被交換的內(nèi)存的大小對應的內(nèi)存資源進行釋放,當多操作系統(tǒng)結(jié)構(gòu)中的各處理模塊的內(nèi)存壓力分布懸殊時,不僅能夠從內(nèi)存壓力較小的處理模塊的內(nèi)存資源中搶占到空閑的內(nèi)存,還能夠從非空閑的內(nèi)存中搶占可被交換的部分內(nèi)存,從而能夠盡量保證有足夠的內(nèi)存資源可以分配給內(nèi)存壓力較大的處理模塊,能夠有效地滿足內(nèi)存壓力較大的處理模塊的高內(nèi)存需求,并且能夠?qū)Ω魈幚砟K之間的內(nèi)存壓力進行均衡,有效地提高整個多操作系統(tǒng)結(jié)構(gòu)中內(nèi)存資源的利用率和系統(tǒng)性能。
      [0215]進一步地,在上述實施例的基礎上,所述內(nèi)存狀態(tài)信息可以包括:
      [0216]在預設時間范圍內(nèi)發(fā)生缺頁異常的物理頁面的數(shù)量與所述預設時間范圍內(nèi)的物理頁面總數(shù)的比值;或者
      [0217]最小頁面駐留時間,所述頁面駐留時間為物理頁面換入內(nèi)存的時間點與換出內(nèi)存的時間點的間隔時間,或者物理頁面換入內(nèi)存的時間點與當前時間點的間隔時間,所述最小頁面駐留時間為預設時間范圍內(nèi)一個或多個所述頁面駐留時間中數(shù)值最小的頁面駐留時間。
      [0218]具體的,本發(fā)明實施例中處理模塊向主控處理模塊發(fā)送的內(nèi)存狀態(tài)信息的具體形式可以參見上述步驟101-102中所述的具體內(nèi)容,此處不再贅述。
      [0219]進一步地,在上述各實施例的基礎上,步驟201可以具體為,按照預設的心跳頻率,將心跳周期內(nèi)的內(nèi)存狀態(tài)信息發(fā)送給所述主控處理模塊。
      [0220]每個處理模塊可以按照心跳頻率,周期性地向主控處理模塊發(fā)送心跳信息。主控處理模塊接收到心跳信息之后,即可獲知其可與發(fā)送該心跳信息的處理模塊之間進行通 ?目。
      [0221]各處理模塊可以根據(jù)心跳頻率,在向主控處理模塊發(fā)送心跳信息時,將當前結(jié)束的一個心跳周期內(nèi)的內(nèi)存狀態(tài)信息發(fā)送給主控處理模塊。主控處理模塊接收到的各處理模塊的心跳信息,可能存在一定的先后順序。主控處理模塊在接收到每個處理模塊在發(fā)送心跳信息時發(fā)送的內(nèi)存狀態(tài)信息之后,即相應地對處理模塊的內(nèi)存壓力進行計算,當接收到全部各處理模塊的內(nèi)存狀態(tài)信息之后,即利用上述方法判斷是否需要進行內(nèi)存分配。
      [0222]對于主控處理模塊在單次內(nèi)存分配的過程中接收到的心跳信息和內(nèi)存狀態(tài)信息,可以忽略不計,而是在每次內(nèi)存分配接收之后,開始接收處理模塊發(fā)送的內(nèi)存狀態(tài)信息,直至接收到全部各處理模塊發(fā)送的各內(nèi)存狀態(tài)信息。
      [0223]由于主控處理模塊在每次進行內(nèi)存分配之后,或者判斷出不需要進行內(nèi)存分配之后,都將繼續(xù)收集各處理模塊繼續(xù)上報的內(nèi)存狀態(tài)信息,從而使得主控處理模塊對各處理模塊進行內(nèi)存分配的過程是動態(tài)進行的。一旦判斷出各處理模塊的內(nèi)存壓力存在不均衡的情況時,可以及時地對內(nèi)存資源的分配進行調(diào)整。
      [0224]本發(fā)明實施例提供的內(nèi)存分配方法,按照心跳頻率向主控處理模塊發(fā)送心跳周期內(nèi)的內(nèi)存狀態(tài)信息,使得主控處理模塊能夠及時地對各處理模塊的內(nèi)存壓力是否平衡進行判斷,從而動態(tài)地對各處理模塊之間的內(nèi)存壓力進行均衡,有效地提高整個多操作系統(tǒng)結(jié)構(gòu)中內(nèi)存資源的利用率和系統(tǒng)性能。
      [0225]進一步地,在上述各實施例的基礎上,在執(zhí)行完步驟201之后,一種可選的實施方式為,接收所述主控處理模塊發(fā)送的內(nèi)存分配消息,所述內(nèi)存分配消息為所述主控處理模塊在從所述最小值對應的處理模塊中搶占到內(nèi)存資源之后,向所述最大值對應的處理模塊發(fā)送的,所述內(nèi)存分配消息中攜帶有待分配的內(nèi)存大?。辉诳捎脙?nèi)存資源中增加所述待分配的內(nèi)存大小。
      [0226]由于本發(fā)明實施例中的內(nèi)存分配方法是動態(tài)進行的,因此可能在某個心跳周期內(nèi)內(nèi)存壓力的數(shù)值為最小值的處理模塊,在當前心跳周期內(nèi)成為內(nèi)存壓力的數(shù)值為最大值的處理模塊,因此在某個心跳周期內(nèi)被搶占內(nèi)存資源的處理模塊,也有可能在當前的心跳周期內(nèi)成為被主控處理模塊分配內(nèi)存資源的處理模塊。
      [0227]具體的,本發(fā)明實施例中的處理模塊被主控處理模塊分配內(nèi)存資源的方法可以參見上述步驟101-106所述的實現(xiàn)方式,此處不再贅述。
      [0228]本發(fā)明實施例提供的內(nèi)存分配方法,接收主控處理模塊在從最小值對應的處理模塊中搶占到內(nèi)存資源之后,發(fā)送的內(nèi)存分配消息,該內(nèi)存分配消息中攜帶有待分配的內(nèi)存大小,從而在可用內(nèi)存資源中增加待分配的內(nèi)存大小。當多操作系統(tǒng)結(jié)構(gòu)中的各處理模塊的內(nèi)存壓力分布懸殊時,從內(nèi)存壓力較小的處理模塊的內(nèi)存資源中搶占一部分分配給內(nèi)存壓力較大的處理模塊,能夠有效地滿足內(nèi)存壓力較大的處理模塊的高內(nèi)存需求,并且能夠?qū)Ω魈幚砟K之間的內(nèi)存壓力進行均衡,有效地提高整個多操作系統(tǒng)結(jié)構(gòu)中內(nèi)存資源的利用率和系統(tǒng)性能。
      [0229]圖5為本發(fā)明提供的內(nèi)存分配方法又一實施例的流程圖,如圖5所示,該方法包括:
      [0230]步驟301、將內(nèi)存狀態(tài)信息發(fā)送給主控處理模塊。
      [0231]執(zhí)行步驟301是為了供所述主控處理模塊根據(jù)所述內(nèi)存狀態(tài)信息,確定內(nèi)存壓力的數(shù)值,并判斷分別確定的一個或多個處理模塊的內(nèi)存壓力的數(shù)值中最大值與最小值之差是否大于或等于預設閾值。
      [0232]步驟302、接收所述主控處理模塊發(fā)送的內(nèi)存分配消息。
      [0233]其中,所述內(nèi)存分配消息為所述主控處理模塊在從所述最小值對應的處理模塊中搶占到內(nèi)存資源之后,向所述最大值對應的處理模塊發(fā)送的,所述內(nèi)存分配消息中攜帶有待分配的內(nèi)存大小。
      [0234]步驟303、在可用內(nèi)存資源中增加所述待分配的內(nèi)存大小。
      [0235]具體的,本發(fā)明實施例中的處理模塊被主控處理模塊搶占內(nèi)存資源的方法可以參見上述步驟101-106所述的實現(xiàn)方式,此處不再贅述。
      [0236]本發(fā)明實施例提供的內(nèi)存分配方法,將內(nèi)存狀態(tài)信息發(fā)送給主控處理模塊,用于供主控處理模塊根據(jù)內(nèi)存狀態(tài)信息,確定內(nèi)存壓力的數(shù)值,并判斷分別確定的一個或多個處理模塊的內(nèi)存壓力的數(shù)值中最大值與最小值之差是否大于或等于預設閾值,在主控處理模塊判斷出一個或多個處理模塊的內(nèi)存壓力的數(shù)值中最大值與最小值之差大于或等于預設閾值之后,接收主控處理模塊發(fā)送的內(nèi)存搶占消息,并根據(jù)內(nèi)存搶占消息中攜帶有需釋放的內(nèi)存大小,對需釋放的內(nèi)存大小對應的內(nèi)存資源進行釋放。當多操作系統(tǒng)結(jié)構(gòu)中的各處理模塊的內(nèi)存壓力分布懸殊時,從內(nèi)存壓力較小的處理模塊的內(nèi)存資源中搶占一部分分配給內(nèi)存壓力較大的處理模塊,能夠有效地滿足內(nèi)存壓力較大的處理模塊的高內(nèi)存需求,并且能夠?qū)Ω魈幚砟K之間的內(nèi)存壓力進行均衡,有效地提高整個多操作系統(tǒng)結(jié)構(gòu)中內(nèi)存資源的利用率和系統(tǒng)性能。
      [0237]進一步地,在上述實施例的基礎上,所述內(nèi)存狀態(tài)信息包括:[0238]在預設時間范圍內(nèi)發(fā)生缺頁異常的物理頁面的數(shù)量與所述預設時間范圍內(nèi)的物理頁面總數(shù)的比值;或者
      [0239]最小頁面駐留時間,所述頁面駐留時間為物理頁面換入內(nèi)存的時間點與換出內(nèi)存的時間點的間隔時間,或者物理頁面換入內(nèi)存的時間點與當前時間點的間隔時間,所述最小頁面駐留時間為預設時間范圍內(nèi)一個或多個所述頁面駐留時間中數(shù)值最小的頁面駐留時間。
      [0240]具體的,本發(fā)明實施例中處理模塊向主控處理模塊發(fā)送的內(nèi)存狀態(tài)信息的具體形式可以參見上述步驟101-102中所述的具體內(nèi)容,此處不再贅述。
      [0241]進一步地,在上述各實施例的基礎上,步驟301可以具體為,按照預設的心跳頻率,將心跳周期內(nèi)的內(nèi)存狀態(tài)信息發(fā)送給所述主控處理模塊。
      [0242]每個處理模塊可以按照心跳頻率,周期性地向主控處理模塊發(fā)送心跳信息。主控處理模塊接收到心跳信息之后,即可獲知其可與發(fā)送該心跳信息的處理模塊之間進行通信。
      [0243]各處理模塊可以根據(jù)心跳頻率,在向主控處理模塊發(fā)送心跳信息時,將當前結(jié)束的一個心跳周期內(nèi)的內(nèi)存狀態(tài)信息發(fā)送給主控處理模塊。主控處理模塊接收到的各處理模塊的心跳信息,可能存在一定的先后順序。主控處理模塊在接收到每個處理模塊在發(fā)送心跳信息時發(fā)送的內(nèi)存狀態(tài)信息之后,即相應地對處理模塊的內(nèi)存壓力進行計算,當接收到全部各處理模塊的內(nèi)存狀態(tài)信息之后,即利用上述方法判斷是否需要進行內(nèi)存分配。
      [0244]對于主控處理模塊在單次內(nèi)存分配的過程中接收到的心跳信息和內(nèi)存狀態(tài)信息,可以忽略不計,而是在每次內(nèi)存分配接收之后,開始接收處理模塊發(fā)送的內(nèi)存狀態(tài)信息,直至接收到全部各處理模塊發(fā)送的各內(nèi)存狀態(tài)信息。
      [0245]由于主控處理模塊在每次進行內(nèi)存分配之后,或者判斷出不需要進行內(nèi)存分配之后,都將繼續(xù)收集各處理模塊繼續(xù)上報的內(nèi)存狀態(tài)信息,從而使得主控處理模塊對各處理模塊進行內(nèi)存分配的過程是動態(tài)進行的。一旦判斷出各處理模塊的內(nèi)存壓力存在不均衡的情況時,可以及時地對內(nèi)存資源的分配進行調(diào)整。
      [0246]本發(fā)明實施例提供的內(nèi)存分配方法,按照心跳頻率向主控處理模塊發(fā)送心跳周期內(nèi)的內(nèi)存狀態(tài)信息,使得主控處理模塊能夠及時地對各處理模塊的內(nèi)存壓力是否平衡進行判斷,從而動態(tài)地對各處理模塊之間的內(nèi)存壓力進行均衡,有效地提高整個多操作系統(tǒng)結(jié)構(gòu)中內(nèi)存資源的利用率和系統(tǒng)性能。
      [0247]圖6a為本發(fā)明提供的多操作系統(tǒng)結(jié)構(gòu)的硬件架構(gòu)圖,圖6b為本發(fā)明提供的多操作系統(tǒng)結(jié)構(gòu)的軟件架構(gòu)圖。
      [0248]在圖6a所示的多操作系統(tǒng)結(jié)構(gòu)的硬件架構(gòu)中,共享內(nèi)存陣列(Memory Array)由一個或多個內(nèi)存陣列組成,多個CPU (CPU_1、CPU_2...CPU_N)或者內(nèi)核(內(nèi)核1、內(nèi)核2...內(nèi)核N)共享該一個或多個內(nèi)存陣列,每個CPU或內(nèi)核上都運行著獨立的操作系統(tǒng)(0S_1、0S_2...0S_N),0S_1...0S_N是多操作系統(tǒng)結(jié)構(gòu)中的各個子系統(tǒng)。其中,0S_1或稱為操作系統(tǒng)I作為管理操作系統(tǒng),其上運行著全局管理服務GMS,負責協(xié)調(diào)各個CPU或內(nèi)核上子系統(tǒng)的運行。
      [0249]在圖6b所示的多操作系統(tǒng)結(jié)構(gòu)的軟件架構(gòu)中,全局共享內(nèi)存也可以稱為內(nèi)存池(Memory Pool),內(nèi)存池可以由一個或者多個內(nèi)存陣列通過高速外設互聯(lián)標準(PICe)接口或者其他接口連接所組成;全局內(nèi)存管理服務(Global Memory Management Service,GMMS)是運行在管理操作系統(tǒng)上的一個內(nèi)存管理服務,屬于全局管理服務中的部分功能,用于協(xié)調(diào)各個子系統(tǒng)的內(nèi)存使用情況。各個子系統(tǒng)內(nèi)部提供了多種功能,包括本地內(nèi)存管理(Local Memory Management, LMM)、心跳機制(Heart Beat, HB)和內(nèi)存使用狀況收集功能(Memory Status Collectors,MSC)等。其中,實現(xiàn)LMM功能的模塊是各子系統(tǒng)內(nèi)部的內(nèi)存管理模塊;實現(xiàn)HB功能的模塊是各子系統(tǒng)內(nèi)部用于向管理操作系統(tǒng)發(fā)送心跳信息及其他信息的模塊,利用心跳信息證明子系統(tǒng)尚在運行;實現(xiàn)MSC功能的模塊是各子系統(tǒng)對其內(nèi)部的內(nèi)存使用情況進行統(tǒng)計的模塊。
      [0250]一種可選的內(nèi)存分配方法的具體實現(xiàn)方式如下。
      [0251]定義一個內(nèi)存壓力評價指標用來量化各個子系統(tǒng)的內(nèi)存壓力大小。在每個子系統(tǒng)的內(nèi)存狀態(tài)收集MSC模塊用于收集該子系統(tǒng)的內(nèi)存狀態(tài)信息,并將對應的狀態(tài)參數(shù)發(fā)送給全局內(nèi)存管理服務。其中,各子系統(tǒng)發(fā)送給全局內(nèi)存管理服務的狀態(tài)參數(shù)可以為PageFault數(shù)或者頁面駐留時間。
      [0252]一種可行的實施方式為,各子系統(tǒng)的MSC模塊中提供了一個變量用來統(tǒng)計子系統(tǒng)每次心跳間隔內(nèi)的PageFault數(shù)。該變量在每次執(zhí)行PageFault服務程序時自動加1,并在每次心跳之后自動清零。在每次心跳時,子系統(tǒng)將自身的PageFault數(shù)與物理頁面數(shù)及其比值C發(fā)送給全局內(nèi)存管理服務。
      [0253]全局內(nèi)存管理服務在得到全部子系統(tǒng)的狀態(tài)參數(shù)之后,將各子系統(tǒng)的狀態(tài)參數(shù)轉(zhuǎn)換為各自的內(nèi)存壓力指標。具體的,全局內(nèi)存管理服務收到該比值后,將當前時間戳減去該子系統(tǒng)的上一次內(nèi)存分配時間戳,作為為該子系統(tǒng)的內(nèi)存分配間隔,并計算該子系統(tǒng)的內(nèi)存分配時間間隔與各子系統(tǒng)的平均內(nèi)存分配時間間隔的比值At。全局內(nèi)存管理服務將這兩個因素組合成子系統(tǒng)的內(nèi)存壓力P,用于衡量該子系統(tǒng)的內(nèi)存壓力,其中,P= α ^C+β
      `[0254]另一種可行的實施方式為,在每個子系統(tǒng)的MSC模塊中,提供一個變量用于統(tǒng)計一段時間內(nèi)頁面在內(nèi)存中駐留的最短時間。在每次PageFault服務程序中,系統(tǒng)計算當前換出頁面的內(nèi)存駐留時間,如果該駐留時間小于當前最小頁面駐留時間則更新該變量。在心跳信息中,子系統(tǒng)將系統(tǒng)的最小頁面駐留時間發(fā)送給全局內(nèi)存管理服務。同時,在心跳信息發(fā)送后,子系統(tǒng)將該變量清零。頁面駐留時間定義為某個頁面的內(nèi)容在內(nèi)存中的停留時間。某個即將換出內(nèi)存頁面的內(nèi)存駐留時間的計算方式為在PageFault服務程序中用當前時間戳減去該頁面的換入時間。最小頁面駐留時間為一段時間內(nèi)頁面駐留時間的最小值。
      [0255]全局內(nèi)存管理服務將一段時間內(nèi),最小頁面駐留時間與各子系統(tǒng)的平均頁面駐留時間的比值,作為衡量某個子系統(tǒng)的內(nèi)存壓力。
      [0256]相應地,全局內(nèi)存管理服務得到了所有子系統(tǒng)的內(nèi)存壓力指標,進而將根據(jù)這些壓力指標來判斷所有子系統(tǒng)的壓力是否均衡,即判斷最大壓力與最小壓力之差是否達到預設閾值。如果達到該預設閾值,則說明全局內(nèi)存壓力已經(jīng)不均衡,需要啟動內(nèi)存壓力均衡機制;如果未達到該預設閾值,則說明當前全局內(nèi)存壓力比較均衡,不需要啟動內(nèi)存壓力均衡機制。該預設閾值可以通過人工的方式設置。
      [0257]在判斷出需要啟動內(nèi)存壓力均衡機制之后,全局內(nèi)存管理服務將采用從內(nèi)存壓力最低的系統(tǒng)中搶占一部分內(nèi)存分配給內(nèi)存壓力較高的系統(tǒng)的方式來均衡全局內(nèi)存壓力。將內(nèi)存壓力最大的系統(tǒng)作為內(nèi)存分配子系統(tǒng),內(nèi)存壓力最小的系統(tǒng)作為被搶占子系統(tǒng)。
      [0258]全局內(nèi)存管理服務在確定了被搶占子系統(tǒng)和內(nèi)存分配子系統(tǒng)之后,將計算搶占內(nèi)存的大小。將搶占內(nèi)存大小定義為,將被搶占子系統(tǒng)內(nèi)存壓力增加到所有子系統(tǒng)內(nèi)存壓力平均值做需要放棄的內(nèi)存的最小塊數(shù),具體的計算方式為,(平均內(nèi)存壓力-被搶占子系統(tǒng)內(nèi)存壓力)*被搶占子系統(tǒng)的物理內(nèi)存總塊數(shù)。
      [0259]全局內(nèi)存管理服務將搶占內(nèi)存大小封裝在搶占消息中發(fā)送給被搶占子系統(tǒng)。被搶占子系統(tǒng)收到該消息后,首先確定自身內(nèi)存被搶占的內(nèi)存資源,把這些內(nèi)存資源對應的存儲空間的內(nèi)容清空,從其物理內(nèi)存列表中將該部分內(nèi)存向全局內(nèi)存管理服務進行釋放。全局內(nèi)存管理服務在收到釋放內(nèi)存信息之后,將啟動向內(nèi)存分配子系統(tǒng)分配內(nèi)存機制。內(nèi)存管理服務將計算所需分配內(nèi)存的大小,將分配內(nèi)存的大小定義為,使內(nèi)存分配子系統(tǒng)的內(nèi)存壓力降低到平均內(nèi)存壓力所需要獲取物理內(nèi)存的最小塊數(shù),具體的計算方式為,(內(nèi)存分配子系統(tǒng)的內(nèi)存壓力-平均內(nèi)存壓力)*被搶占子系統(tǒng)的物理內(nèi)存總塊數(shù)。
      [0260]在計算出內(nèi)存分配塊數(shù)之后,全局內(nèi)存管理服務可以判斷從被搶占子系統(tǒng)搶占的內(nèi)存塊數(shù),是否多于需要向內(nèi)存分配子系統(tǒng)分配的內(nèi)存塊數(shù)。如果獲得的內(nèi)存塊數(shù)多于需要分配的內(nèi)存塊數(shù),則向內(nèi)存分配子系統(tǒng)完全分配其所需要的內(nèi)存塊數(shù),剩余的內(nèi)存則作為空閑內(nèi)存;如果獲得的內(nèi)存塊數(shù)小于需要分配的內(nèi)存塊數(shù),則將已獲得的內(nèi)存全部分配給內(nèi)存分配子系統(tǒng)。
      [0261]全局內(nèi)存管理服務將分配內(nèi)存的大小封裝在內(nèi)存分配消息中,發(fā)送給內(nèi)存分配子系統(tǒng)。內(nèi)存分配子系統(tǒng)收到該消息后,將對分配的內(nèi)存進行登記,并更新機器狀態(tài)。最終全局內(nèi)存管理服務更新內(nèi)存分配信息,完成內(nèi)存壓力均衡操作。
      [0262]全局內(nèi)存管理服務向內(nèi)存分配子系統(tǒng)分配內(nèi)存的具體方式為,全局內(nèi)存管理服務在確定了需要向內(nèi)存分配子系統(tǒng)分配的內(nèi)存塊數(shù)之后,將這些內(nèi)存標記為不可用內(nèi)存。之后,全局內(nèi)存管理服務向內(nèi)存分配子系統(tǒng)發(fā)送內(nèi)存分配消息。在該消息中,全局內(nèi)存管理服務將所分配的內(nèi)存塊的信息一并發(fā)送給內(nèi)存分配子系統(tǒng)。內(nèi)存分配子系統(tǒng)收到該內(nèi)存分配消息之后,將內(nèi)存分配消息中指示的內(nèi)存加入物理內(nèi)存列表中,將這些內(nèi)存標記為不可用,并向全局內(nèi)存管理服務發(fā)送確認消息。全局內(nèi)存管理服務接收到該確認消息之后,將這部分內(nèi)存由不可用狀態(tài)變更為已分配狀態(tài),并向內(nèi)存分配子系統(tǒng)發(fā)送分配確認信息。內(nèi)存分配子系統(tǒng)收到該分配確認信息之后,將原先不可用的內(nèi)存標記為可用狀態(tài),完成整個內(nèi)存分配過程。
      [0263]在實際通信過程中,可能出現(xiàn)以下異常情況,例如,全局內(nèi)存管理服務未收到來自內(nèi)存分配子系統(tǒng)的確認消息,和/或內(nèi)存分配子系統(tǒng)未收到來自于全局內(nèi)存管理服務的分配確認消息。
      [0264]若全局內(nèi)存管理服務長時間未收到來自內(nèi)存分配子系統(tǒng)的確認消息,則向其發(fā)送消息詢問,如果仍未收到其確認消息,則將原來標記為不可用內(nèi)存標記為空閑內(nèi)存,本次內(nèi)存分配失敗。
      [0265]若內(nèi)存分配子系統(tǒng)長時間未收到來自于全局內(nèi)存管理服務的分配確認消息,則向其發(fā)消息詢問,如果仍未收到其分配確認消息,則將原來標記為不可用的內(nèi)存從物理內(nèi)存列表中刪除,本次內(nèi)存分配失敗。
      [0266]全局內(nèi)存管理服務從被搶占子系統(tǒng)中搶占內(nèi)存的具體方式為,被搶占子系統(tǒng)接收到來自于全局內(nèi)存管理服務的內(nèi)存搶占消息后,被搶占子系統(tǒng)從內(nèi)存搶占消息中獲取需要搶占內(nèi)存的塊數(shù),判斷自身的物理內(nèi)存列表中,空閑內(nèi)存的塊數(shù)是否滿足需要釋放的內(nèi)存塊數(shù)。當空閑內(nèi)存滿足釋放需求時,被搶占子系統(tǒng)從空閑內(nèi)存中取出需要釋放內(nèi)存,并將其標記為不可用內(nèi)存;如果空閑內(nèi)存不滿足釋放需求,被搶占子系統(tǒng)將所有空閑內(nèi)存標記為不可用,并從其他物理內(nèi)存中隨機取出剩余所需內(nèi)存,作為候選釋放內(nèi)存。其中,其他物理內(nèi)存指的是除了運行子系統(tǒng)的內(nèi)核的內(nèi)存資源以外的其他內(nèi)存資源。被搶占子系統(tǒng)采用模擬換頁機制,將候選釋放內(nèi)存的內(nèi)容交換到全局共享磁盤上,并將這些內(nèi)存對應的頁表項標示為其內(nèi)容已交換到磁盤上進行存儲,進而將這部分交換出來的內(nèi)存在子系統(tǒng)的物理內(nèi)存列表中標志為不可用。
      [0267]被搶占子系統(tǒng)在將空閑內(nèi)存和交換出來的內(nèi)存對應的內(nèi)存塊中的內(nèi)容清空之后,將所有準備釋放的內(nèi)存信息發(fā)送給全局內(nèi)存管理服務,準備釋放。全局內(nèi)存管理服務在接收到來自于被搶占子系統(tǒng)的內(nèi)存釋放消息后,將對應的釋放內(nèi)存標記為不可用內(nèi)存,并向被搶占子系統(tǒng)發(fā)送釋放確認消息。被搶占子系統(tǒng)收到釋放確認消息后,將所標記不可用內(nèi)存從物理內(nèi)存列表中刪除,并向全局內(nèi)存管理服務發(fā)送確認消息。全局內(nèi)存管理服務收到該確認消息后,將標記為不可用的內(nèi)存標記為可分配內(nèi)存。
      [0268]在實際通信過程中,可能出現(xiàn)以下異常情況,例如,被搶占子系統(tǒng)未收到來自全局內(nèi)存管理服務的釋放確認消息,和/或全局內(nèi)存管理服務未收到來自于被搶占子系統(tǒng)的確認消息。
      [0269]當被搶占子系統(tǒng)長時間未接收到來自全局內(nèi)存管理服務的釋放確認消息時,則向其發(fā)消息詢問,如果仍未收到回復,則將不可用內(nèi)存標記為可用,此次內(nèi)存釋放失敗。
      [0270]當全局內(nèi)存管理服務長時間未接收到來自被搶占子系統(tǒng)的確認消息,則將標記為不可用內(nèi)存回滾標記為已分配內(nèi)存,此時內(nèi)存釋放失敗。
      [0271]本發(fā)明實施例提供的內(nèi)存分配方法,使用全局內(nèi)存管理服務根據(jù)各子系統(tǒng)的實際內(nèi)存壓力動態(tài)地對各子系統(tǒng)的內(nèi)存進行調(diào)整,能夠有針對性的滿足內(nèi)存需求較大的子系統(tǒng)的內(nèi)存需求,每個子系統(tǒng)只需要在心跳過程中將其內(nèi)部統(tǒng)計的相關信息發(fā)送給全局內(nèi)存管理服務,并未增加過多的通信開銷,由全局內(nèi)存管理服務主動進行內(nèi)存均衡的方式能夠減少各子系統(tǒng)的運行壓力,不僅能夠提高各子系統(tǒng)的整體性能,還能提高整個多操作系統(tǒng)結(jié)構(gòu)的性能。
      [0272]此外,上述各實施例中所述的內(nèi)存分配方法還可以應用到虛擬機領域。例如,在一個宿主系統(tǒng)中有多個虛擬機(client system)在執(zhí)行,宿主系統(tǒng)為每個虛擬機都分配內(nèi)存供其執(zhí)行。我們也可以在宿主機中啟動一個全局內(nèi)存管理服務用于動態(tài)管理各個虛擬機的內(nèi)存使用情況。內(nèi)存管理服務能夠收集各個客戶操作系統(tǒng)的內(nèi)存壓力大小,并且在內(nèi)存壓力相差懸殊時能夠從內(nèi)存壓力小的client OS中搶奪一部分內(nèi)存給內(nèi)存壓力大的clientOS。
      [0273]圖7為本發(fā)明提供的主控處理模塊一實施例的結(jié)構(gòu)示意圖,如圖7所示,該主控處理模塊包括,接收單元11、處理單元12、判斷單元13和發(fā)送單元14。
      [0274]其中,接收單元11,用于接收一個或多個處理模塊分別發(fā)送的內(nèi)存狀態(tài)信息;處理單元12,用于根據(jù)所述內(nèi)存狀態(tài)信息,分別確定所述一個或多個處理模塊各自的內(nèi)存壓力的數(shù)值;判斷單元13,用于判斷所述一個或多個處理模塊的內(nèi)存壓力的數(shù)值中最大值與最小值之差是否大于或等于預設閾值;發(fā)送單元14,用于在判斷出所述一個或多個處理模塊的內(nèi)存壓力的數(shù)值中最大值與最小值之差大于或等于預設閾值時,向所述最小值對應的處理模塊發(fā)送內(nèi)存搶占消息,所述內(nèi)存搶占消息中攜帶有需釋放的內(nèi)存大小,以供所述最小值對應的處理模塊對所述需釋放的內(nèi)存大小對應的內(nèi)存資源進行釋放;
      [0275]所述發(fā)送單元14還用于,在從所述最小值對應的處理模塊中搶占到內(nèi)存資源之后,向所述最大值對應的處理模塊發(fā)送內(nèi)存分配消息,所述內(nèi)存分配消息中攜帶有待分配的內(nèi)存大小,以使所述最大值對應的處理模塊在可用內(nèi)存資源中增加了所述待分配的內(nèi)存大小之后,內(nèi)存壓力的數(shù)值相應地減小。
      [0276]進一步地,在上述實施例的基礎上,所述接收單元11接收到的單個處理模塊的所述內(nèi)存狀態(tài)信息包括:所述單個處理模塊在預設時間范圍內(nèi)發(fā)生缺頁異常的物理頁面的數(shù)量與所述預設時間范圍內(nèi)的物理頁面總數(shù)的比值;
      [0277]相應地,所述處理單元12具體用于,根據(jù)所述一個或多個處理模塊各自的內(nèi)存分配時間間隔,確定內(nèi)存分配時間間隔的平均值,所述內(nèi)存分配時間間隔為所述單個處理模塊最近一次物理頁面總數(shù)發(fā)生變更的時間點與當前時間點之間的時間間隔;所述單個處理模塊的內(nèi)存壓力P為,P= a *C+ β * Λ t ;其中,所述C為所述單個處理模塊在預設時間范圍內(nèi)發(fā)生缺頁異常的物理頁面的數(shù)量與所述預設時間范圍內(nèi)的物理頁面總數(shù)的比值,所述At為所述單個處理模塊的內(nèi)存分配時間間隔與所述內(nèi)存分配時間間隔的平均值之間的比值,所述α和所述β為預設系數(shù)。
      [0278]進一步地,在上述各實施例的基礎上,所述接收單元11接收到的單個處理模塊的所述內(nèi)存狀態(tài)信息包括最小頁面駐留時間,所述頁面駐留時間為物理頁面換入內(nèi)存的時間點與換出內(nèi)存的時間點的間隔時間,或者物理頁面換入內(nèi)存的時間點與當前時間點的間隔時間,所述最小頁面駐留時間為預設時間范圍內(nèi)一個或多個頁面駐留時間中數(shù)值最小的頁面駐留時間;
      [0279]相應地,所述處理單元12具體用于,根據(jù)所述一個或多個處理模塊各自的最小頁面駐留時間,確定最小頁面駐留時間的平均值;所述單個處理模塊的內(nèi)存壓力P為,所述單個處理模塊的最小頁面駐留時間與所述最小頁面駐留時間的平均值之間的比值。
      [0280]本發(fā)明實施例提供的主控處理模塊,在接收一個或多個處理模塊分別發(fā)送的內(nèi)存狀態(tài)信息之后,分別確定一個或多個處理模塊各自的內(nèi)存壓力的數(shù)值,并在判斷出一個或多個處理模塊的內(nèi)存壓力的數(shù)值中最大值與最小值之差大于或等于預設閾值時,向最小值對應的處理模塊發(fā)送內(nèi)存搶占消息,在從最小值對應的處理模塊中搶占到內(nèi)存資源之后,向最大值對應的處理模塊發(fā)送內(nèi)存分配消息,使得最大值對應的處理模塊在可用內(nèi)存資源中增加了待分配的內(nèi)存大小之后,內(nèi)存壓力的數(shù)值相應地減小。當多操作系統(tǒng)結(jié)構(gòu)中的各處理模塊的內(nèi)存壓力分布懸殊時,從內(nèi)存壓力較小的處理模塊的內(nèi)存資源中搶占一部分分配給內(nèi)存壓力較大的處理模塊,能夠有效地滿足內(nèi)存壓力較大的處理模塊的高內(nèi)存需求,并且能夠?qū)Ω魈幚砟K之間的內(nèi)存壓力進行均衡,有效地提高整個多操作系統(tǒng)結(jié)構(gòu)中內(nèi)存資源的利用率和系統(tǒng)性能。
      [0281]進一步地,在上述各實施例的基礎上,所述需釋放的內(nèi)存大小具體為:
      [0282]所述一個或多個處理模塊的內(nèi)存壓力的數(shù)值的平均值與所述內(nèi)存壓力的數(shù)值中最小值之差,與所述最小值對應的處理模塊中內(nèi)存資源的總數(shù)的乘積。[0283]進一步地,在上述各實施例的基礎上,所述待分配的內(nèi)存大小具體為:
      [0284]所述內(nèi)存壓力的數(shù)值中最大值與所述一個或多個處理模塊的內(nèi)存壓力的數(shù)值的平均值之差,與所述最大值對應的處理模塊中內(nèi)存資源的總數(shù)的乘積。
      [0285]本發(fā)明實施例提供的主控處理模塊,根據(jù)該處理模塊的內(nèi)存壓力與內(nèi)存壓力的平均值之間的差距,確定需要從內(nèi)存壓力較小的處理模塊中搶占的內(nèi)存資源的大小,以及需要向內(nèi)存壓力較大的處理模塊分配的內(nèi)存資源的大小,能夠?qū)Ω魈幚砟K之間的內(nèi)存壓力進行均衡,有效地提高整個多操作系統(tǒng)結(jié)構(gòu)中內(nèi)存資源的利用率和系統(tǒng)性能。
      [0286]進一步地,在上述各實施例的基礎上,所述接收單元11具體用于:
      [0287]分別按照所述一個或多個處理模塊各自的心跳頻率,接收所述一個或多個處理模塊分別發(fā)送的內(nèi)存狀態(tài)信息。
      [0288]本發(fā)明實施例提供的主控處理模塊,根據(jù)處理模塊的心跳頻率接收各處理模塊在心跳周期內(nèi)的內(nèi)存狀態(tài)信息,使得主控處理模塊能夠及時地對各處理模塊的內(nèi)存壓力是否平衡進行判斷,從而動態(tài)地對各處理模塊之間的內(nèi)存壓力進行均衡,有效地提高整個多操作系統(tǒng)結(jié)構(gòu)中內(nèi)存資源的利用率和系統(tǒng)性能。
      [0289]圖8為本發(fā)明提供的第一種處理模塊一實施例的結(jié)構(gòu)示意圖,如圖8所示,該處理模塊包括發(fā)送單元21、接收單元22和處理單元23。
      [0290]其中,發(fā)送單元21,用于將內(nèi)存狀態(tài)信息發(fā)送給主控處理模塊,以供所述主控處理模塊根據(jù)所述內(nèi)存狀態(tài)信息,確定內(nèi)存壓力的數(shù)值,并判斷分別確定的一個或多個處理模塊的內(nèi)存壓力的數(shù)值中最大值與最小值之差是否大于或等于預設閾值;接收單元22,用于接收所述主控處理模塊發(fā)送的內(nèi)存搶占消息,所述內(nèi)存搶占消息為所述主控處理模塊在判斷出所述一個或多個處理模塊的內(nèi)存壓力的數(shù)值中最大值與最小值之差大于或等于所述預設閾值之后,向所述最小值對應的處理模塊發(fā)送的,所述內(nèi)存搶占消息中攜帶有需釋放的內(nèi)存大小;處理單元23,用于對所述需釋放的內(nèi)存大小對應的內(nèi)存資源進行釋放。
      [0291]本發(fā)明實施例提供的處理模塊,將內(nèi)存狀態(tài)信息發(fā)送給主控處理模塊,用于供主控處理模塊根據(jù)內(nèi)存狀態(tài)信息,確定內(nèi)存壓力的數(shù)值,并判斷分別確定的一個或多個處理模塊的內(nèi)存壓力的數(shù)值中最大值與最小值之差是否大于或等于預設閾值,在主控處理模塊判斷出一個或多個處理模塊的內(nèi)存壓力的數(shù)值中最大值與最小值之差大于或等于預設閾值之后,接收主控處理模塊發(fā)送的內(nèi)存搶占消息,并根據(jù)內(nèi)存搶占消息中攜帶有需釋放的內(nèi)存大小,對需釋放的內(nèi)存大小對應的內(nèi)存資源進行釋放。當多操作系統(tǒng)結(jié)構(gòu)中的各處理模塊的內(nèi)存壓力分布懸殊時,從內(nèi)存壓力較小的處理模塊的內(nèi)存資源中搶占一部分分配給內(nèi)存壓力較大的處理模塊,能夠有效地滿足內(nèi)存壓力較大的處理模塊的高內(nèi)存需求,并且能夠?qū)Ω魈幚砟K之間的內(nèi)存壓力進行均衡,有效地提高整個多操作系統(tǒng)結(jié)構(gòu)中內(nèi)存資源的利用率和系統(tǒng)性能。
      [0292]圖9為本發(fā)明提供的第一種處理模塊另一實施例的結(jié)構(gòu)示意圖,如圖9所示,該處理模塊還包括判斷單元24。
      [0293]判斷單元24,用于所述接收單元22接收所述主控處理模塊發(fā)送的內(nèi)存搶占消息之后,所述接收單元22對所述需釋放的內(nèi)存大小對應的內(nèi)存資源進行釋放之前,判斷所述需釋放的內(nèi)存大小是否大于或等于空閑內(nèi)存的大?。?br> [0294]所述處理單元23還用于,在所述判斷單元24判斷出所述需釋放的內(nèi)存大小大于或等于所述空閑內(nèi)存的大小時,采用模擬換頁機制,從非空閑內(nèi)存中搶占可被交換的內(nèi)存,對所述空閑內(nèi)存的大小和搶占的所述可被交換的內(nèi)存的大小對應的內(nèi)存資源進行釋放,其中,搶占的所述可被交換的內(nèi)存的大小等于所述需釋放的內(nèi)存大小與所述空閑內(nèi)存的大小之差。
      [0295]本發(fā)明實施例提供的處理模塊,在判斷出需釋放的內(nèi)存大小大于或等于空閑內(nèi)存的大小之后,采用模擬換頁機制,從非空閑內(nèi)存中搶占可被交換的內(nèi)存,所搶占的可被交換的內(nèi)存的大小等于需釋放的內(nèi)存大小與空閑內(nèi)存的大小之差,從而對空閑內(nèi)存的大小和搶占的可被交換的內(nèi)存的大小對應的內(nèi)存資源進行釋放,當多操作系統(tǒng)結(jié)構(gòu)中的各處理模塊的內(nèi)存壓力分布懸殊時,不僅能夠從內(nèi)存壓力較小的處理模塊的內(nèi)存資源中搶占到空閑的內(nèi)存,還能夠從非空閑的內(nèi)存中搶占可被交換的部分內(nèi)存,從而能夠盡量保證有足夠的內(nèi)存資源可以分配給內(nèi)存壓力較大的處理模塊,能夠有效地滿足內(nèi)存壓力較大的處理模塊的高內(nèi)存需求,并且能夠?qū)Ω魈幚砟K之間的內(nèi)存壓力進行均衡,有效地提高整個多操作系統(tǒng)結(jié)構(gòu)中內(nèi)存資源的利用率和系統(tǒng)性能。
      [0296]進一步地,在上述各實施例的基礎上,所述內(nèi)存狀態(tài)信息包括,在預設時間范圍內(nèi)發(fā)生缺頁異常的物理頁面的數(shù)量與所述預設時間范圍內(nèi)的物理頁面總數(shù)的比值;或者最小頁面駐留時間,所述頁面駐留時間為物理頁面換入內(nèi)存的時間點與換出內(nèi)存的時間點的間隔時間,或者物理頁面換入內(nèi)存的時間點與當前時間點的間隔時間,所述最小頁面駐留時間為預設時間范圍內(nèi)一個或多個所述頁面駐留時間中數(shù)值最小的頁面駐留時間。
      [0297]進一步地,在上述各實施例的基礎上,所述發(fā)送單元21具體用于,按照預設的心跳頻率,將心跳周期內(nèi)的內(nèi)存狀態(tài)信息發(fā)送給所述主控處理模塊。
      [0298]本發(fā)明實施例提供的處理模塊,按照心跳頻率向主控處理模塊發(fā)送心跳周期內(nèi)的內(nèi)存狀態(tài)信息,使得主控處理模塊能夠及時地對各處理模塊的內(nèi)存壓力是否平衡進行判斷,從而動態(tài)地對各處理模塊之間的內(nèi)存壓力進行均衡,有效地提高整個多操作系統(tǒng)結(jié)構(gòu)中內(nèi)存資源的利用率和系統(tǒng)性能。
      [0299]進一步地,在上述各實施例的基礎上,所述接收單元22還用于,在所述發(fā)送單元21將內(nèi)存狀態(tài)信息發(fā)送給主控處理模塊之后,接收所述主控處理模塊發(fā)送的內(nèi)存分配消息,所述內(nèi)存分配消息為所述主控處理模塊在從所述最小值對應的處理模塊中搶占到內(nèi)存資源之后,向所述最大值對應的處理模塊發(fā)送的,所述內(nèi)存分配消息中攜帶有待分配的內(nèi)存大??;
      [0300]相應地,所述處理單元23還用于,在可用內(nèi)存資源中增加所述待分配的內(nèi)存大小。
      [0301]本發(fā)明實施例提供的處理模塊,接收主控處理模塊在從最小值對應的處理模塊中搶占到內(nèi)存資源之后,發(fā)送的內(nèi)存分配消息,該內(nèi)存分配消息中攜帶有待分配的內(nèi)存大小,從而在可用內(nèi)存資源中增加待分配的內(nèi)存大小。當多操作系統(tǒng)結(jié)構(gòu)中的各處理模塊的內(nèi)存壓力分布懸殊時,從內(nèi)存壓力較小的處理模塊的內(nèi)存資源中搶占一部分分配給內(nèi)存壓力較大的處理模塊,能夠有效地滿足內(nèi)存壓力較大的處理模塊的高內(nèi)存需求,并且能夠?qū)Ω魈幚砟K之間的內(nèi)存壓力進行均衡,有效地提高整個多操作系統(tǒng)結(jié)構(gòu)中內(nèi)存資源的利用率和系統(tǒng)性能。
      [0302]圖10為本發(fā)明提供的第二種處理模塊一實施例的結(jié)構(gòu)示意圖,如圖10所示,該處理模塊包括發(fā)送單元31、接收單元32和處理單元33。
      [0303]其中,發(fā)送單元31,用于將內(nèi)存狀態(tài)信息發(fā)送給主控處理模塊,以供所述主控處理模塊根據(jù)所述內(nèi)存狀態(tài)信息,確定內(nèi)存壓力的數(shù)值,并判斷分別確定的一個或多個處理模塊的內(nèi)存壓力的數(shù)值中最大值與最小值之差是否大于或等于預設閾值;接收單元32,用于接收所述主控處理模塊發(fā)送的內(nèi)存分配消息,所述內(nèi)存分配消息為所述主控處理模塊在從所述最小值對應的處理模塊中搶占到內(nèi)存資源之后,向所述最大值對應的處理模塊發(fā)送的,所述內(nèi)存分配消息中攜帶有待分配的內(nèi)存大小;處理單元33,用于在可用內(nèi)存資源中增加所述待分配的內(nèi)存大小。
      [0304]本發(fā)明實施例提供的處理模塊,將內(nèi)存狀態(tài)信息發(fā)送給主控處理模塊,用于供主控處理模塊根據(jù)內(nèi)存狀態(tài)信息,確定內(nèi)存壓力的數(shù)值,并判斷分別確定的一個或多個處理模塊的內(nèi)存壓力的數(shù)值中最大值與最小值之差是否大于或等于預設閾值,在主控處理模塊判斷出一個或多個處理模塊的內(nèi)存壓力的數(shù)值中最大值與最小值之差大于或等于預設閾值之后,接收主控處理模塊發(fā)送的內(nèi)存搶占消息,并根據(jù)內(nèi)存搶占消息中攜帶有需釋放的內(nèi)存大小,對需釋放的內(nèi)存大小對應的內(nèi)存資源進行釋放。當多操作系統(tǒng)結(jié)構(gòu)中的各處理模塊的內(nèi)存壓力分布懸殊時,從內(nèi)存壓力較小的處理模塊的內(nèi)存資源中搶占一部分分配給內(nèi)存壓力較大的處理模塊,能夠有效地滿足內(nèi)存壓力較大的處理模塊的高內(nèi)存需求,并且能夠?qū)Ω魈幚砟K之間的內(nèi)存壓力進行均衡,有效地提高整個多操作系統(tǒng)結(jié)構(gòu)中內(nèi)存資源的利用率和系統(tǒng)性能。
      [0305]進一步地,在上述實施例的基礎上,所述內(nèi)存狀態(tài)信息包括,在預設時間范圍內(nèi)發(fā)生缺頁異常的物理頁面的數(shù)量與所述預設時間范圍內(nèi)的物理頁面總數(shù)的比值;或者最小頁面駐留時間,所述頁面駐留時間為物理頁面換入內(nèi)存的時間點與換出內(nèi)存的時間點的間隔時間,或者物理頁面換入內(nèi)存的時間點與當前時間點的間隔時間,所述最小頁面駐留時間為預設時間范圍內(nèi)一個或多個所述頁面駐留時間中數(shù)值最小的頁面駐留時間。
      [0306]進一步地,在上述各實施例的基礎上,所述處理單元33具體用于,按照預設的心跳頻率,將心跳周期內(nèi)的內(nèi)存狀態(tài)信息發(fā)送給所述主控處理模塊。
      [0307]本發(fā)明實施例提供的處理模塊,按照心跳頻率向主控處理模塊發(fā)送心跳周期內(nèi)的內(nèi)存狀態(tài)信息,使得主控處理模塊能夠及時地對各處理模塊的內(nèi)存壓力是否平衡進行判斷,從而動態(tài)地對各處理模塊之間的內(nèi)存壓力進行均衡,有效地提高整個多操作系統(tǒng)結(jié)構(gòu)中內(nèi)存資源的利用率和系統(tǒng)性能。
      [0308]圖11為本發(fā)明提供的第一種中央處理器實施例的結(jié)構(gòu)示意圖,如圖11所示,該中央處理器100包括如圖7所示的主控處理模塊I。
      [0309]具體的,該主控處理模塊進行內(nèi)存分配的方法可以參見上述對應的方法實施例中所述的步驟,此處不再贅述。
      [0310]圖12為本發(fā)明提供的第二種中央處理器實施例的結(jié)構(gòu)示意圖,如圖12所示,該中央處理器200包括如圖8或圖9所示的處理模塊2。
      [0311 ] 具體的,該處理模塊進行內(nèi)存分配的方法可以參見上述對應的方法實施例中所述的步驟,此處不再贅述。
      [0312] 圖13為本發(fā)明提供的第三種中央處理器實施例的結(jié)構(gòu)示意圖,如圖13所示,該中央處理器300包括如圖10所示的處理模塊3。[0313]具體的,該處理模塊進行內(nèi)存分配的方法可以參見上述對應的方法實施例中所述的步驟,此處不再贅述。
      [0314]圖14為本發(fā)明提供的計算機系統(tǒng)實施例的結(jié)構(gòu)示意圖,如圖14所示,該計算機系統(tǒng)包括上述中央處理器100、中央處理器200和中央處理器300。中央處理器100、中央處理器200和中央處理器300構(gòu)成多操作系統(tǒng)結(jié)構(gòu)。
      [0315]本發(fā)明實施例提供的計算機系統(tǒng),在接收一個或多個處理模塊分別發(fā)送的內(nèi)存狀態(tài)信息之后,分別確定一個或多個處理模塊各自的內(nèi)存壓力的數(shù)值,并在判斷出一個或多個處理模塊的內(nèi)存壓力的數(shù)值中最大值與最小值之差大于或等于預設閾值時,向最小值對應的處理模塊發(fā)送內(nèi)存搶占消息,在從最小值對應的處理模塊中搶占到內(nèi)存資源之后,向最大值對應的處理模塊發(fā)送內(nèi)存分配消息,使得最大值對應的處理模塊在可用內(nèi)存資源中增加了待分配的內(nèi)存大小之后,內(nèi)存壓力的數(shù)值相應地減小。當多操作系統(tǒng)結(jié)構(gòu)中的各處理模塊的內(nèi)存壓力分布懸殊時,從內(nèi)存壓力較小的處理模塊的內(nèi)存資源中搶占一部分分配給內(nèi)存壓力較大的處理模塊,能夠有效地滿足內(nèi)存壓力較大的處理模塊的高內(nèi)存需求,并且能夠?qū)Ω魈幚砟K之間的內(nèi)存壓力進行均衡,有效地提高整個多操作系統(tǒng)結(jié)構(gòu)中內(nèi)存資源的利用率和系統(tǒng)性能。
      [0316]本領域普通技術人員可以理解:實現(xiàn)上述各方法實施例的全部或部分步驟可以通過程序指令相關的硬件來完成。前述的程序可以存儲于一計算機可讀取存儲介質(zhì)中。該程序在執(zhí)行時,執(zhí)行包括上述各方法實施例的步驟;而前述的存儲介質(zhì)包括:R0M、RAM、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。
      [0317]最后應說明的是:以上各實施例僅用以說明本發(fā)明的技術方案,而非對其限制;盡管參照前述各實施例對本發(fā)明進行了詳細的說明,本領域的普通技術人員應當理解:其依然可以對前述各實施例所記載的技術方案進行修改,或者對其中部分或者全部技術特征進行等同替換;而這些修改或者替換,并不使相應技術方案的本質(zhì)脫離本發(fā)明各實施例技術方案的范圍。
      【權利要求】
      1.一種內(nèi)存分配方法,其特征在于,包括: 接收一個或多個處理模塊分別發(fā)送的內(nèi)存狀態(tài)信息; 根據(jù)所述內(nèi)存狀態(tài)信息,分別確定所述一個或多個處理模塊各自的內(nèi)存壓力的數(shù)值; 判斷所述一個或多個處理模塊的內(nèi)存壓力的數(shù)值中最大值與最小值之差是否大于或等于預設閾值; 若是,則向所述最小值對應的處理模塊發(fā)送內(nèi)存搶占消息,所述內(nèi)存搶占消息中攜帶有需釋放的內(nèi)存大小,以供所述最小值對應的處理模塊對所述需釋放的內(nèi)存大小對應的內(nèi)存資源進行釋放; 在從所述最小值對應的處理模塊中搶占到內(nèi)存資源之后,向所述最大值對應的處理模塊發(fā)送內(nèi)存分配消息,所述內(nèi)存分配消息中攜帶有待分配的內(nèi)存大小,以使所述最大值對應的處理模塊在可用內(nèi)存資源中增加了所述待分配的內(nèi)存大小之后,內(nèi)存壓力的數(shù)值相應地減小。
      2.根據(jù)權利要求1所述的內(nèi)存分配方法,其特征在于,單個處理模塊的所述內(nèi)存狀態(tài)信息包括:所述單個處理模塊在預設時間范圍內(nèi)發(fā)生缺頁異常的物理頁面的數(shù)量與所述預設時間范圍內(nèi)的物理頁面總數(shù)的比值; 相應地,所述根據(jù)所述內(nèi)存狀態(tài)信息,分別確定所述一個或多個處理模塊各自的內(nèi)存壓力的數(shù)值具體為: 根據(jù)所述一個或多個處理模塊各自的內(nèi)存分配時間間隔,確定內(nèi)存分配時間間隔的平均值,所述內(nèi)存分配時間間隔為所述單個處理模塊最近一次物理頁面總數(shù)發(fā)生變更的時間點與當前時間點之間的時間間隔; 所述單個處理模塊的內(nèi)存壓力P為,P= a *C+ β * Λ t ;其中,所述C為所述單個處理模塊在預設時間范圍內(nèi)發(fā)生缺頁異常的物理頁面的數(shù)量與所述預設時間范圍內(nèi)的物理頁面總數(shù)的比值,所述At為所述單個處理模塊的內(nèi)存分配時間間隔與所述內(nèi)存分配時間間隔的平均值之間的比值,所述α和所述β為預設系數(shù)。
      3.根據(jù)權利要求1所述的內(nèi)存分配方法,其特征在于,單個處理模塊的所述內(nèi)存狀態(tài)信息包括最小頁面駐留時間,所述頁面駐留時間為物理頁面換入內(nèi)存的時間點與換出內(nèi)存的時間點的間隔時間,或者物理頁面換入內(nèi)存的時間點與當前時間點的間隔時間,所述最小頁面駐留時間為預設時間范圍內(nèi)一個或多個頁面駐留時間中數(shù)值最小的頁面駐留時間; 相應地,所述根據(jù)所述內(nèi)存狀態(tài)信息,分別確定所述一個或多個處理模塊各自的內(nèi)存壓力的數(shù)值具體為: 根據(jù)所述一個或多個處理模塊各自的最小頁面駐留時間,確定最小頁面駐留時間的平均值; 所述單個處理模塊的內(nèi)存壓力P為,所述單個處理模塊的最小頁面駐留時間與所述最小頁面駐留時間的平均值之間的比值。
      4.根據(jù)權利要求2或3所述的內(nèi)存分配方法,其特征在于,所述需釋放的內(nèi)存大小具體為: 所述一個或多個處理模塊的內(nèi)存壓力的數(shù)值的平均值與所述內(nèi)存壓力的數(shù)值中最小值之差,與所述最小值對應的處理模塊中內(nèi)存資源的總數(shù)的乘積。
      5.根據(jù)權利要求2或3所述的內(nèi)存分配方法,其特征在于,所述待分配的內(nèi)存大小具體為: 所述內(nèi)存壓力的數(shù)值中最大值與所述一個或多個處理模塊的內(nèi)存壓力的數(shù)值的平均值之差,與所述最大值對應的處理模塊中內(nèi)存資源的總數(shù)的乘積。
      6.根據(jù)權利要求1-5中任一所述的內(nèi)存分配方法,其特征在于,所述接收一個或多個處理模塊分別發(fā)送的內(nèi)存狀態(tài)信息具體為: 分別按照所述一個或多個處理模塊各自的心跳頻率,接收所述一個或多個處理模塊分別發(fā)送的內(nèi)存狀態(tài)信息。
      7.—種內(nèi)存分配方法,其特征在于,包括: 將內(nèi)存狀態(tài)信息發(fā)送給主控處理模塊,以供所述主控處理模塊根據(jù)所述內(nèi)存狀態(tài)信息,確定內(nèi)存壓力的數(shù)值,并判斷分別確定的一個或多個處理模塊的內(nèi)存壓力的數(shù)值中最大值與最小值之差是否大于或等于預設閾值; 接收所述主控處理模塊發(fā)送的內(nèi)存搶占消息,所述內(nèi)存搶占消息為所述主控處理模塊在判斷出所述一個或多個處理模塊的內(nèi)存壓力的數(shù)值中最大值與最小值之差大于或等于所述預設閾值之后,向所述最小值對應的處理模塊發(fā)送的,所述內(nèi)存搶占消息中攜帶有需釋放的內(nèi)存大??; 對所述需釋放的內(nèi)存大小對應的內(nèi)存資源進行釋放。
      8.根據(jù)權利要求7所述的內(nèi)存分配方法,其特征在于,在所述接收所述主控處理模塊發(fā)送的內(nèi)存搶占消息之后,所 述對所述需釋放的內(nèi)存大小對應的內(nèi)存資源進行釋放之前,所述方法還包括: 判斷所述需釋放的內(nèi)存大小是否大于或等于空閑內(nèi)存的大??; 若是,則采用模擬換頁機制,從非空閑內(nèi)存中搶占可被交換的內(nèi)存,搶占的所述可被交換的內(nèi)存的大小等于所述需釋放的內(nèi)存大小與所述空閑內(nèi)存的大小之差; 相應地,所述對所述需釋放的內(nèi)存大小對應的內(nèi)存資源進行釋放具體為: 對所述空閑內(nèi)存的大小和搶占的所述可被交換的內(nèi)存的大小對應的內(nèi)存資源進行釋放。
      9.根據(jù)權利要求7所述的內(nèi)存分配方法,其特征在于,所述內(nèi)存狀態(tài)信息包括: 在預設時間范圍內(nèi)發(fā)生缺頁異常的物理頁面的數(shù)量與所述預設時間范圍內(nèi)的物理頁面總數(shù)的比值;或者 最小頁面駐留時間,所述頁面駐留時間為物理頁面換入內(nèi)存的時間點與換出內(nèi)存的時間點的間隔時間,或者物理頁面換入內(nèi)存的時間點與當前時間點的間隔時間,所述最小頁面駐留時間為預設時間范圍內(nèi)一個或多個所述頁面駐留時間中數(shù)值最小的頁面駐留時間。
      10.根據(jù)權利要求7-9中任一所述的內(nèi)存分配方法,其特征在于,所述將內(nèi)存狀態(tài)信息發(fā)送給主控處理模塊具體為: 按照預設的心跳頻率,將心跳周期內(nèi)的內(nèi)存狀態(tài)信息發(fā)送給所述主控處理模塊。
      11.根據(jù)權利要求7所述的內(nèi)存分配方法,其特征在于,所述將內(nèi)存狀態(tài)信息發(fā)送給主控處理模塊之后,所述方法還包括: 接收所述主控處理模塊發(fā)送的內(nèi)存分配消息,所述內(nèi)存分配消息為所述主控處理模塊在從所述最小值對應的處理模塊中搶占到內(nèi)存資源之后,向所述最大值對應的處理模塊發(fā)送的,所述內(nèi)存分配消息中攜帶有待分配的內(nèi)存大??; 在可用內(nèi)存資源中增加所述待分配的內(nèi)存大小。
      12.—種內(nèi)存分配方法,其特征在于,包括: 將內(nèi)存狀態(tài)信息發(fā)送給主控處理模塊,以供所述主控處理模塊根據(jù)所述內(nèi)存狀態(tài)信息,確定內(nèi)存壓力的數(shù)值,并判斷分別確定的一個或多個處理模塊的內(nèi)存壓力的數(shù)值中最大值與最小值之差是否大于或等于預設閾值; 接收所述主控處理模塊發(fā)送的內(nèi)存分配消息,所述內(nèi)存分配消息為所述主控處理模塊在從所述最小值對應的處理模塊中搶占到內(nèi)存資源之后,向所述最大值對應的處理模塊發(fā)送的,所述內(nèi)存分配消息中攜帶有待分配的內(nèi)存大??; 在可用內(nèi)存資源中增加所述待分配的內(nèi)存大小。
      13.根據(jù)權利要求12所述的內(nèi)存分配方法,其特征在于,所述內(nèi)存狀態(tài)信息包括: 在預設時間范圍內(nèi)發(fā)生缺頁異常的物理頁面的數(shù)量與所述預設時間范圍內(nèi)的物理頁面總數(shù)的比值;或者 最小頁面駐留時間,所述頁面駐留時間為物理頁面換入內(nèi)存的時間點與換出內(nèi)存的時間點的間隔時間,或者物理頁面換入內(nèi)存的時間點與當前時間點的間隔時間,所述最小頁面駐留時間為預設時 間范圍內(nèi)一個或多個所述頁面駐留時間中數(shù)值最小的頁面駐留時間。
      14.根據(jù)權利要求12或13所述的內(nèi)存分配方法,其特征在于,所述將內(nèi)存狀態(tài)信息發(fā)送給主控處理模塊具體為: 按照預設的心跳頻率,將心跳周期內(nèi)的內(nèi)存狀態(tài)信息發(fā)送給所述主控處理模塊。
      15.—種主控處理模塊,其特征在于,包括: 接收單元,用于接收一個或多個處理模塊分別發(fā)送的內(nèi)存狀態(tài)信息; 處理單元,用于根據(jù)所述內(nèi)存狀態(tài)信息,分別確定所述一個或多個處理模塊各自的內(nèi)存壓力的數(shù)值; 判斷單元,用于判斷所述一個或多個處理模塊的內(nèi)存壓力的數(shù)值中最大值與最小值之差是否大于或等于預設閾值; 發(fā)送單元,用于在判斷出所述一個或多個處理模塊的內(nèi)存壓力的數(shù)值中最大值與最小值之差大于或等于預設閾值時,向所述最小值對應的處理模塊發(fā)送內(nèi)存搶占消息,所述內(nèi)存搶占消息中攜帶有需釋放的內(nèi)存大小,以供所述最小值對應的處理模塊對所述需釋放的內(nèi)存大小對應的內(nèi)存資源進行釋放;在從所述最小值對應的處理模塊中搶占到內(nèi)存資源之后,向所述最大值對應的處理模塊發(fā)送內(nèi)存分配消息,所述內(nèi)存分配消息中攜帶有待分配的內(nèi)存大小,以使所述最大值對應的處理模塊在可用內(nèi)存資源中增加了所述待分配的內(nèi)存大小之后,內(nèi)存壓力的數(shù)值相應地減小。
      16.根據(jù)權利要求15所述的主控處理模塊,其特征在于,所述接收單元接收到的單個處理模塊的所述內(nèi)存狀態(tài)信息包括:所述單個處理模塊在預設時間范圍內(nèi)發(fā)生缺頁異常的物理頁面的數(shù)量與所述預設時間范圍內(nèi)的物理頁面總數(shù)的比值; 相應地,所述處理單元具體用于,根據(jù)所述一個或多個處理模塊各自的內(nèi)存分配時間間隔,確定內(nèi)存分配時間間隔的平均值,所述內(nèi)存分配時間間隔為所述單個處理模塊最近一次物理頁面總數(shù)發(fā)生變更的時間點與當前時間點之間的時間間隔;所述單個處理模塊的內(nèi)存壓力P為,P= a *C+ β * Λ t ;其中,所述C為所述單個處理模塊在預設時間范圍內(nèi)發(fā)生缺頁異常的物理頁面的數(shù)量與所述預設時間范圍內(nèi)的物理頁面總數(shù)的比值,所述At為所述單個處理模塊的內(nèi)存分配時間間隔與所述內(nèi)存分配時間間隔的平均值之間的比值,所述α和所述β為預設系數(shù)。
      17.根據(jù)權利要求15所述的主控處理模塊,其特征在于,所述接收單元接收到的單個處理模塊的所述內(nèi)存狀態(tài)信息包括最小頁面駐留時間,所述頁面駐留時間為物理頁面換入內(nèi)存的時間點與換出內(nèi)存的時間點的間隔時間,或者物理頁面換入內(nèi)存的時間點與當前時間點的間隔時間,所述最小頁面駐留時間為預設時間范圍內(nèi)一個或多個頁面駐留時間中數(shù)值最小的頁面駐留時間; 相應地,所述處理單元具體用于,根據(jù)所述一個或多個處理模塊各自的最小頁面駐留時間,確定最小頁面駐留時間的平均值;所述單個處理模塊的內(nèi)存壓力P為,所述單個處理模塊的最小頁面駐留時間與所述最小頁面駐留時間的平均值之間的比值。
      18.根據(jù)權利要求16或17所述的主控處理模塊,其特征在于,所述需釋放的內(nèi)存大小具體為: 所述一個或多個處理模塊的內(nèi)存壓力的數(shù)值的平均值與所述內(nèi)存壓力的數(shù)值中最小值之差,與所述最小值對應的處理模塊中內(nèi)存資源的總數(shù)的乘積。
      19.根據(jù)權利要求16或17所述的主控處理模塊,其特征在于,所述待分配的內(nèi)存大小具體為: 所述內(nèi)存壓力的數(shù)值中最大值與所述一個或多個處理模塊的內(nèi)存壓力的數(shù)值的平均值之差,與所述最大值對應的處理模塊中內(nèi)存資源的總數(shù)的乘積。
      20.根據(jù)權利要求15-19中任一所述的主控處理模塊,其特征在于,所述接收單元具體用于: 分別按照所述一個或多個處理模塊各自的心跳頻率,接收所述一個或多個處理模塊分別發(fā)送的內(nèi)存狀態(tài)信息。
      21.一種處理模塊,其特征在于,包括: 發(fā)送單元,用于將內(nèi)存狀態(tài)信息發(fā)送給主控處理模塊,以供所述主控處理模塊根據(jù)所述內(nèi)存狀態(tài)信息,確定內(nèi)存壓力的數(shù)值,并判斷分別確定的一個或多個處理模塊的內(nèi)存壓力的數(shù)值中最大值與最小值之差是否大于或等于預設閾值; 接收單元,用于接收所述主控處理模塊發(fā)送的內(nèi)存搶占消息,所述內(nèi)存搶占消息為所述主控處理模塊在判斷出所述一個或多個處理模塊的內(nèi)存壓力的數(shù)值中最大值與最小值之差大于或等于所述預設閾值之后,向所述最小值對應的處理模塊發(fā)送的,所述內(nèi)存搶占消息中攜帶有需釋放的內(nèi)存大??; 處理單元,用于對所述需釋放的內(nèi)存大小對應的內(nèi)存資源進行釋放。
      22.根據(jù)權利要 求21所述的處理模塊,其特征在于,所述處理模塊還包括: 判斷單元,用于所述接收單元接收所述主控處理模塊發(fā)送的內(nèi)存搶占消息之后,所述接收單元對所述需釋放的內(nèi)存大小對應的內(nèi)存資源進行釋放之前,判斷所述需釋放的內(nèi)存大小是否大于或等于空閑內(nèi)存的大??; 所述處理單元還用于,在所述判斷單元判斷出所述需釋放的內(nèi)存大小大于或等于所述空閑內(nèi)存的大小時,采用模擬換頁機制,從非空閑內(nèi)存中搶占可被交換的內(nèi)存,對所述空閑內(nèi)存的大小和搶占的所述可被交換的內(nèi)存的大小對應的內(nèi)存資源進行釋放,其中,搶占的所述可被交換的內(nèi)存的大小等于所述需釋放的內(nèi)存大小與所述空閑內(nèi)存的大小之差。
      23.根據(jù)權利要求21所述的處理模塊,其特征在于,所述內(nèi)存狀態(tài)信息包括: 在預設時間范圍內(nèi)發(fā)生缺頁異常的物理頁面的數(shù)量與所述預設時間范圍內(nèi)的物理頁面總數(shù)的比值;或者 最小頁面駐留時間,所述頁面駐留時間為物理頁面換入內(nèi)存的時間點與換出內(nèi)存的時間點的間隔時間,或者物理頁面換入內(nèi)存的時間點與當前時間點的間隔時間,所述最小頁面駐留時間為預設時間范圍內(nèi)一個或多個所述頁面駐留時間中數(shù)值最小的頁面駐留時間。
      24.根據(jù)權利要求21-23中任一所述的處理模塊,其特征在于,所述發(fā)送單元具體用于: 按照預設的心跳頻率,將心跳周期內(nèi)的內(nèi)存狀態(tài)信息發(fā)送給所述主控處理模塊。
      25.根據(jù)權利要求21所述的處理模塊,其特征在于,所述接收單元還用于: 在所述發(fā)送單元將內(nèi)存狀態(tài)信息發(fā)送給主控處理模塊之后,接收所述主控處理模塊發(fā)送的內(nèi)存分配消息,所述內(nèi)存分配消息為所述主控處理模塊在從所述最小值對應的處理模塊中搶占到內(nèi)存資源之后,向所述最大值對應的處理模塊發(fā)送的,所述內(nèi)存分配消息中攜帶有待分配的內(nèi)存大?。幌鄳?,所述處理單 元還用于,在可用內(nèi)存資源中增加所述待分配的內(nèi)存大小。
      26.—種處理模塊,其特征在于,包括: 發(fā)送單元,用于將內(nèi)存狀態(tài)信息發(fā)送給主控處理模塊,以供所述主控處理模塊根據(jù)所述內(nèi)存狀態(tài)信息,確定內(nèi)存壓力的數(shù)值,并判斷分別確定的一個或多個處理模塊的內(nèi)存壓力的數(shù)值中最大值與最小值之差是否大于或等于預設閾值; 接收單元,用于接收所述主控處理模塊發(fā)送的內(nèi)存分配消息,所述內(nèi)存分配消息為所述主控處理模塊在從所述最小值對應的處理模塊中搶占到內(nèi)存資源之后,向所述最大值對應的處理模塊發(fā)送的,所述內(nèi)存分配消息中攜帶有待分配的內(nèi)存大?。? 處理單元,用于在可用內(nèi)存資源中增加所述待分配的內(nèi)存大小。
      27.根據(jù)權利要求26所述的處理模塊,其特征在于,所述內(nèi)存狀態(tài)信息包括: 在預設時間范圍內(nèi)發(fā)生缺頁異常的物理頁面的數(shù)量與所述預設時間范圍內(nèi)的物理頁面總數(shù)的比值;或者 最小頁面駐留時間,所述頁面駐留時間為物理頁面換入內(nèi)存的時間點與換出內(nèi)存的時間點的間隔時間,或者物理頁面換入內(nèi)存的時間點與當前時間點的間隔時間,所述最小頁面駐留時間為預設時間范圍內(nèi)一個或多個所述頁面駐留時間中數(shù)值最小的頁面駐留時間。
      28.根據(jù)權利要求26或27所述的處理模塊,其特征在于,所述處理單元具體用于: 按照預設的心跳頻率,將心跳周期內(nèi)的內(nèi)存狀態(tài)信息發(fā)送給所述主控處理模塊。
      29.—種中央處理器,其特征在于,包括如權利要求15-20中任一所述的主控處理模塊。
      30.一種中央處理器,其特征在于,包括如權利要求21-25中任一所述的處理模塊。
      31.一種中央處理器,其特征在于,包括如權利要求26-28中任一所述的處理模塊。
      32.—種計算機系統(tǒng),其特征在于,包括如權利要求29所述的中央處理器、如權利要求30所述的中央處理器以及如權利要求31所述的中央處理器。
      【文檔編號】G06F12/02GK103810109SQ201210460181
      【公開日】2014年5月21日 申請日期:2012年11月15日 優(yōu)先權日:2012年11月15日
      【發(fā)明者】譚崇康, 陸鋼, 詹劍鋒, 張立新 申請人:華為技術有限公司, 中國科學院計算技術研究所
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1