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