本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,特別涉及一種Linux系統(tǒng)應(yīng)用程序內(nèi)存管理方法及系統(tǒng)。
背景技術(shù):
首先,隨著大數(shù)據(jù)與云計(jì)算等相關(guān)技術(shù)的飛速發(fā)展,連接到互聯(lián)網(wǎng)的設(shè)備數(shù)量不斷增長(zhǎng),到2015年,已達(dá)到150億之多。而數(shù)據(jù)中心的壓力也隨之增加,唯有采用新的技術(shù)才能進(jìn)一步提升其效率和性能。
目前,計(jì)算機(jī)系統(tǒng)的計(jì)算結(jié)果和服務(wù)信息皆臨時(shí)保存在內(nèi)存中,這些數(shù)據(jù)在系統(tǒng)掉電后將丟失,甚至能引起整個(gè)系統(tǒng)的崩潰。因此如何可以有效避免用戶數(shù)據(jù)在系統(tǒng)異常時(shí)出現(xiàn)數(shù)據(jù)丟失的重大損失,是本領(lǐng)域技術(shù)人員需要解決的技術(shù)問(wèn)題。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的是提供一種Linux系統(tǒng)應(yīng)用程序內(nèi)存管理方法及系統(tǒng),能夠?qū)⒁恍?duì)用戶重要的用戶程序在NVDIMM上分配內(nèi)存,從而充分保證在斷電等異常情況發(fā)生時(shí)用戶數(shù)據(jù)能夠得到很好的保存。
為解決上述技術(shù)問(wèn)題,本發(fā)明提供一種Linux系統(tǒng)應(yīng)用程序內(nèi)存管理方法,包括:
根據(jù)輸入的NVDIMM內(nèi)存分配請(qǐng)求,將所述NVDIMM內(nèi)存分配請(qǐng)求對(duì)應(yīng)的進(jìn)程的狀態(tài)標(biāo)志位設(shè)置為NVDIMM內(nèi)存分配,并獲取所述進(jìn)程的ID信息;
將所述ID信息發(fā)送到內(nèi)核中;
所述內(nèi)核根據(jù)所述ID信息,在NVDIMM內(nèi)存中為所述進(jìn)程分配內(nèi)存。
可選的,根據(jù)輸入的NVDIMM內(nèi)存分配請(qǐng)求,將所述NVDIMM內(nèi)存分配請(qǐng)求對(duì)應(yīng)的進(jìn)程的狀態(tài)標(biāo)志位設(shè)置為NVDIMM內(nèi)存分配,包括:
接收輸入的NVDIMM內(nèi)存分配請(qǐng)求;
在鏈表中確定所述NVDIMM內(nèi)存分配請(qǐng)求對(duì)應(yīng)的進(jìn)程;并將所述進(jìn)程的狀態(tài)標(biāo)志位設(shè)置為NVDIMM內(nèi)存分配。
可選的,獲取所述進(jìn)程的ID信息,包括:
遍歷目錄文件的狀態(tài)標(biāo)志位;
獲取所述狀態(tài)標(biāo)志位設(shè)置為NVDIMM內(nèi)存分配對(duì)應(yīng)的進(jìn)程的ID信息。
可選的,將所述ID信息發(fā)送到內(nèi)核中,包括:
用戶空間進(jìn)程創(chuàng)建套接字,并利用所述套接字將所述ID信息發(fā)送到內(nèi)核中。
可選的,所述內(nèi)核根據(jù)所述ID信息,在NVDIMM內(nèi)存中為所述進(jìn)程分配內(nèi)存,包括:
接收函數(shù)接收到所述ID信息,并判斷所述ID信息對(duì)應(yīng)的進(jìn)程的狀態(tài)標(biāo)志位是否為NVDIMM內(nèi)存分配;
若是,則從NVDIMM內(nèi)存中為所述進(jìn)程分配內(nèi)存。
本發(fā)明還提供一種Linux系統(tǒng)應(yīng)用程序內(nèi)存管理系統(tǒng),包括:應(yīng)用程序的管理模塊,用戶和內(nèi)核通信模塊,內(nèi)核處理模塊;其中,
所述應(yīng)用程序的管理模塊,用于根據(jù)輸入的NVDIMM內(nèi)存分配請(qǐng)求,將所述NVDIMM內(nèi)存分配請(qǐng)求對(duì)應(yīng)的進(jìn)程的狀態(tài)標(biāo)志位設(shè)置為NVDIMM內(nèi)存分配,并獲取所述進(jìn)程的ID信息;
所述用戶和內(nèi)核通信模塊,用于將所述ID信息發(fā)送到內(nèi)核中;
所述內(nèi)核處理模塊,用于所述內(nèi)核根據(jù)所述ID信息,在NVDIMM內(nèi)存中為所述進(jìn)程分配內(nèi)存。
可選的,所述應(yīng)用程序的管理模塊,包括:
輸入單元,用于接收輸入的NVDIMM內(nèi)存分配請(qǐng)求;
狀態(tài)標(biāo)志位設(shè)置單元,用于在鏈表中確定所述NVDIMM內(nèi)存分配請(qǐng)求對(duì)應(yīng)的進(jìn)程;并將所述進(jìn)程的狀態(tài)標(biāo)志位設(shè)置為NVDIMM內(nèi)存分配。
可選的,所述應(yīng)用程序的管理模塊,包括:
遍歷單元,用于遍歷目錄文件的狀態(tài)標(biāo)志位;
ID信息獲取單元,用于獲取所述狀態(tài)標(biāo)志位設(shè)置為NVDIMM內(nèi)存分配對(duì)應(yīng)的進(jìn)程的ID信息。
可選的,所述用戶和內(nèi)核通信模塊具體為用戶空間進(jìn)程創(chuàng)建套接字,并利用所述套接字將所述ID信息發(fā)送到內(nèi)核中。
可選的,所述內(nèi)核處理模塊,包括:
接收單元,用于接收函數(shù)接收到所述ID信息;
判斷單元,用于判斷所述ID信息對(duì)應(yīng)的進(jìn)程的狀態(tài)標(biāo)志位是否為NVDIMM內(nèi)存分配;
內(nèi)存分配單元,用于若為NVDIMM內(nèi)存分配,則從NVDIMM內(nèi)存中為所述進(jìn)程分配內(nèi)存。
本發(fā)明所提供的一種Linux系統(tǒng)應(yīng)用程序內(nèi)存管理方法,包括:根據(jù)輸入的NVDIMM內(nèi)存分配請(qǐng)求,將所述NVDIMM內(nèi)存分配請(qǐng)求對(duì)應(yīng)的進(jìn)程的狀態(tài)標(biāo)志位設(shè)置為NVDIMM內(nèi)存分配,并獲取所述進(jìn)程的ID信息;將所述ID信息發(fā)送到內(nèi)核中;所述內(nèi)核根據(jù)所述ID信息,在NVDIMM內(nèi)存中為所述進(jìn)程分配內(nèi)存;
可見(jiàn),該方法使用戶層和內(nèi)核層實(shí)現(xiàn)通信,使用戶可以將需要進(jìn)行NVDIMM內(nèi)存分配的進(jìn)程告知內(nèi)核,從而使內(nèi)核實(shí)現(xiàn)對(duì)其N(xiāo)VDIMM內(nèi)存分配;即充分利用NVDIMM能夠在完全斷電的時(shí)候依然能夠保存完整內(nèi)存數(shù)據(jù)的特點(diǎn),將一些對(duì)用戶重要的用戶程序在NVDIMM上分配內(nèi)存,從而充分保證在斷電等異常情況發(fā)生時(shí)用戶數(shù)據(jù)能夠得到很好的保存;本發(fā)明還提供了一種Linux系統(tǒng)應(yīng)用程序內(nèi)存管理系統(tǒng),具有上述有益效果,在此不再贅述。
附圖說(shuō)明
為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)提供的附圖獲得其他的附圖。
圖1為本發(fā)明實(shí)施例所提供的Linux系統(tǒng)應(yīng)用程序內(nèi)存管理方法的流程圖;
圖2為本發(fā)明實(shí)施例所提供的應(yīng)用程序的管理模塊的流程示意圖;
圖3為本發(fā)明實(shí)施例所提供的內(nèi)核層和用戶層實(shí)時(shí)通信流程示意圖;
圖4為本發(fā)明實(shí)施例所提供的內(nèi)核內(nèi)存分配管理流程圖示意圖;
圖5為本發(fā)明實(shí)施例所提供的Linux系統(tǒng)應(yīng)用程序內(nèi)存管理系統(tǒng)的結(jié)構(gòu)框圖。
具體實(shí)施方式
本發(fā)明的核心是提供一種Linux系統(tǒng)應(yīng)用程序內(nèi)存管理方法及系統(tǒng),能夠?qū)⒁恍?duì)用戶重要的用戶程序在NVDIMM上分配內(nèi)存,從而充分保證在斷電等異常情況發(fā)生時(shí)用戶數(shù)據(jù)能夠得到很好的保存。
為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
NVDIMM是在一種集成了DRAM+非易失性內(nèi)存芯片的內(nèi)存條規(guī)格,能夠在完全斷電的時(shí)候依然保存完整內(nèi)存數(shù)據(jù)NVDIMM作為一種新的器件類(lèi)型,可以集成到標(biāo)準(zhǔn)的Intel x86服務(wù)器中,用來(lái)作為存儲(chǔ)層次中的寫(xiě)cache。NVDIMM基于DRAM,寫(xiě)次數(shù)無(wú)限,極大的增強(qiáng)了系統(tǒng)的性能。使用NVDIMM允許Flash SSDs主要用于讀數(shù)據(jù),這就極大地延長(zhǎng)了SSDs的壽命。如果數(shù)據(jù)中心集成了SSDs和NVDIMM,就會(huì)獲得非常好的ROI性能。因此,本實(shí)施例利用NVDIMM解決系統(tǒng)異常掉電情況下,內(nèi)存數(shù)據(jù)的保存工作,并且能夠在系統(tǒng)恢復(fù)正常運(yùn)行后繼續(xù)之前的工作。具體請(qǐng)參考圖1,圖1為本發(fā)明實(shí)施例所提供的Linux系統(tǒng)應(yīng)用程序內(nèi)存管理方法的流程圖;該方法可以包括:
S100、根據(jù)輸入的NVDIMM內(nèi)存分配請(qǐng)求,將所述NVDIMM內(nèi)存分配請(qǐng)求對(duì)應(yīng)的進(jìn)程的狀態(tài)標(biāo)志位設(shè)置為NVDIMM內(nèi)存分配,并獲取所述進(jìn)程的ID信息;
具體的,NVDIMM內(nèi)存分配請(qǐng)求可以包含需要進(jìn)行NVDIMM內(nèi)存分配的進(jìn)行(也即應(yīng)用程序)的信息。本實(shí)施例中為了使內(nèi)核能夠知道哪些進(jìn)程是需要分配N(xiāo)VDIMM內(nèi)存的,因此可以為進(jìn)程設(shè)置狀態(tài)標(biāo)志位。通過(guò)狀態(tài)標(biāo)志位的狀態(tài)確定該進(jìn)程是否需要進(jìn)行NVDIMM內(nèi)存分配。例如當(dāng)狀態(tài)標(biāo)志位設(shè)置為1時(shí),表示該進(jìn)程需要NVDIMM內(nèi)存分配;當(dāng)狀態(tài)標(biāo)志位設(shè)置為0時(shí),表示該進(jìn)程不需要NVDIMM內(nèi)存分配。當(dāng)然本實(shí)施例對(duì)具狀態(tài)標(biāo)志位的具體設(shè)置形式并不進(jìn)行限定,只需要可以區(qū)分是否需要進(jìn)行NVDIMM內(nèi)存分配即可。
通過(guò)對(duì)進(jìn)程的狀態(tài)標(biāo)志位的判斷可以確定哪些進(jìn)程需要進(jìn)行NVDIMM內(nèi)存分配,進(jìn)而可以將這些需要進(jìn)行NVDIMM內(nèi)存分配的進(jìn)程通知給內(nèi)核,以便于內(nèi)核對(duì)其進(jìn)行NVDIMM內(nèi)存分配。一般情況下每一個(gè)進(jìn)程都會(huì)有其唯一的標(biāo)識(shí)。系統(tǒng)可以通過(guò)該標(biāo)識(shí)確認(rèn)該進(jìn)程的身份。通常情況下都利用ID信息來(lái)表征進(jìn)程身份。因此在確定需要進(jìn)行NVDIMM內(nèi)存分配的進(jìn)程后,還需要獲取該進(jìn)程的ID信息,將該ID信息告知內(nèi)核后,內(nèi)核便可以根據(jù)該ID信息清楚的確定需要進(jìn)行NVDIMM內(nèi)存分配的進(jìn)程。
進(jìn)一步為了方便用戶對(duì)其應(yīng)用程序即進(jìn)程的管理,可以通過(guò)鏈表來(lái)記錄用戶全部的進(jìn)程信息,這樣用戶在需要進(jìn)行NVDIMM內(nèi)存分配操作時(shí)僅需要在鏈表中確定對(duì)應(yīng)的進(jìn)程,然后設(shè)置該進(jìn)程的狀態(tài)標(biāo)志位即可。且基于linux系統(tǒng)的應(yīng)用程序在/proc目錄下有完整的描述,因此可以設(shè)計(jì)一個(gè)保存用戶相關(guān)信息的鏈表結(jié)構(gòu),通過(guò)讀取各進(jìn)程目錄下的stat文件,然后將相關(guān)信息寫(xiě)入到所設(shè)計(jì)的鏈表結(jié)構(gòu)中,可對(duì)鏈表實(shí)施動(dòng)態(tài)的查詢、增加以及刪除等操作,當(dāng)用戶程序(即應(yīng)用程序也即進(jìn)程)需要申請(qǐng)NVDIMM的內(nèi)存分配時(shí),可動(dòng)態(tài)添加到連表當(dāng)中并設(shè)置相應(yīng)的狀態(tài)標(biāo)志位,然后通過(guò)內(nèi)核和用戶層消息通信模塊通知到內(nèi)核,實(shí)現(xiàn)內(nèi)存分配。即優(yōu)選的,根據(jù)輸入的NVDIMM內(nèi)存分配請(qǐng)求,將所述NVDIMM內(nèi)存分配請(qǐng)求對(duì)應(yīng)的進(jìn)程的狀態(tài)標(biāo)志位設(shè)置為NVDIMM內(nèi)存分配,包括:
接收輸入的NVDIMM內(nèi)存分配請(qǐng)求;
在鏈表中確定所述NVDIMM內(nèi)存分配請(qǐng)求對(duì)應(yīng)的進(jìn)程;并將所述進(jìn)程的狀態(tài)標(biāo)志位設(shè)置為NVDIMM內(nèi)存分配。
在該鏈表結(jié)構(gòu)下可以通過(guò)遍歷的形式確定需要進(jìn)行NVDIMM內(nèi)存分配的進(jìn)程。即可選的,獲取所述進(jìn)程的ID信息可以包括:
遍歷目錄文件的狀態(tài)標(biāo)志位;
獲取所述狀態(tài)標(biāo)志位設(shè)置為NVDIMM內(nèi)存分配對(duì)應(yīng)的進(jìn)程的ID信息。
具體的,上述具體過(guò)程請(qǐng)參考圖2,通過(guò)讀取/proc目錄文件實(shí)現(xiàn)對(duì)應(yīng)用程序的變量。該例子中可以通過(guò)文件的第一個(gè)字符是否為數(shù)字判定其是否需要進(jìn)行NVDIMM內(nèi)存分配。若不是數(shù)字則,不需要,若是則需要。當(dāng)是數(shù)值時(shí)就需要獲取該進(jìn)程對(duì)應(yīng)的進(jìn)程信息(例如ID信息)。與內(nèi)核建立通信并將ID數(shù)據(jù)傳給內(nèi)核。由內(nèi)核處理該信息實(shí)現(xiàn)NVDIMM內(nèi)存分配。進(jìn)一步可以將需要進(jìn)行NVDIMM內(nèi)存分配的進(jìn)程信息通過(guò)顯示窗口顯示給用戶。
S110、將所述ID信息發(fā)送到內(nèi)核中;
具體的,用戶層(即用戶態(tài))和內(nèi)核層(即內(nèi)核態(tài))進(jìn)行通信實(shí)現(xiàn)ID信息的傳遞。該過(guò)程可以由用戶和內(nèi)核通信模塊實(shí)現(xiàn),該模塊能夠?qū)崿F(xiàn)通信的原理可以參考圖3。內(nèi)核態(tài)規(guī)定通過(guò)netlink_kernel_create()創(chuàng)建套接字,并指明接收函數(shù)。用戶態(tài)中用戶空間進(jìn)程創(chuàng)建套接字,并利用所述套接字將所述ID信息發(fā)送到內(nèi)核中。內(nèi)核態(tài)接收函數(shù)收到用戶空間進(jìn)程ID。從而實(shí)現(xiàn)用戶空間與內(nèi)核空間的通信。
S120、所述內(nèi)核根據(jù)所述ID信息,在NVDIMM內(nèi)存中為所述進(jìn)程分配內(nèi)存。
具體的,內(nèi)核直接根據(jù)ID信息,在NVDIMM內(nèi)存中為所述進(jìn)程分配內(nèi)存。
進(jìn)一步為了提高需要進(jìn)行NVDIMM內(nèi)存分配進(jìn)程確定的準(zhǔn)確性。內(nèi)核在進(jìn)行NVDIMM內(nèi)存分配時(shí)可以再次確定該進(jìn)程是否為需要進(jìn)行NVDIMM內(nèi)存分配的內(nèi)存。即優(yōu)選的,所述內(nèi)核根據(jù)所述ID信息,在NVDIMM內(nèi)存中為所述進(jìn)程分配內(nèi)存可以包括:
接收函數(shù)接收到所述ID信息,并判斷所述ID信息對(duì)應(yīng)的進(jìn)程的狀態(tài)標(biāo)志位是否為NVDIMM內(nèi)存分配;
若是,則從NVDIMM內(nèi)存中為所述進(jìn)程分配內(nèi)存。
具體的,在用戶層數(shù)據(jù)發(fā)送到內(nèi)核后,通過(guò)用戶和內(nèi)核建立通信,內(nèi)核接收消息,然后將數(shù)據(jù)添加到內(nèi)核相應(yīng)的鏈表結(jié)構(gòu)中,通過(guò)狀態(tài)標(biāo)志位判斷,實(shí)現(xiàn)真正的申請(qǐng)NVDIMM內(nèi)存處理。
舉例說(shuō)明該步驟,具體請(qǐng)參考圖4,內(nèi)核接收用戶層數(shù)據(jù)如ID信息后,判斷狀態(tài)標(biāo)志位flag是否為1,若是,則在NVDIMM內(nèi)存中為所述進(jìn)程分配內(nèi)存;若否,則不在NVDIMM內(nèi)存中為所述進(jìn)程分配內(nèi)存。進(jìn)一步當(dāng)確定flag為0時(shí),可以向用戶發(fā)送提示信息。以便用戶再次確認(rèn)是否出現(xiàn)狀態(tài)標(biāo)志位標(biāo)記錯(cuò)誤。避免誤分配情況的發(fā)生。提高系統(tǒng)的準(zhǔn)確性。
進(jìn)一步,這里的需要進(jìn)行NVDIMM內(nèi)存分配的進(jìn)程可以是用戶更加關(guān)注的進(jìn)程,例如管理信息資產(chǎn)的進(jìn)程等,這樣可以使自己的關(guān)鍵信息在系統(tǒng)發(fā)生異常時(shí)能夠得到保存。比如銀行數(shù)據(jù)庫(kù)信息等。
以用戶層某一程序要求分配N(xiāo)VDIMM內(nèi)存為例,用戶層首先查找管理,用戶通知內(nèi)核,內(nèi)核實(shí)時(shí)動(dòng)態(tài)分配處理這一結(jié)構(gòu)的實(shí)現(xiàn)過(guò)程。
基于上述技術(shù)方案,本發(fā)明實(shí)施例提供的Linux系統(tǒng)應(yīng)用程序內(nèi)存管理方法,主要考慮NVDIMM內(nèi)存非易失性的特點(diǎn)、用戶進(jìn)程信息存儲(chǔ)在/proc目錄下的特點(diǎn)以及內(nèi)核和用戶可實(shí)時(shí)建立通信的特點(diǎn),采用基于用戶層應(yīng)用管理、內(nèi)核與用戶實(shí)時(shí)通信、內(nèi)核實(shí)時(shí)處理數(shù)據(jù)分配內(nèi)存的方法,對(duì)用戶的關(guān)鍵應(yīng)用實(shí)現(xiàn)在NVDIMM上的內(nèi)存分配,從而實(shí)現(xiàn)數(shù)據(jù)的非易失性,可充分保證用戶的數(shù)據(jù)安全。
下面對(duì)本發(fā)明實(shí)施例提供的Linux系統(tǒng)應(yīng)用程序內(nèi)存管理系統(tǒng)進(jìn)行介紹,下文描述的Linux系統(tǒng)應(yīng)用程序內(nèi)存管理系統(tǒng)與上文描述的Linux系統(tǒng)應(yīng)用程序內(nèi)存管理方法可相互對(duì)應(yīng)參照。
請(qǐng)參考圖5,圖5為本發(fā)明實(shí)施例所提供的Linux系統(tǒng)應(yīng)用程序內(nèi)存管理系統(tǒng)的結(jié)構(gòu)框圖;該系統(tǒng)可以包括:應(yīng)用程序的管理模塊100,用戶和內(nèi)核通信模塊200,內(nèi)核處理模塊300;其中,
所述應(yīng)用程序的管理模塊100,用于根據(jù)輸入的NVDIMM內(nèi)存分配請(qǐng)求,將所述NVDIMM內(nèi)存分配請(qǐng)求對(duì)應(yīng)的進(jìn)程的狀態(tài)標(biāo)志位設(shè)置為NVDIMM內(nèi)存分配,并獲取所述進(jìn)程的ID信息;
所述用戶和內(nèi)核通信模塊200,用于將所述ID信息發(fā)送到內(nèi)核中;
所述內(nèi)核處理模塊300,用于所述內(nèi)核根據(jù)所述ID信息,在NVDIMM內(nèi)存中為所述進(jìn)程分配內(nèi)存。
具體的,用戶和內(nèi)核通信模塊可以實(shí)現(xiàn)雙向的全雙工通信,內(nèi)核層可以接收用戶層發(fā)送來(lái)的消息,同樣的,用戶層也可以接收內(nèi)核層發(fā)來(lái)的消息,當(dāng)兩者需要通信時(shí)可通過(guò)該模塊完成。
其中,應(yīng)用程序的管理模塊也即應(yīng)用程序的管理器可以位于管理前端可實(shí)時(shí)管理用戶程序,可向內(nèi)核發(fā)送消息,可接受來(lái)自內(nèi)核的消息。用戶和內(nèi)核通信模塊可讓用戶和內(nèi)核層實(shí)時(shí)通信。內(nèi)核處理模塊可動(dòng)態(tài)分配管理NVDIMM內(nèi)存,綜上可有效提高用戶程序內(nèi)存申請(qǐng)靈活性,提高數(shù)據(jù)安全性。
具體的,該系統(tǒng)在用戶層實(shí)現(xiàn)所有應(yīng)用程序的管理器,用以對(duì)各應(yīng)用程序進(jìn)行管理,可實(shí)時(shí)對(duì)這些程序進(jìn)行增刪查詢等操作;在用戶和內(nèi)核通信模塊,用以接收和傳輸用戶和進(jìn)程之間的數(shù)據(jù)。由內(nèi)核處理模塊實(shí)現(xiàn)對(duì)數(shù)據(jù)處理從而實(shí)現(xiàn)內(nèi)存分配管理。
基于上述實(shí)施例,所述應(yīng)用程序的管理模塊100可以包括:
輸入單元,用于接收輸入的NVDIMM內(nèi)存分配請(qǐng)求;
狀態(tài)標(biāo)志位設(shè)置單元,用于在鏈表中確定所述NVDIMM內(nèi)存分配請(qǐng)求對(duì)應(yīng)的進(jìn)程;并將所述進(jìn)程的狀態(tài)標(biāo)志位設(shè)置為NVDIMM內(nèi)存分配。
基于上述實(shí)施例,所述應(yīng)用程序的管理模塊100可以包括:
遍歷單元,用于遍歷目錄文件的狀態(tài)標(biāo)志位;
ID信息獲取單元,用于獲取所述狀態(tài)標(biāo)志位設(shè)置為NVDIMM內(nèi)存分配對(duì)應(yīng)的進(jìn)程的ID信息。
基于上述實(shí)施例,所述用戶和內(nèi)核通信模塊200具體為用戶空間進(jìn)程創(chuàng)建套接字,并利用所述套接字將所述ID信息發(fā)送到內(nèi)核中。
基于上述實(shí)施例,所述內(nèi)核處理模塊300可以包括:
接收單元,用于接收函數(shù)接收到所述ID信息;
判斷單元,用于判斷所述ID信息對(duì)應(yīng)的進(jìn)程的狀態(tài)標(biāo)志位是否為NVDIMM內(nèi)存分配;
內(nèi)存分配單元,用于若為NVDIMM內(nèi)存分配,則從NVDIMM內(nèi)存中為所述進(jìn)程分配內(nèi)存。
基于上述技術(shù)方案,本發(fā)明實(shí)施例提供的Linux系統(tǒng)應(yīng)用程序內(nèi)存管理系統(tǒng),該系統(tǒng)中應(yīng)用程序的管理模塊主要實(shí)現(xiàn)對(duì)所有進(jìn)程進(jìn)行遍歷處理,可實(shí)時(shí)查詢各應(yīng)用層程序在內(nèi)核中所處進(jìn)程的狀態(tài),可動(dòng)態(tài)實(shí)現(xiàn)刪除和增加的功能,實(shí)現(xiàn)動(dòng)態(tài)監(jiān)視與管理。用戶和內(nèi)核通信模塊主要實(shí)現(xiàn)內(nèi)核層與用戶層之netlink通信的特性,主要是指能隨時(shí)接收用戶層數(shù)據(jù)并及時(shí)處理。內(nèi)核處理模塊主要實(shí)現(xiàn)及時(shí)根據(jù)狀態(tài)標(biāo)識(shí)位置判斷是否分配N(xiāo)VDIMM上的內(nèi)存。該系統(tǒng)解決了現(xiàn)有技術(shù)中只能分配主存上的內(nèi)存,無(wú)法實(shí)現(xiàn)動(dòng)態(tài)分配N(xiāo)VDIMM上的內(nèi)存,當(dāng)系統(tǒng)發(fā)生異常如系統(tǒng)掉電后,用戶數(shù)據(jù)發(fā)生丟失無(wú)法找回的風(fēng)險(xiǎn)的問(wèn)題;對(duì)用戶數(shù)據(jù)保障方面具有很高的技術(shù)價(jià)值。
說(shuō)明書(shū)中各個(gè)實(shí)施例采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說(shuō)明的都是與其他實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同相似部分互相參見(jiàn)即可。對(duì)于實(shí)施例公開(kāi)的裝置而言,由于其與實(shí)施例公開(kāi)的方法相對(duì)應(yīng),所以描述的比較簡(jiǎn)單,相關(guān)之處參見(jiàn)方法部分說(shuō)明即可。
專(zhuān)業(yè)人員還可以進(jìn)一步意識(shí)到,結(jié)合本文中所公開(kāi)的實(shí)施例描述的各示例的單元及算法步驟,能夠以電子硬件、計(jì)算機(jī)軟件或者二者的結(jié)合來(lái)實(shí)現(xiàn),為了清楚地說(shuō)明硬件和軟件的可互換性,在上述說(shuō)明中已經(jīng)按照功能一般性地描述了各示例的組成及步驟。這些功能究竟以硬件還是軟件方式來(lái)執(zhí)行,取決于技術(shù)方案的特定應(yīng)用和設(shè)計(jì)約束條件。專(zhuān)業(yè)技術(shù)人員可以對(duì)每個(gè)特定的應(yīng)用來(lái)使用不同方法來(lái)實(shí)現(xiàn)所描述的功能,但是這種實(shí)現(xiàn)不應(yīng)認(rèn)為超出本發(fā)明的范圍。
結(jié)合本文中所公開(kāi)的實(shí)施例描述的方法或算法的步驟可以直接用硬件、處理器執(zhí)行的軟件模塊,或者二者的結(jié)合來(lái)實(shí)施。軟件模塊可以置于隨機(jī)存儲(chǔ)器(RAM)、內(nèi)存、只讀存儲(chǔ)器(ROM)、電可編程ROM、電可擦除可編程ROM、寄存器、硬盤(pán)、可移動(dòng)磁盤(pán)、CD-ROM、或技術(shù)領(lǐng)域內(nèi)所公知的任意其它形式的存儲(chǔ)介質(zhì)中。
以上對(duì)本發(fā)明所提供的一種Linux系統(tǒng)應(yīng)用程序內(nèi)存管理方法及系統(tǒng)進(jìn)行了詳細(xì)介紹。本文中應(yīng)用了具體個(gè)例對(duì)本發(fā)明的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說(shuō)明只是用于幫助理解本發(fā)明的方法及其核心思想。應(yīng)當(dāng)指出,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來(lái)說(shuō),在不脫離本發(fā)明原理的前提下,還可以對(duì)本發(fā)明進(jìn)行若干改進(jìn)和修飾,這些改進(jìn)和修飾也落入本發(fā)明權(quán)利要求的保護(hù)范圍內(nèi)。