交換操作的實現(xiàn)方法和裝置的制造方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明實施例涉及通信技術(shù),尤其涉及一種交換操作的實現(xiàn)方法和裝置。
【背景技術(shù)】
[0002] 交換(SWAP)分區(qū)雖然是存儲介質(zhì)(例如磁盤)上的一部分,但是被作為許多操作系 統(tǒng)(如Linux、Windows)的虛擬內(nèi)存分區(qū)來使用。當(dāng)操作系統(tǒng)檢測到空閑物理內(nèi)存不足或 耗盡的時候,操作系統(tǒng)啟動SWAP換出操作,將部分物理內(nèi)存頁面中的數(shù)據(jù)遷移到SWAP分區(qū) 中,用于臨時擴充物理內(nèi)存資源的容量。由于SWAP分區(qū)本質(zhì)上是存儲介質(zhì),其性能會明顯 比物理內(nèi)存的性能差。如果SWAP分區(qū)中的數(shù)據(jù)需要頻繁訪問,則需要操作系統(tǒng)啟動SWAP 換入操作,將SWAP分區(qū)中的數(shù)據(jù)換入到物理內(nèi)存中。因此,操作系統(tǒng)需要負(fù)責(zé)將數(shù)據(jù)在物 理內(nèi)存和SWAP分區(qū)間進行遷移,也就是SWAP操作。
[0003]現(xiàn)有技術(shù)中的SWAP操作,操作系統(tǒng)的開銷比較大,影響計算機系統(tǒng)的性能。
【發(fā)明內(nèi)容】
[0004] 本發(fā)明實施例提供一種交換操作的實現(xiàn)方法和裝置,用W解決現(xiàn)有技術(shù)中操作系 統(tǒng)的開銷大,影響計算機系統(tǒng)的性能的技術(shù)問題。
[0005] 第一方面,本發(fā)明實施例提供一種交換操作的實現(xiàn)方法,包括:
[0006] 內(nèi)存控制器接收處理器發(fā)送的第一請求;其中,所述第一請求包括第一虛擬地址, 用于請求所述內(nèi)存控制器為所述第一虛擬地址對應(yīng)的第一數(shù)據(jù)分配第一空閑物理內(nèi)存頁 面;
[0007] 所述內(nèi)存控制器根據(jù)當(dāng)前空閑物理內(nèi)存空間狀態(tài)和所述第一請求的優(yōu)先級判斷 是否為所述第一數(shù)據(jù)分配所述第一空閑物理內(nèi)存頁面;
[0008] 若所述內(nèi)存控制器為所述第一數(shù)據(jù)分配了所述第一空閑物理內(nèi)存頁面,則所述內(nèi) 存控制器根據(jù)剩余的空閑物理內(nèi)存空間狀態(tài)判斷是否啟動SWAP換出操作。
[0009] 結(jié)合第一方面,在第一方面的第一種可能的實施方式中,所述內(nèi)存控制器根據(jù)當(dāng) 前空閑物理內(nèi)存空間狀態(tài)和所述第一請求的優(yōu)先級判斷是否為所述第一數(shù)據(jù)分配所述第 一空閑物理內(nèi)存頁面,包括:
[0010] 所述內(nèi)存控制器判斷當(dāng)前空閑物理內(nèi)存空間是否大于第一闊值;
[0011] 若是,則所述內(nèi)存控制器為所述第一數(shù)據(jù)分配所述第一空閑物理內(nèi)存頁面;若否, 則所述內(nèi)存控制器判斷所述第一請求的優(yōu)先級是否大于第二闊值;
[0012] 若是,則所述內(nèi)存控制器為所述第一數(shù)據(jù)分配所述第一空閑物理內(nèi)存頁面;
[001引若否,則所述內(nèi)存控制器將所述第一數(shù)據(jù)存儲至所述SWAP分區(qū)。
[0014] 結(jié)合第一方面的第一種可能的實施方式,在第一方面的第二種可能的實施方式 中,若所述內(nèi)存控制器為所述第一數(shù)據(jù)分配了所述第一空閑物理內(nèi)存頁面,則所述內(nèi)存控 制器根據(jù)剩余的空閑物理內(nèi)存空間狀態(tài)判斷是否啟動SWAP換出操作,包括:
[0015] 若所述內(nèi)存控制器判斷剩余的空閑物理內(nèi)存空間狀態(tài)小于第H闊值,則所述內(nèi)存 控制器啟動SWAP換出操作。
[0016] 結(jié)合第一方面的第二種可能的實施方式,在第一方面的第H種可能的實施方式 中,所述內(nèi)存控制器啟動SWAP換出操作,具體包括:
[0017] 所述內(nèi)存控制器確定訪問頻度小于第五闊值的物理內(nèi)存頁面;
[001引所述內(nèi)存控制器在所述SWAP分區(qū)中選擇第一磁盤片段;
[0019] 所述內(nèi)存控制器將所述訪問頻度小于第五闊值的物理內(nèi)存頁面中的數(shù)據(jù)遷移至 所述第一磁盤片段;
[0020] 所述內(nèi)存控制器將所述第一虛擬地址和所述第一磁盤片段的映射關(guān)系增加至 SWAP分區(qū)映射表中;其中,所述SWAP分區(qū)映射表包括各個虛擬地址和各個虛擬地址對應(yīng)的 數(shù)據(jù)在所述SWAP分區(qū)中的存儲位置之間的映射關(guān)系。
[0021] 結(jié)合第一方面,在第一方面的第四種可能的實施方式中,所述方法還包括:
[0022] 所述內(nèi)存控制器根據(jù)當(dāng)前SWAP分區(qū)的第二數(shù)據(jù)的訪問頻度判斷是否啟動SWAP換 入操作。
[0023] 結(jié)合第一方面的第四種可能的實施方式,在第一方面的第五種可能的實施方式 中,所述內(nèi)存控制器根據(jù)當(dāng)前SWAP分區(qū)的第二數(shù)據(jù)的訪問頻度確定是否啟動SWAP換入操 作,包括:
[0024] 若所述內(nèi)存控制器判斷當(dāng)前SWAP分區(qū)中的第二數(shù)據(jù)的訪問頻度大于第四闊值, 則所述內(nèi)存控制器啟動SWAP換入操作。
[0025] 結(jié)合第一方面的第五種可能的實施方式,在第一方面的第六種可能的實施方式 中,所述內(nèi)存控制器啟動SWAP換入操作,具體包括:
[0026] 所述內(nèi)存控制器為所述第二數(shù)據(jù)分配第二空閑物理內(nèi)存頁面;
[0027] 所述內(nèi)存控制器將所述第二數(shù)據(jù)遷移至所述第二空閑物理內(nèi)存頁面;
[002引所述內(nèi)存控制器更新SWAP分區(qū)映射表。
[0029] 結(jié)合第一方面,在第一方面的第走種可能的實施方式中,所述方法還包括:
[0030] 若所述內(nèi)存控制器判斷所述當(dāng)前空閑物理內(nèi)存空間狀態(tài)和當(dāng)前未分配的SWAP分 區(qū)狀態(tài)均小于第六闊值,則所述內(nèi)存控制器通知操作系統(tǒng)執(zhí)行缺頁異常處理。
[0031] 結(jié)合第一方面至第一方面的第走種可能的實施方式中的任一項,在第一方面的第 八種可能的實施方式中,所述方法還包括:
[0032]所述內(nèi)存控制器接收處理器發(fā)送的第二請求;其中,所述第二請求攜帶第二虛擬 地址;
[0033] 所述內(nèi)存控制器判斷所述第二虛擬地址是否合法;
[0034] 若不合法,則所述內(nèi)存控制器上報所述第二虛擬地址錯誤給操作系統(tǒng);
[0035] 若合法,則所述內(nèi)存控制器根據(jù)頁表判斷所述內(nèi)存控制器是否為所述第二虛擬地 址對應(yīng)的第H數(shù)據(jù)分配了存儲空間,獲得判斷結(jié)果;
[0036] 所述內(nèi)存控制器根據(jù)所述判斷結(jié)果執(zhí)行第一操作。
[0037] 結(jié)合第一方面的第八種可能的實施方式,在第一方面的第九種可能的實施方式 中,若所述判斷結(jié)果為所述內(nèi)存控制器為所述第H數(shù)據(jù)分配了所述存儲空間,則所述第一 操作包括:
[003引所述內(nèi)存控制器根據(jù)所述頁表判斷所述第H數(shù)據(jù)是否存放于SWAP分區(qū)中;
[0039] 若是,則所述內(nèi)存控制器根據(jù)SWAP分區(qū)映射表確定所述第H數(shù)據(jù)存儲在所述 SWAP分區(qū)中的位置和長度信息;
[0040] 所述內(nèi)存控制器根據(jù)所述第H數(shù)據(jù)存儲在所述SWAP分區(qū)中的位置訪問所述第H 數(shù)據(jù);
[0041] 所述內(nèi)存控制器將所述第H數(shù)據(jù)發(fā)送給所述處理器;
[0042] 若否,則所述內(nèi)存控制器確定所述第H數(shù)據(jù)存儲在物理內(nèi)存空間中;
[0043] 所述內(nèi)存控制器根據(jù)所述頁表確定所述第H數(shù)據(jù)在所述物理內(nèi)存空間中對應(yīng)的 物理地址;
[0044] 所述內(nèi)存控制器根據(jù)所述物理地址訪問所述第H數(shù)據(jù);
[0045] 所述內(nèi)存控制器將所述第H數(shù)據(jù)發(fā)送給所述處理器。
[0046] 結(jié)合第一方面的第八種可能的實施方式,在第一方面的第十種可能的實施方式 中,若所述判斷結(jié)果為所述內(nèi)存控制器沒有為所述第H數(shù)據(jù)分配所述存儲空間,則所述第 一操作包括:
[0047] 所述內(nèi)存控制器執(zhí)行缺頁中斷處理,為所述第H數(shù)據(jù)分配所述存儲空間。
[0048] 第二方面,本發(fā)明實施例提供一種交換操作的實現(xiàn)裝置,包括:
[0049] 接收模塊,用于接收處理器發(fā)送的第一請求;其中,所述第一請求包括第一虛擬地 址,用于請求為所述第一虛擬地址對應(yīng)的第一數(shù)據(jù)分配第一空閑物理內(nèi)存頁面;
[0050] 判斷分配模塊,用于根據(jù)當(dāng)前空閑物理內(nèi)存空間狀態(tài)和所述第一請求的優(yōu)先級判 斷是否為所述第一數(shù)據(jù)分配所述第一空閑物理內(nèi)存頁面;還用于若所述判斷分配模塊為所 述第一數(shù)據(jù)分配了所述第一空閑物理內(nèi)存頁面,則根據(jù)剩余的空閑物理內(nèi)存空間狀態(tài)判斷 是否啟動SWAP換出操作。
[0051] 結(jié)合第二方面,在第二方面的第一種可能的實施方式中,所述判斷分配模塊,具體 用于判斷當(dāng)前空閑物理內(nèi)存空間是否大于第一闊值;若是,則為所述第一數(shù)據(jù)分配所述第 一空閑物理內(nèi)存頁面;若否,則判斷所述第一請求的優(yōu)先級是否大于第二闊值;若是,則為 所述第一數(shù)據(jù)分配所述第一空閑物理內(nèi)存頁面;若否,則將所述第一數(shù)據(jù)存儲至所述SWAP 分區(qū)。
[0052] 結(jié)合第二方面的第一種可能的實施方式,在第二方面的第二種可能的實施方式 中,所述判斷分配模塊,具體用于若判斷所述剩余的空閑物理內(nèi)存空間狀態(tài)小于第H闊值, 則確定啟動SWAP換出操作。
[0053] 結(jié)合第二方面的第二種可能的實施方式,在第二方面的第H種可能的實施方式 中,所述判斷分配模塊,具體包括:
[0054] 確定單元,用于確定訪問頻度小于第五闊值的物理內(nèi)存頁面;
[00巧]選擇單元,用于在所述SWAP分區(qū)中選擇第一磁盤片段;
[0056] 第一遷移單元,用于將所述訪問頻度小于第五闊值的物理內(nèi)存頁面中的數(shù)據(jù)遷移 至所述第一磁盤片段;
[0057] 增加單元,用于將所述第一虛擬地址和所述第一磁盤片段的映射關(guān)系增加至SWAP 分區(qū)映射表中;其中,所述SWAP分區(qū)映射表包括各個虛擬地址和各個虛擬地址對應(yīng)的數(shù)據(jù) 在所述SWAP分區(qū)中的存儲位置之間的映射關(guān)系。
[0058] 結(jié)合第二方面,在第二方面的第四種可能的實施方式中,所述判斷分配模塊,還用 于