專利名稱:Linux平臺物理內(nèi)存信息監(jiān)測系統(tǒng)的制作方法
技術領域:
本發(fā)明涉及一種物理內(nèi)存信息監(jiān)測系統(tǒng),尤其涉及一種通過內(nèi)核補丁 加內(nèi)核模塊的方式實現(xiàn)的Linux平臺物理內(nèi)存信息監(jiān)測系統(tǒng)。
技術背景在Linux系統(tǒng)中,資源管理往往是評價操作系統(tǒng)優(yōu)劣的一個重要評價 標準,而內(nèi)存管理又是資源管理中及其重要的一部分,因此對內(nèi)存管理的 監(jiān)測具有非常重要的意義。Linux內(nèi)核是一種宏內(nèi)核的系統(tǒng),進程管理、 內(nèi)存管理和文件系統(tǒng)全部運行在內(nèi)核空間,而應用程序通常運行于用戶空 間。由于當前Linux系統(tǒng)的內(nèi)核程序本身并沒有考慮到各種各樣的測試需 求和考慮到內(nèi)核的安全性和效率,當前的內(nèi)核并沒有開放很多信息,比如 內(nèi)存相關的信息等。因此,目前的系統(tǒng)很難在用戶空間獲取內(nèi)存的相關信,E、 o中國發(fā)明專利說明書CN14780878A (公告日2004年03月10日)公 開了一種使用/proc/meminfo文件來獲取內(nèi)存信息的方法,但是這種方法 只能夠提供內(nèi)存總體的使用和空閑信息,但是對于各種裝載Linux操作平 臺的硬件系統(tǒng),尤其是各種存儲資源首先但需要提供復雜內(nèi)存操作的嵌入 式Linux平臺,如第三代移動通信系統(tǒng)WCDMA手機平臺來說,通過 /proc/meminfo文件獲取的這些內(nèi)存信息是不夠的。由于內(nèi)核模塊屬于運行時向內(nèi)核添加的代碼,主要提供了用戶干預內(nèi)核行為的一種手段,因此本領域中的一般技術人員通常還會通過內(nèi)核模塊 的方式來獲取當前內(nèi)核中己經(jīng)存在的一些信息。但是,對于目前內(nèi)核不存 在的一些信息,通過所述內(nèi)核模塊的方式是沒法獲取的,因此僅僅通過內(nèi) 核模塊的方式來獲取內(nèi)存信息的方法也存在著一定的局限性,無法獲取詳 細的物理內(nèi)存信息。 發(fā)明內(nèi)容本發(fā)明所要解決的技術問題是提供一種Linux平臺物理內(nèi)存信息監(jiān) 測系統(tǒng),可靜態(tài)或動態(tài)地監(jiān)測Linux平臺下物理內(nèi)存的使用狀況,以優(yōu)化 Linux平臺物理內(nèi)存資源的使用。為解決上述技術問題,本發(fā)明提供一種Linux平臺物理內(nèi)存信息監(jiān)測 系統(tǒng),包括內(nèi)核補丁 (12)、內(nèi)核監(jiān)測處理模塊(13)和輸入/輸出端 口 (18);所述內(nèi)核補丁 (12)用于對Linux內(nèi)核(11)進行改造,截獲和登記 相應的物理內(nèi)存(10)信息;所述內(nèi)核監(jiān)測處理模塊(13)用于分析內(nèi)存監(jiān)測處理程序(19)通過 所述輸入/輸出端口 (18)發(fā)送的指令,執(zhí)行所述指令,及將通過所述內(nèi) 核補丁獲取的相應內(nèi)存信息回送到所述內(nèi)存監(jiān)測處理程序(19);所述輸入/輸出端口 (18)用于實現(xiàn)Linux內(nèi)核空間和用戶空間的內(nèi) 存信息交互。本發(fā)明由于采用了上述技術方案,具有這樣的有益效果,通過對 Linux內(nèi)核添加補丁的方式改造Linux內(nèi)核,以截獲和登記相應的物理內(nèi) 存信息,及使用內(nèi)核監(jiān)測處理模塊作為橋梁來分析用戶的指令、執(zhí)行用戶的操作和向用戶回送內(nèi)核信息的方法,來對Linux平臺下物理內(nèi)存的使用 狀況進行靜態(tài)監(jiān)測或動態(tài)監(jiān)測,從而實現(xiàn)了對Linux平臺下各種物理內(nèi)存 信息的監(jiān)測,如獲取可分配的指定階內(nèi)存塊數(shù)目,獲取內(nèi)存詳細情況以計 算內(nèi)存外部碎片率等,具有較好的兼容性和適應性;因此本發(fā)明所述系統(tǒng) 尤其適合于各種存儲資源受限但需要提供復雜內(nèi)存操作的嵌入式Linux 平臺,如第三代移動通信系統(tǒng)WCDMA手機平臺等,而且適用于各種類型的 硬件系統(tǒng),如各種類型的處理器(ARM、 X86等)及各種類型的內(nèi)存設備 (SDRAM、 DDR閃存等)。
下面結合附圖和具體實施方式
對本發(fā)明作進一步詳細的說明 圖1為本發(fā)明所述Linux平臺物理內(nèi)存信息監(jiān)測系統(tǒng)的結構框圖; 圖2為本發(fā)明所述靜態(tài)獲取方法時輸入控制模塊的結構示意圖; 圖3為本發(fā)明所述動態(tài)獲取方法時輸入控制模塊的結構示意圖;圖4為本發(fā)明所述輸入/輸出端口模塊的結構示意圖。
具體實施方式
如圖1所示,本發(fā)明所述內(nèi)存信息監(jiān)測系統(tǒng)主要包括內(nèi)核補丁 12、 內(nèi)核監(jiān)測處理模塊13和輸入/輸出端口 18。其中,所述內(nèi)核補丁 12用于對Limix內(nèi)核11進行改造,截獲和登記 相應的物理內(nèi)存10信息。本發(fā)明所述內(nèi)核補丁 12主要包括內(nèi)存信息記錄 模塊,用于對Linux內(nèi)核11進行擴展,以實現(xiàn)在Linux系統(tǒng)啟動時開始 對物理內(nèi)存10的使用情況進行記錄,在本發(fā)明中這是通過一個全局變量 來進行控制的。本發(fā)明所述內(nèi)存信息記錄模塊主要采用以下兩種方式來對所述全局變量加以控制內(nèi)核命令行方式和內(nèi)核配置方式?,F(xiàn)有技術中一 般都是通過直接修改內(nèi)核代碼的方式來控制內(nèi)存信息的記錄的,這種方式 下內(nèi)核的每次修改都必須通過源代碼修改和重新編譯的方式來實現(xiàn),因此 比較麻煩。而通過所述內(nèi)核命令行方式來實現(xiàn)內(nèi)存信息的記錄無需對內(nèi)核 進行修改,因此也不需要對內(nèi)核進行重新編譯,因而控制起來更為方便和 靈活。當然,也可通過內(nèi)核所提供的配置選項的方式對全局變量進行控制。 所述內(nèi)核監(jiān)測處理模塊13是Linux系統(tǒng)下通過內(nèi)核空間裝載并具有 物理內(nèi)存監(jiān)測功能的內(nèi)核模塊,用于分析內(nèi)存監(jiān)測處理程序19通過所述 輸入/輸出端口 18發(fā)送的指令,并執(zhí)行所述內(nèi)存監(jiān)測處理程序19的命令, 及將通過所述內(nèi)核補丁 12獲取的相應內(nèi)存信息回送到所述內(nèi)存監(jiān)測處理 程序19。該內(nèi)核監(jiān)測處理模塊13進一步包括內(nèi)存信息獲取模塊14、內(nèi)存信 息處理模塊15、輸入控制模塊16和輸出控制模塊17。所述內(nèi)存信息獲取 模塊14用于根據(jù)輸入控制模塊16接收到的指令,去査詢相應的內(nèi)存信息。 所述內(nèi)存信息處理模塊15用于對査詢到的內(nèi)存信息進行相應的處理,如 當外部需要獲取內(nèi)存的碎片率時,所述內(nèi)存信息處理模塊15可在所獲取 的內(nèi)存詳細狀況的基礎上,對碎片率進行計算;又如,當需要獲取當前系 統(tǒng)內(nèi)的可分配的連續(xù)32頁(5階)內(nèi)存塊數(shù)量時,所述內(nèi)存信息處理模 塊15可用于對高于5階內(nèi)存的數(shù)量進行計算,得到當前系統(tǒng)內(nèi)的可分配 的連續(xù)32頁(5階)內(nèi)存塊數(shù)量。所述輸入控制模塊16用于接收內(nèi)存監(jiān) 測處理程序19通過輸入/輸出端口 18發(fā)出的指令并對該指令進行解析;所述輸出控制模塊17用于將所取得的內(nèi)存信息通過所述輸入/輸出端口18發(fā)送給用戶態(tài)的內(nèi)存監(jiān)測處理程序19。如圖2所示,所述輸入控制模塊16主要包括輸入端口控制模塊21 和輸入?yún)?shù)解析模塊22。其中,輸入端口控制模塊21負責接收內(nèi)存監(jiān)測 處理程序19通過輸入/輸出端口 18發(fā)出的指令;輸入?yún)?shù)解析模塊22 負責將接收到的指令進行解析。這時就可實現(xiàn)對Linux物理內(nèi)存信息的靜 態(tài)監(jiān)測,所述靜態(tài)監(jiān)測的具體實現(xiàn)步驟如下用戶態(tài)的內(nèi)存監(jiān)測處理程序 通過輸入/輸出端口 18向內(nèi)核空間發(fā)出獲取內(nèi)存信息的指令,內(nèi)核空間的 輸入控制模塊16在對接收到用戶的指令進行解析后,將會調(diào)用內(nèi)存信息 獲取模塊14進行查詢內(nèi)存信息;當查詢結束后,就會調(diào)用內(nèi)存信息處理 模塊15進行相應的處理,然后調(diào)用輸出控制模塊17把信息通過輸入/輸 出端口 18再返回給用戶態(tài)的內(nèi)存監(jiān)測處理程序19,然后再由該內(nèi)存監(jiān)測 處理程序19將其獲取的物理內(nèi)存信息經(jīng)過加工處理后通過不同的方式呈 現(xiàn)給用戶,比如通過在控制臺輸出信息,或者把內(nèi)存信息存儲到指定文件 中等方式來呈現(xiàn)給用戶。如圖3所示,所述輸入端口控制模塊16除包括輸入端口控制模塊21 和輸入?yún)?shù)解析模塊22外,還包括定時觸發(fā)模塊31,用于定時的把內(nèi)存 信息輸出到磁盤或者其它非易失性存儲介質上的文件中以實現(xiàn)對內(nèi)存信 息進行定時存儲的動態(tài)監(jiān)測方法。所述定時存儲的動態(tài)監(jiān)測方法指通過 預先定義所述定時觸發(fā)模塊31中的定時器來定時地將內(nèi)存信息輸出到磁 盤或者其它非易失性存儲介質上(比如Nand Flash或者NOR Flash)的 文件中,這樣用戶通過査看保存在文件中的內(nèi)存信息就可以來判斷內(nèi)存的詳細情況,因此也就有可能采取某種具體的措施來改進內(nèi)存管理器。比如, 通過該方法可發(fā)現(xiàn)大容量的連續(xù)內(nèi)存的分配經(jīng)常不成功,那么就意味著需 要改善內(nèi)存管理器的分配機制,使得系統(tǒng)能更多的分配大容量的連續(xù)內(nèi)存。所述輸入/輸出端口 18用于實現(xiàn)內(nèi)核空間和用戶空間的內(nèi)存信息交互,具體體現(xiàn)為所述內(nèi)存監(jiān)測處理程序19指令或預先的配置來確定在 用戶空間通過所述輸入/輸出端口 18對內(nèi)存信息的獲取方式,并且用于將通過所述內(nèi)核監(jiān)測處理模塊13獲取和處理的內(nèi)存信息從內(nèi)核空間傳輸至用戶空間。如圖4所示,在本發(fā)明所述物理內(nèi)存信息監(jiān)測系統(tǒng)中,所述輸入/輸出端口 18實現(xiàn)內(nèi)核空間和用戶空間的內(nèi)存信息交互的方式包括可讀寫 的proc接口方式41、設備文件方式42、普通文件方式43、系統(tǒng)調(diào)用方 式44及內(nèi)存映射方式45等,本發(fā)明中這些獲取方式可在內(nèi)存監(jiān)測處理程 序19的控制下進行切換。由于proc文件系統(tǒng)是有Linux操作系統(tǒng)內(nèi)核提供的標準接口 ,所有 的Linux操作系統(tǒng)都以/proc的形式向用戶空間開放proc文件系統(tǒng),所 以通過該文件系統(tǒng)獲取內(nèi)存信息可以不依賴于所使用的Linux平臺的發(fā) 行版本。因此,基于proc文件系統(tǒng)的上述特性,本發(fā)明使用其作為內(nèi)存 監(jiān)測處理程序19和內(nèi)存監(jiān)測處理模塊13之間信息交互的輸入/輸出端口 之一。因此,在本發(fā)明中,通過所述proc接口方式41用戶可以向內(nèi)核中 的輸入控制模塊16發(fā)送指令,而Linux內(nèi)核也可以把輸出信息反映在/proc目錄下的某個文件中,然后用戶空間就可以對proc下的文件進行 分析或者轉存操作了。設備文件的目的是允許進程和內(nèi)核中的設備驅動程序通過設備文件 和實際的物理設備進行通信,但實際上我們也可以創(chuàng)建虛擬的設備和內(nèi)核 模塊進行通信。因為Linux的設備驅動程序本來就是一個軟件抽象,它可 以結合硬件提供服務,也完全可以作為純軟件提供服務。在驅動程序中, 可以用open來啟動服務,用read()返回處理好的記錄,用ioctl()進行 控制設備的行為(比如發(fā)起監(jiān)測請求),用close()停止服務等。當內(nèi)核 模塊被插入到內(nèi)核后,就可以在/dev/目錄下建立一個設備文件和內(nèi)核模 塊進行關聯(lián)。然后,可以在用戶空間通過對設備文件的操作來對內(nèi)核模塊 進行控制和信息交互。在本發(fā)明中,利用設備文件方式42,用戶可以通 過創(chuàng)建字符設備或者塊設備的方式(指定主設備號)和內(nèi)核模塊進行通信, 只要內(nèi)核模塊在初始化程序中對相同的主設備號進行注冊就可以和現(xiàn)存 的設備進行關聯(lián);然后,用戶就可以通過新創(chuàng)建的設備和內(nèi)核模塊進行數(shù) 據(jù)的輸入和輸出操作。所述普通文件方式43即內(nèi)核可以通過讀取文件的方式來決定操作行 為,再把內(nèi)存信息保存在指定的文件中和用戶進行通信。系統(tǒng)調(diào)用是另一種用戶程序和內(nèi)核進行通信的方法。目前Linux大致 提供了二百多個標準的系統(tǒng)調(diào)用以獲取內(nèi)核相關的信息或者干預內(nèi)核的 行為。而且,Linux系統(tǒng)允許用戶通過修改內(nèi)核添加自己的系統(tǒng)調(diào)用的方 式來實現(xiàn)和內(nèi)核的信息交換。因此,為了監(jiān)測物理內(nèi)存的相關信息,可以 通過在Linux內(nèi)核中實現(xiàn)一些新的系統(tǒng)調(diào)用。用戶通過這些新增的系統(tǒng)調(diào)用來獲取內(nèi)存的信息并提取到用戶空間。當內(nèi)核服務程序和新系統(tǒng)調(diào)用都 實現(xiàn)后,就可以在用戶空間里編寫用戶程序進行內(nèi)存監(jiān)測任務。因此在本發(fā)明中通過利用系統(tǒng)調(diào)用方式44,在Linux內(nèi)核中實現(xiàn)一些新的系統(tǒng)調(diào) 用來監(jiān)測物理內(nèi)存的相關信息,用戶可通過這些新增的系統(tǒng)調(diào)用44來獲 取內(nèi)存的信息。Linux也可以通過內(nèi)存映射機制來提供用戶程序對內(nèi)核空間的內(nèi)存 直接訪問的能力。內(nèi)存映射是把內(nèi)核中特定部分的內(nèi)存空間映射到用戶空 間。即用戶空間和內(nèi)核空間共享一塊相同的內(nèi)存。因此,內(nèi)核在共享內(nèi)上 的數(shù)據(jù),用戶可以立即發(fā)現(xiàn)和使用,根本無須數(shù)據(jù)拷貝,反之亦然。對于 許多數(shù)據(jù)傳輸量大、時間要求高的應用,內(nèi)存映射機制可以節(jié)省數(shù)據(jù)拷貝 所耗費的時間和資源。因此,在本發(fā)明中也可通過內(nèi)存映射方式45來保 證用戶空間與內(nèi)核空間信息的交互操作。通過本發(fā)明所述物理內(nèi)存信息監(jiān)測系統(tǒng),可獲取不同階空閑內(nèi)存的信 息、獲取當前系統(tǒng)的內(nèi)存外部碎片率等,因此本發(fā)明所述物理內(nèi)存信息監(jiān) 測系統(tǒng)和監(jiān)測方法具有很好的適用性和兼容性。如下所述為關于獲取當前系統(tǒng)內(nèi)的可分配的連續(xù)32頁(5階)內(nèi)存 塊數(shù)量的一個實施例,其具體步驟為(1) 以內(nèi)核補丁方式對Linux內(nèi)核11進行擴展的內(nèi)存信息記錄模塊 對物理內(nèi)存10的使用情況進行記錄。當內(nèi)存分配和釋放操作發(fā)生時,需 要更新內(nèi)核中相應的各階內(nèi)存計數(shù)器。(2) 內(nèi)存監(jiān)測處理程序19通過輸入/輸出端口 17發(fā)出獲取當前系統(tǒng) 內(nèi)的可分配的連續(xù)32頁(5階)內(nèi)存塊數(shù)量的指令。(3) 內(nèi)核空間輸入控制模塊16對接收到用戶的指令進行解析。(4) 調(diào)用內(nèi)存信息獲取模塊14查詢當前系統(tǒng)內(nèi)5階以上的內(nèi)存塊數(shù) 量-,由于當前系統(tǒng)內(nèi)僅僅維護了各階內(nèi)存的數(shù)量,因此需要通過內(nèi)存信息 處理模塊15把高于5階內(nèi)存的數(shù)量進行計算后才能得到當前系統(tǒng)內(nèi)的可 分配的連續(xù)32頁(5階)內(nèi)存塊數(shù)量,比如一個空閑的6階內(nèi)存實際上 對應于2個可分配的5階空閑內(nèi)存。(5) 當內(nèi)存信息處理模塊15進行相應處理后,調(diào)用輸出控制模塊 17把信息通過輸入/輸出端口18再返回給用戶態(tài)的內(nèi)存監(jiān)測處理程序19。(6) 由所述內(nèi)存監(jiān)測處理程序19通過各種的方式呈現(xiàn)給用戶。 利用本發(fā)明所述Linux平臺物理內(nèi)存信息監(jiān)測系統(tǒng)還可獲取系統(tǒng)的內(nèi)存外部碎片率,在一個實施例中,其具體步驟如下(1) 以內(nèi)核補丁方式對Limix內(nèi)核11進行擴展的內(nèi)存信息記錄模塊 對物理內(nèi)存10的使用情況進行記錄。先分配一塊內(nèi)存用以保存所有的內(nèi) 存頁的信息。當內(nèi)存分配和釋放操作發(fā)生時,需要更新內(nèi)核中相應的各階 內(nèi)存計數(shù)器。(2) 內(nèi)存檢測處理程序19向輸入/輸出端口 17發(fā)出獲取系統(tǒng)的內(nèi)存 外部碎片率的指令。(3) 內(nèi)核空間的輸入控制模塊16在對接收到用戶的指令進行解析。(4) 輸入控制模塊16調(diào)用內(nèi)存信息獲取模塊14去査詢當前系統(tǒng)內(nèi) 的詳細內(nèi)存情況,以確定當前系統(tǒng)內(nèi)存的最大空閑內(nèi)存塊的頁數(shù)。(5) 通過所述內(nèi)存信息獲取模塊14査詢系統(tǒng)內(nèi)的空閑內(nèi)存的總體數(shù)(6) 査詢結束后,內(nèi)存信息處理模塊15根據(jù)如下公式計算出內(nèi)存外 部碎片率,即內(nèi)存外部碎片率=1一最大的空閑內(nèi)存塊頁數(shù)/系統(tǒng)的空閑內(nèi) 存頁數(shù)。(7) 內(nèi)存信息處理模塊15進行相應的處理后,然后調(diào)用輸出控制模 塊17把系統(tǒng)的外部碎片率信息通過輸入/輸出端口 18再返回給用戶態(tài)的 內(nèi)存監(jiān)測處理程序19。(8) 由該內(nèi)存監(jiān)測處理程序19通過不同的方式呈現(xiàn)給用戶。 本發(fā)明適合于各種裝載Lirmx操作平臺的硬件系統(tǒng),尤其適用于各種存儲資源受限但需要提供復雜內(nèi)存操作的嵌入式Linux平臺,例如第三代 移動通信系統(tǒng)WCDMA手機平臺。由于嵌入式Linux平臺的存儲資源非常有 限(特別是物理內(nèi)存容量),因此非常有必要通過本發(fā)明提供的方法監(jiān)測 Linux平臺的物理內(nèi)存使用狀況,以優(yōu)化Linux平臺物理內(nèi)存資源的使用。
權利要求
1. 一種Linux平臺物理內(nèi)存信息監(jiān)測系統(tǒng),其特征在于,包括內(nèi)核補丁(12)、內(nèi)核監(jiān)測處理模塊(13)和輸入/輸出端口(18);所述內(nèi)核補丁(12)用于對Linux內(nèi)核(11)進行改造,截獲和登記相應的物理內(nèi)存(10)信息;所述內(nèi)核監(jiān)測處理模塊(13)用于分析內(nèi)存監(jiān)測處理程序(19)通過所述輸入/輸出端口(18)發(fā)送的指令,執(zhí)行所述指令,及將通過所述內(nèi)核補丁獲取的相應內(nèi)存信息回送到所述內(nèi)存監(jiān)測處理程序(19);所述輸入/輸出端口(18)用于實現(xiàn)Linux內(nèi)核空間和用戶空間的內(nèi)存信息交互。
2、 根據(jù)權利要求l所述的Linux平臺物理內(nèi)存信息監(jiān)測系統(tǒng),其特 征在于,所述內(nèi)核補丁 (12)主要包括內(nèi)存信息記錄模塊,用于對Linux 內(nèi)核(11)進行擴展,以在Linux系統(tǒng)啟動時開始對物理內(nèi)存(10)的使 用情況進行記錄。
3、 根據(jù)權利要求2所述的Linux平臺物理內(nèi)存信息監(jiān)測系統(tǒng),其特 征在于,所述信息記錄模塊是通過一個全局變量來進行控制的。
4、 根據(jù)權利要求3所述的Linux平臺物理內(nèi)存信息監(jiān)測系統(tǒng),其特 征在于,所述內(nèi)存信息記錄模塊主要采用以下兩種方式對所述全局變量進 行控制內(nèi)核命令行方式和內(nèi)核配置方式。
5、 根據(jù)權利要求1所述的Linux平臺物理內(nèi)存信息監(jiān)測系統(tǒng),其特 征在于,所述內(nèi)核監(jiān)測處理模塊(13)進一步包括內(nèi)存信息獲取模塊(14)、內(nèi)存信息處理模塊(15)、輸入控制模塊(16)和輸出控制模塊(17);其中,所述內(nèi)存信息獲取模塊(14)用于根據(jù)所述輸入控制模塊(16) 接收到的指令,去査詢相應的內(nèi)存信息;所述內(nèi)存信息處理模塊(15)用于對査詢到的內(nèi)存信息進行相應的處理;所述輸入控制模塊(16)用于接收所述內(nèi)存監(jiān)測處理程序(19)通過 所述輸入/輸出端口 (18)發(fā)出的指令并對該指令進行解析;所述輸出控制模塊(17)用于將所取得的內(nèi)存信息通過所述輸入/輸 出端口 (18)發(fā)送給用戶態(tài)的內(nèi)存監(jiān)測處理程序(19)。
6、 根據(jù)權利要求5所述的Linux平臺物理內(nèi)存信息監(jiān)測系統(tǒng),其特 征在于,所述輸入控制模塊(16)主要包括輸入端口控制模塊(21)和輸 入?yún)?shù)解析模塊(22);其中,所述輸入端口控制模塊(21)負責控制接 收用戶態(tài)的內(nèi)存監(jiān)測處理程序(19)通過所述輸入/輸出端口 (18)發(fā)出 的指令;所述輸入?yún)?shù)解析模塊(22)負責將接收到的指令進行解析。
7、 根據(jù)權利要求6所述的Linux平臺物理內(nèi)存信息監(jiān)測系統(tǒng),其特 征在于,所述輸入控制模塊(16)還包括定時觸發(fā)模塊(31),該定時觸 發(fā)模塊(31)主要包括一定時器,用于定時的把內(nèi)存信息輸出到磁盤或者 其它非易失性存儲介質上的文件中,對物理內(nèi)存進行定時存儲的動態(tài)監(jiān)
8、 根據(jù)權利要求l所述的Linux平臺物理內(nèi)存信息監(jiān)測系統(tǒng),其特 征在于,所述輸入/輸出端口 (18)實現(xiàn)Linux內(nèi)核空間和用戶空間的內(nèi)存信息交互具體體現(xiàn)為內(nèi)存監(jiān)測處理程序(19)指令或預先的配置來確 定在用戶空間通過所述輸入/輸出端口 (18)對內(nèi)存信息的獲取方式,及 將通過所述內(nèi)核監(jiān)測處理模塊(13)獲取和處理的內(nèi)存信息從內(nèi)核空間傳 輸至用戶空間。
9、根據(jù)權利要求1或8所述的Linux平臺物理內(nèi)存信息監(jiān)測系統(tǒng), 其特征在于,所述輸入/輸出端口 (18)實現(xiàn)Linux內(nèi)核空間和用戶空間 的內(nèi)存信息交互的方式包括可讀寫的proc接口方式(41)、設備文件 方式(42)、普通文件方式(43)、系統(tǒng)調(diào)用方式(44)及內(nèi)存映射方式 (45),這些方式可在所述內(nèi)存監(jiān)測處理程序(19)的控制下進行切換。
全文摘要
本發(fā)明公開了一種Linux平臺物理內(nèi)存信息監(jiān)測系統(tǒng),可在Linux平臺下監(jiān)測物理內(nèi)存的使用狀況,優(yōu)化Linux平臺物理內(nèi)存資源的使用。本發(fā)明通過內(nèi)核補丁加內(nèi)存監(jiān)測處理模塊的方式,可對Linux平臺中物理內(nèi)存的總體情況和詳細使用狀況進行靜態(tài)監(jiān)測和動態(tài)監(jiān)測,實現(xiàn)對Linux平臺中如下物理內(nèi)存信息的監(jiān)測,如獲取可分配的指定階內(nèi)存塊數(shù)目,獲取內(nèi)存詳細情況以計算內(nèi)存外部碎片率等,因此具有較好的兼容性和適應性。該系統(tǒng)尤其適合于各種存儲資源受限但需要提供復雜內(nèi)存操作的嵌入式Linux平臺。
文檔編號G06F11/34GK101221527SQ200710036249
公開日2008年7月16日 申請日期2007年1月8日 優(yōu)先權日2007年1月8日
發(fā)明者劉通平, 濤 韓 申請人:上海宇夢通信科技有限公司