新四季網

內存監控方法和裝置的製作方法

2023-05-20 20:47:11

專利名稱:內存監控方法和裝置的製作方法
技術領域:
本發明涉及電子設備技術領域,具體涉及內存監控技術。
背景技術:
在嵌入式實時系統中,由於存在內存訪問越界或寫已釋放內存等問題,因
此,需要對內存進行監控。目前的內存監控方法主要有如下四種
方法一、基於填充魔數字的內存監控方法,即在需要監控的內存中填充魔
數字,通過在申請內存、釋放內存或定時檢查魔數字是否被改寫來判斷內存是
否被非法改寫。該方法不能及時捕獲內存被非法改寫的現場信息。
方法二、基於修改程序流程的內存監控方法,即在程序流程中添加檢查代
碼,從而在分配內存時能夠記錄該內存的大小,並在寫內存前進行4全查。
由於方法二需要改寫程序流程,因此,會影響原程序流程的穩定性,例如
程序編譯時容易出現編譯問題等。而且,方法二還會導致大型工程性能降低、
以及執行文件龐大等問題。
方法三、基於使用保護內存分隔不同內存區間的內存監控方法,即在分配的不同內存塊之間設置內存保護頁,在內存越界寫到內存保護頁上時,觸發數據異常,從而監控到內存越界寫操作。
內存保護頁佔用了內存,且內存保護頁的大小通常會比分配的內存塊大,因此,方法三降低了內存的可利用率。另外,方法三不能反映出越界寫操作的執行主體,內存監控粒度太粗。
方法四、基於調試寄存器的內存監控方法,即利用CPl^是供的調試寄存器對特定的內存進行監控。由於大部分的CPU只支持對有限的內存地址進行監
5控,因此,不能滿足大塊內存監控的需要。

發明內容
本發明實施方式的目的在於提供一種內存監控方法和裝置,以實時監測到 內存讀和寫數據越界的現場信息,從而實現對內存的實時監控。
本發明實施方式提供的內存監控方法,包括 為需要監控的內存設置內存管理單元訪問保護; 針對程序包對所述內存的申請和釋放操作,記錄內存分配信息; 在程序包執行對所述內存的讀或寫數據操作時,基於所述內存管理單元訪 問保護而觸發異常處理操作;
所述異常處理操作包括獲取所述讀或寫數據的目的地址,根據所述目的 地址和所述內存分配信息判斷所述讀或寫數據的內存訪問操作是否越界,如果 越界,則記錄所述內存訪問操作越界的現場信息,允許所述程序包繼續按照其 包含的程序編碼進行後續流程,如果沒有越界,則允許所述程序包繼續按照其 包含的程序編碼進行後續流程。
本發明實施方式提供的內存監控裝置,包括
訪問保護設置模塊,用於為需要監控的內存設置內存管理單元訪問保護; 內存分配和釋放監控模塊,用於針對程序包對所述內存的申請和釋放操 作,記錄內存分配信息;
異常中斷模塊,用於在所述程序包執行對所述內存的讀或寫數據操作時, 基於所述內存管理單元訪問保護而被觸發,執行異常處理操作,所述異常處理 操作包括獲取所述讀或寫數據的目的地址,根據所述目的地址和所述內存分 配信息判斷所述讀或寫數據的內存訪問操作是否越界,如果越界,則記錄所述 內存訪問操作越界的現場信息,允許所述程序包繼續按照其包含的程序編碼進 行後續流程,如果沒有越界,則允許所述程序包繼續按照其包含的程序編碼進 行後續流程。通過上述技術方案的描述可知,通過利用內存管理單元訪問保護機制,並
以實時監測到內存讀和寫數據越界的現場信息,從而可以實現對內存的實時精確監控,且被監控的內存大小可以不受限制。


圖l是本發明實施例一的內存監控方法流程圖;圖2是本發明實施例二的內存監控方法中記錄分配信息的流程圖;圖3是本發明實施例二的內存監控方法中記錄內存訪問越界的現場信息的流程圖4是本發明實施例三的系統啟動過程中設置內存監控的方法流程圖;圖5是本發明實施例四的內存監控裝置示意圖。
具體實施例方式
本發明實施例 一提供一種內存監控方法,該方法的流程如附圖1所示。
圖l中,步驟IOO、確定需要監控的內存,並為需要監控的內存設置MMU(Memory Management Unit ,內存管J裡單元)i方問j呆4戶。
需要監控的內存可以為網絡設備中的所有內存,也可以為網絡設備中的部分內存。需要監控的內存可以根據實際需要來確定,例如,可以根據實際需要確定所有內存都需要進行監控;再例如,根據實際需要確定一段地址範圍內的內存需要進行監控。步驟100可以在作業系統的內存管理系統初始化之後執行。
需要說明的是,如果內存設置了MMU訪問保護,則對該內存的讀或寫操作都會觸發異常處理操作(也可稱為異常處理流程)。現有的異常處理流程為如果對設置有MMU訪問保護的內存的讀或寫數據操作超出了內存範圍,則停止程序的繼續執行,輸出報警信息,並將任務桂起或重啟系統。在本實施例中,對設置了MMU訪問保護的內存進行讀或寫數據操作時觸發的異常處理流程與上述現有的異常處理流程不同,本實施例中觸發的異常處理流程所包括的才喿作 在下文中有詳細說明。
步驟110、針對程序包對設置有MMU訪問保護的內存的申請和釋放操作記 錄內存分配信息。這裡的程序包可以為函數等形式。
本實施例可以採用插樁技術來實現針對程序包對設置有MMU訪問保護的 內存的申請和釋放操作記錄內存分配信息,即本實施例中的程序包為進行插 樁處理後的程序包。該插樁處理是針對程序包中申請和釋放內存操作進行的。 插樁處理後的程序包在執行對設置有MMU訪問保護的內存進行申請和釋》文才乘 作時,會觸發記錄內存分配信息的操作。
插樁處理方式有多種,本發明實施例可以採用現有的各種插樁處理方式, 本發明實施例不限制插樁處理的具體實現方式。
一個具體的插樁處理方式為通過修改程序包中的程序編碼的方式對程序 包進行插樁處理,即在程序包中的申請和釋放指定內存對應的程序編碼處進行 插樁處理,如增加程序編碼等,以記錄對設置有MMU訪問保護的內存分配信 息。該具體的插樁處理方式需要》務改程序包中的程序編碼。另外,如果採用該 具體的插樁處理方式,則只要在程序包編譯運行前完成插樁處理即可。
另一個具體的插樁處理方式為在程序包運行過程中,針對程序包中的申
請和釋放指定內存操作進行插樁處理,以記錄對設置有MMU訪問保護的內存 分配信息。該具體的插樁處理方式不需要修改程序包中的程序編碼。
步驟120 、在程序包執行對設置有MMU訪問保護的內存的讀或寫數據操作 時,由於該內存設置了MMU訪問保護,因此,該讀或寫數據操作會觸發異常 處理操作,到步驟130。
步驟130、執行異常處理操作。
本步驟中執行的異常處理操作包括獲取上述對內存的讀或寫數據的目的 地址,然後,將該目的地址與上述記錄的內存分配信息進行比較,如果根據比較結果確定該目的地址不屬於內存分配信息中記錄的內存地址範圍,則確定該目的地址越界(即讀或寫數據操作的內存訪問操作越界),記錄該讀或寫數據的內存訪問操作越界的現場信息;如果根據比較結果確定該目的地址屬於內存分配信息中記錄的內存地址範圍,則確定該讀或寫悽丈據才喿作的內存訪問l喿作沒
有越界,不需要記錄該讀或寫數據的內存訪問"t喿作越界的現場信息;而且,無論判斷結果是否為越界,都允許該程序包繼續按照其包含的程序編碼進行後續流程運行。也就是說,異常處理操作在最後會返回程序包,使程序包繼續進行後續流程,即本實施例中觸發的異常處理操作不會影響程序包的正常運行。
本實施例的異常處理操作中的 一個確定內存訪問操作越界的具體例子為如果讀或寫數據的目的地址不在內存分配信息中任一已分配內存的地址範圍之內,則確定該讀或寫數據的內存訪問操作越界。
上述讀或寫數據的目的地址如果是起始地址,則在越界判斷過程中還需要考慮讀或寫數據的長度;如果上述讀或寫數據的目的地址是一個地址範圍,則在越界判斷過程中可以不考慮讀或寫數據的長度。
由上述描述可知,本實施例修改了MMU訪問保護觸發的現有的異常處理流程,通過觸發修改後的異常處理流程,不但不會影響程序包的正常執行,而且,還可以及時記錄程序包中讀或寫數據的內存訪問操作越界的現場信息。
上述記錄的現場信息包括調用棧信息、內存狀態、寄存器值和內存分配狀況中的任意一個或多個,而且也可以根據需要包括其他信息。
上述記錄的現場信息可以用於多種應用, 一個具體的應用的例子為輸出告警信息,以便於根據告警信息進行內存管理。這裡的告警信息如觸發告警燈亮的觸發信號;再如,向顯示屏幕或印表機等輸出現場信息。本發明實施例不
限制現場信息包括的具體內容、現場信息的具體應用方式、以及輸出告警信息的具體實現方式。
上迷實施例一需要說明的是針對某些程序包(如作業系統的內存管理操作的程序包)而言,如果這部分程序包對上述設置有MMU保護的內存的讀或 寫數據操作不需要進行上述是否越界保護等處理,則這部分程序包可以稱為不
需要進行內存監控的程序包,相反地,對上述設置有MMU保護的內存的讀或
寫數據操作需要進行上述是否越界保護等處理的程序包可以稱為需要進行內 存監控的程序包。針對不需要進行內存監控的程序包,本實施例可以不進行異 常處理操作的觸發,也可以觸發上述異常處理操作,但是,在異常處理操作中 不進行獲取目的地址和判斷的操作,而是直接允許這部分程序包繼續按照其包 含的程序編碼進行後續流程。
不進行異常處理操作的觸發的一個具體的例子為在不需要進行內存監控 的程序包對設置有MMU訪問保護的內存進行讀或寫數據操作時,控制MMU 訪問保護處於關閉狀態,否則,控制MMU訪問保護處於打開狀態。本發明實 施例可以使設置有MMU訪問保護的整個內存的MMU訪問保護均處於關閉狀 態,也可以使不需要進行內存監控的程序包的讀或寫悽t據操作涉及到的內存的 MMU訪問4呆護處於關閉狀態。
如果不進行異常處理操作的觸發,則可以採用插樁的方式來實現,即針對 不需要進行內存監控的程序包進行插樁處理,該插樁處理是針對程序包執行 對設置有MMU訪問保護的內存的讀或寫數據操作時,使MMU訪問保護處於 關閉狀態,否則,使MMU訪問保護處於打開狀態而進行的。插樁處理後的程 序包能夠實現在對設置有MMU訪問保護的內存進行讀或寫數據操作時,使 MMU訪問保護處於關閉狀態,否則使MMU訪問保護處於打開狀態。這裡的 插樁的實現方式仍然有兩種,即通過修改程序編碼的方式實現插樁和在程序包 運行過程中實現插樁,具體的實現方式不再詳細說明。
如果存在不需要進行內存監控的程序包和需要進行內存監控的程序包,這 兩種程序包都需要觸發異常處理操作,且需要在異常處理操作中對這兩種程序 包進行區別對待,則需要對這兩部分程序包進行區分, 一個區分的具體例子為
10對不需要進行內存監控的程序包進行標記,對需要進行內存監控的程序包不進
行標記;另一個區分的具體例子為對需要進行內存監控的程序包進行標記,對不需要進行內存監控的程序包不進行標記。從而在異常處理操作流程中,可以先根據標記判斷程序包是需要進行內存監控的程序包,還是不需要進行內存監控的程序包,然後,再進行後續處理。
在內存監控結束等情況下,可以去除內存的MMU訪問保護、以及針對程序包的插樁(運行過程中實現插樁處理)等。去除MMU訪問保護以及去除插樁的 一個具體實現方式為重新啟動電子設備的作業系統。
從上述實施例一的描述可知,通過對指定內存i殳置MMU訪問保護,並》務改MMU訪問保護觸發的現有異常處理操作,能夠在不需要針對程序包中讀和寫操作的程序代碼進行修改、且不影響程序包正常處理流程的情況下,及時監控到對指定內存的讀或寫數據操作越界的現場信息。通過對程序包中申請和釋放指定內存的操作進行插樁處理,能夠方便及時的記錄指定內存的分配信息。在通常情況下,相對於程序包中讀和寫數據操作來說,程序包中申請和釋放指定內存的操作是非常少量的,因此,即便是採用修改程序包中程序編碼的插樁處理方式,對程序包的程序編碼的修改量也是非常少,從而在一定程度上避免了程序編譯時容易出現編譯問題、導致大型工程性能降低、以及執行文件龐大等問題。另外,如果採用在對程序包編譯過程中進行插樁處理方式,則能夠完全避免對程序包的程序編碼進行修改的現象。通過對讀或寫數據操作的目的地址與內存分配信息進行對比,即便是目的地址中有l個字節不在內存分配信息所示的內存塊的地址範圍內,也能夠精確的捕獲到內存訪問操作的越界行為。由於MMU訪問保護可以涉及到所有的內存,因此,本實施例一的內存監控可以不受內存大小的限制。
本發明實施例二提供一種內存監控方法,該內存監控方法包括兩部分內容, 一部分為記錄內存分配信息流程,具體如附圖2所示;另一部分為記錄內存訪問越界的現場信息流程,具體如附圖3所示。
圖2中,步驟200、對需要監控的內存設置MMU訪問保護,程序包如函數 申請或釋放設置有MMU訪問保護的內存。
步驟210、根據上述申請或釋放內存的情況記錄內存分配信息,該分配信 息可以存儲在內存分配表中。
如果上述步驟200和步驟210在網絡設備系統初始化時即開始執行,則可以 確保程序包中所有針對設置有MMU訪問保護的內存的申請和釋放情況都會記 錄到內存分配表中。
步驟220、程序包如函lt繼續正常運行,即程序繼續正常運行。
圖3中、步驟300、程序包如函數執行讀數據操作或寫數據操作,該讀數據 或寫數據操作涉及到設置有MMU訪問保護的內存,即程序包對設置有MMU訪 問保護的內存進行讀數據操作或寫數據操作。
步驟310、該讀數據操作或寫數據操作觸發數據異常處理流程,到步驟320。
步驟320、利用該讀數據操作或寫數據操作的目的地址查詢內存分配表, 並輸出查詢結果,該查詢結果可以為目的地址不屬於內存分配表中任一已分 配內存的地址範圍,該查詢結果也可以為目的地址屬於內存分配表中某一已 分配內存的地址範圍。需要說明的是,上述目的地址屬於內存分配表中某一已 分配內存的地址範圍是指本次讀或寫數據所對應的地址範圍全部屬於內存分 配表中某一已分配內存的地址範圍。
步驟330、根據查詢結杲判斷該讀數據操作或寫數據操作是否合法,即根 據查詢結果判斷該讀數據操作或寫數據操作是否為內存訪問越界的操作;如果 查詢結果為目的地址屬於內存分配表中某一已分配內存的地址範圍,則確定出 該讀數據或寫數據操作是合法的,不是內存訪問越界操作,到步驟350;如果 查詢結果為目的地址不屬於內存分配表中任一已分配內存的地址範圍,則確定 出該讀數據或寫數據操作是非法的,是內存訪問越界操作,到步驟340。步驟340、記錄本次內存訪問越界的現場信息,並上報錯誤信息,到步驟350。上述上報錯誤信息如觸發預定指示燈亮,再如向屏幕或印表機等輸出本次記錄的現場信息。這裡記錄集輸出的現場信息可以為調用棧信息、內存狀態信息、寄存器值和內存分配狀況中的一種或多種,當然,該現場信息也可以為其他內容的信息。
步驟350、程序包如函數繼續進行後續的操作,即程序繼續正常運行。本發明實施例三提供一種作業系統啟動過程中設置內存監控的方法,該方
法的流程如附圖4所示。實施例三是以應用在某電子設備中為例進行說明的,
這裡的電子設備如計算機等。
圖4中,步驟400、操:作系統啟動流程開始。
步驟410、在電子設備作業系統的內存管理系統初始化之後,判斷是否需要對內存進行監控,如果需要對內存進行監控,則到步驟420,否則到步驟470。
步驟420、為內存監控過程分配必要的內存。如果由內存監控工具來實現內存監控,則調用內存監控工具,內存監控工具啟動,為內存監控工具分配必要的內存。
步驟430、內存監控工具對內存分配表進行初始化(如創建內存分配表或清空內存分配表等),為需要進行申請和釋放內存的函數進行插樁處理(該插樁處理也可以稱為為函數加鉤子),該插樁處理是在函數運行過程中進行的插樁處理。該插樁處理的目的包括在該函數申請內存時,能夠向內存分配表中添加申請內存的描述信息;在該函數釋放內存時,能夠從內存分配表中刪除該釋放的內存對應的描述信息。需要特別說明的是,如果採用修改程序編碼的插樁方式,則步驟430可以省略,即從步驟420直接到步驟440。
步驟440、內存監控工具修改數據異常處理流程。修改後的異常處理流程如上述實施例中的描述,在此不再重複說明。需要說明的是,上述步驟440描述的是對現有的數據異常處理流程進行修改,該步驟也可以變更為不對現有的數據異常處理流程進行修改,而是修改函數對內存進行讀或寫數據操作的觸 發連接,使函數對內存進行讀或寫數據時不再觸發原有的數據異常處理流程, 而是觸發本發明實施例中的異常處理流程。
步驟450、對需要監控的內存設置MMU訪問保護。需要監控的內存通常屬 於電子設備作業系統的可分配內存區。
步驟460、對某些函數進行特殊標識置位操作,如將某些函數的特殊標識 置為l。這些特殊標識的作用在於表示可以不對函凝:針對設置有MMU訪問^f呆 護的內存的讀數據或寫數據操作進行內存訪問操作越界監控。需要特別說明的 是,如果採用修改程序編碼的插樁方式,則步驟460可以省略,即從步驟450直 接到步驟470。
對函數進行特殊標識置位操作如在函數的入口處將特殊標識設置為1,在 函數的出口處將特殊標識清O。
上述的某些函數如作業系統的各種維護可分配內存區的函數。維護可分配 內存區的函數如修改內存引用計數函數、以及其他內存檢查工具的函數等。
步驟470、繼續進行作業系統啟動的後續操作,恢復作業系統的正常運行。
步驟480、本次操:作系統啟動流程結束。
實施例四提供一種內存監控裝置,該裝置可以稱為內存監控工具。內存監 控裝置的結構如附圖5所示。
圖5中的內存監控裝置包括訪問保護設置模塊500、內存分配和釋放監控 模塊510和異常中斷模塊520。可選的,該內存監控裝置還可以包括插樁模塊 530、訪問保護控制模塊540、標記模塊550和告警模塊560。
訪問保護設置模塊500,用於為需要監控的內存設置內存管理單元訪問保 護。需要監控的內存可以為網絡設備中的所有內存,也可以為網絡設備中的部 分內存。需要監控的內存可以根據實際需要來確定,例如,可以根據實際需要 確定所有內存都需要進行監控;再例如,根據實際需要確定一段地址範圍內的內存需要進行監控。訪問保護設置模塊500可以在作業系統的內存管理系統初始化之後執行MMU訪問保護的設置操作。
內存分配和釋放監控模塊510,用於針對程序包對設置有MMU訪問保護的內存的申請和釋放操作記錄內存分配信息。由於這裡的程序包進行了針對申請和釋放內存的插樁處理,因此,程序包在運行過程中內存分配和釋放監控模塊510會記錄內存分配信息。
異常中斷模塊520,用於在被觸發後執行異常處理操作。異常中斷模塊520是在進行了插樁處理的程序包執行對設置有MMU訪問保護的內存的讀或寫數據操作時,基於MMU訪問保護而被觸發的。
異常中斷模塊520執行的異常處理操作包括獲取上述對內存的讀或寫數據的目的地址,然後,將該目的地址與上述記錄的內存分配信息進行比較,如果根據比較結果確定該目的地址不屬於內存分配信息中記錄的內存地址範圍,則確定該目的地址越界(即讀或寫數據操作的內存訪問操作越界),記錄該讀或寫數據的內存訪問操作越界的現場信息;如果根據比較結果確定該目的地址屬於內存分配信息中記錄的內存地址範圍,則確定該讀或寫數據操作的內存訪問操作沒有越界,不需要記錄該讀或寫數據的內存訪問操作越界的現場信息;而且,無論判斷結果是否為越界,異常中斷模塊520都允許該程序包繼續按照其包含的程序編碼進行後續流程運行。也就是說,本實施例中的異常中斷模塊520執行的操作不會影響程序包的正常運行。
上述讀或寫數據的目的地址如果是起始地址,則異常中斷才莫塊520在越界判斷過程中還需要考慮讀或寫數據的長度;如果上述讀或寫數據的目的地址是一個地址範圍,則異常中斷^t塊520在越界判斷過程中可以不考慮讀或寫數據的長度。
異常中斷模塊520記錄的現場信息包括調用棧信息、內存狀態、寄存器值和內存分配狀況中的任意一個或多個,而且也可以根據需要包括其他信息。如果程序包對設置有MMU訪問保護的內存的申請和釋放操作觸發記錄內 存分配信息操作由程序包運行時進行插樁的方式來實現,則內存監控裝置還需
要包括插樁模塊530。
插樁模塊530,用於在程序包運行過程中,針對程序包中的申請和釋放指 定內存進行插樁,以實現對設置有MMU訪問保護的內存分配信息進行記錄。 插樁模塊530不需要對程序包中的程序編碼進行修改。
如果僅需要對部分程序包的讀數據或寫數據操作進行內存越界監控,則內 存監控裝置可以包括訪問保護控制模塊540和訪問保護控制模塊550。當內存 監控裝置包括訪問保護控制模塊540和訪問保護控制模塊550時,是通過是否 進行異常處理操作的觸發來實現是否進行內存越界監控的。
訪問保護控制模塊540,用於在不需要觸發異常處理操作的程序包執行對 內存的讀或寫數據操作時,控制MMU訪問保護處於關閉狀態,否則,控制 MMU訪問<呆護處於打開狀態。
訪問保護控制才莫塊540可以採用插樁的方式來實現上述MMU訪問〗呆護的 關閉和打開狀態控制。即訪問保護控制模塊540對設置有MMU訪問保護的內 存進行讀或寫數據操作不需要觸發異常處理操作的程序包進行插樁處理,該插 樁處理是針對程序包執行對設置有MMU訪問保護的內存的讀或寫數據操作 時,1"吏MMU訪問保護處於關閉狀態,否則,Y吏MMU訪問保護處於打開狀態 而進行的。
插樁處理後的程序包能夠實現在對i殳置有MMU訪問保護的內存進行讀 或寫數據操作時,使MMU訪問保護處於關閉狀態,否則使MMU訪問保護處 於打開狀態。
在僅需要對部分程序包的讀數據或寫數據操作進行內存越界監控的情況 下,內存監控裝置也可以不包括訪問保護控制模塊540,而是包括標記模塊550, 此時,異常中斷模塊520包括判斷子模塊和異常中斷子模塊。標記模塊550,用於對設置有MMU訪問保護的內存進行讀或寫數據操作不需要判斷是否越界的程序包進行標記,如在程序包的入口處進行標記。不需要判斷是否越界的程序包如作業系統的內存管理操作的程序包等。標記模塊550還可以在程序包的出口處清除該標記,如將該標記清0 。
設置標記可以通過插樁處理來實現。當本實施例中的訪問保護控制才莫塊540和標記才莫塊550都採用插樁處理方式時,訪問保護控制才莫塊540和插才莊才莫塊530 —起、或者標記才莫塊550和插樁才莫塊530 —起可以稱為插樁單元。
判斷子模塊,用於判斷對設置有MMU訪問保護的內存進行讀或寫數據操作的程序包是否有標記模塊550設置的標記。
異常中斷子模塊,用於在判斷子模塊的判斷結果為設置有標記時,直接允許該程序包繼續按照其包含的程序編碼進行後續流程,在判斷子模塊的判斷結果為沒有設置標記時,獲取讀或寫數據的目的地址,才艮據該目的地址和內存分配信息判斷該讀或寫數據的內存訪問操作是否越界,如果越界,則記錄該內存訪問操作越界的現場信息,允許該程序包繼續按照其包含的程序編碼進行後續流程,如果沒有越界,則直接允許該程序包繼續按照其包含的程序編碼進行後續流程。
也就是說,針對設置有標記的程序包,如果該程序包觸發了異常處理操作,則異常中斷子模塊在異常處理操作中不對該程序包進行獲取目的地址和判斷是否越界的操作,而是直接允許該程序包繼續按照其包含的程序編碼進行後續流程,退出異常處理操作流程。
告警模塊560,用於根據異常中斷模塊520記錄的現場信息輸出告警信息。例如,告警模塊560觸發告警燈亮;再如,告警才莫塊560向顯示屏幕或印表機等輸出現場信息。
從上述實施例四的描述可知,通過訪問保護設置模塊500對指定內存設置MMU訪問保護,且異常中斷模塊520採用修改後的異常處理操作,能夠在不需
17要針對程序包中讀和寫操作的程序代碼進行修改、且不影響程序包正常處理流程的情況下,及時監控到對指定內存的讀或寫數據操作越界的現場信息。通過
插樁模塊530對程序包中申請和釋放指定內存的操作進行插樁處理,使內存分配和釋放監控模塊510能夠方便及時的記錄指定內存的分配信息。在通常情況下,相對於程序包中讀和寫數據操作來說,程序包中申請和釋放指定內存的操作是非常少量的,因此,即便是採用修改程序包中程序編碼的插樁處理方式,對程序包的程序編碼的修改量也是非常少,從而在一定程度上避免了程序編譯時容易出現編譯問題、導致大型工程性能降低、以及執行文件龐大等問題。另外,如果採用在對程序包編譯過程中進行插樁處理方式,則能夠完全避免對程序包的程序編碼進行修改的現象。異常中斷模塊520通過對讀或寫數據操作的目的地址與內存分配信息進行對比,即便是目的地址中有l個字節不在內存分配信息所示的內存塊的地址範圍內,異常中斷模塊520也能夠精確的捕獲到內存訪問操作的越界行為。由於MMU訪問保護可以涉及到所有的內存,因此,本實施例四的內存監控裝置可以監控的內存大小可以不受限制。
通過以上的實施方式的描述,本領域的技術人員可以清楚地了解到本發明可藉助軟體加必需的石更件平臺的方式來實現,當然也可以全部通過石更件來實施,但很多情況下前者是更佳的實施方式。基於這樣的理解,本發明的技術方案對背景技術做出貢獻的全部或者部分可以以軟體產品的形式體現出來,該計算機軟體產品可以存儲在存儲介質中,如ROM/RAM、磁碟、光碟等,包括若干指令用以使得一臺計算機設備(可以是個人計算機,伺服器,或者網絡設備等)執行本發明各個實施例或者實施例的某些部分所述的方法。
雖然通過實施例描繪了本發明,本領域普通技術人員知道,本發明有許多變形和變化而不脫離本發明的精神,本發明的申請文件的權利要求包括這些變形和變化。
權利要求
1、一種內存監控方法,其特徵在於,包括為需要監控的內存設置內存管理單元訪問保護;針對程序包對所述內存的申請和釋放操作,記錄內存分配信息;在程序包執行對所述內存的讀或寫數據操作時,基於所述內存管理單元訪問保護而觸發異常處理操作;所述異常處理操作包括獲取所述讀或寫數據的目的地址,根據所述目的地址和所述內存分配信息判斷所述讀或寫數據的內存訪問操作是否越界,如果越界,則記錄所述內存訪問操作越界的現場信息,允許所述程序包繼續按照其包含的程序編碼進行後續流程,如果沒有越界,則允許所述程序包繼續按照其包含的程序編碼進行後續流程。
2、 如權利要求1所述的方法,其特徵在於,所述程序包為針對內存申請 和釋放操作記錄內存分配信息進行插樁處理的程序包。
3、 如權利要求1所述的方法,其特徵在於,所述越界的現場信息包括 調用棧信息、內存狀態、寄存器值和內存分配狀況中的任意一個或多個。
4、 如權利要求1或2或3所述的方法,其特徵在於,所述方法還包括 在不需要觸發所述異常處理操作的程序包執行對所述內存的讀或寫數據才乘作時,控制所述內存管理單元訪問保護處於關閉狀態,否則,控制所述內存 管理單元訪問保護處於打開狀態。
5、 如權利要求1或2或3所述的方法,其特徵在於,所述方法還包括 對所述內存進行讀或寫數據操作不需要判斷是否越界的程序包進行標記; 且所述異常處理操作還包括針對有所述標記的程序包,不進行所述獲取目的地址和所述是否越界的判 斷,直接允許所述程序包繼續按照其包含的程序編碼進行後續流程。
6、 如權利要求5所述的方法,其特徵在於,所述進行標記的程序包包括作業系統的內存管理操作的程序包。
7、 一種內存監控裝置,其特徵在於,包括訪問保護設置模塊,用於為需要監控的內存設置內存管理單元訪問保護; 內存分配和釋放監控模塊,用於針對程序包對所述內存的申請和釋放操 作,記錄內存分配信息;異常中斷模塊,用於在所述程序包執行對所述內存的讀或寫數據操作時, 基於所述內存管理單元訪問保護而被觸發,執行異常處理才喿作,所述異常處理 操作包括獲取所述讀或寫數據的目的地址,根據所述目的地址和所述內存分 配信息判斷所述讀或寫數據的內存訪問操作是否越界,如果越界,則記錄所述 內存訪問操作越界的現場信息,允許所述程序包繼續按照其包含的程序編碼進 行後續流程,如果沒有越界,則允許所述程序包繼續按照其包含的程序編碼進 行後續流程。
8、 如權利要求7所述的裝置,其特徵在於,所述裝置還包括 插樁模塊,用於在所述程序包運行過程中,針對程序包中的申請和釋放指定內存進行插樁。
9、 如權利要求7所述的裝置,其特徵在於,所述裝置還包括 訪問保護控制模塊,用於在不需要觸發所述異常處理操作的程序包執行對所述內存的讀或寫數據操作時,控制所述內存管理單元訪問保護處於關閉狀 態,否則,控制所述內存管理單元訪問保護處於打開狀態。
10、 如權利要求7所述的裝置,其特徵在於,所述裝置還包括 標記模塊,用於對所述內存進行讀或寫數據操作不需要判斷是否越界的程序包進4亍標記;且所述異常中斷模塊包括判斷子模塊,用於判斷對所述內存進行讀或寫數據操作的程序包是否有所述標記;異常中斷子模塊,用於在所述判斷子模塊的判斷結果為有所述標記時,直塊的判斷結果為沒有所述標記時,獲取所述讀或寫數據的目的地址,根據所述 目的地址和所述內存分配信息判斷所述讀或寫數據的內存訪問操作是否越界, 如果越界,則記錄所述內存訪問操作越界的現場信息,允許所述程序包繼續按 照其包含的程序編碼進行後續流程,如果沒有越界,則允許所述程序包繼續按 照其包含的程序編碼進^f於後續流程。
11、如權利要求7至10中任一權利要求所述的裝置,其特徵在於,所述裝 置還包括告警模塊,用於根據所述異常中斷模塊記錄的現場信息輸出告警信息。
全文摘要
本發明實施例公開了一種內存監控方法和裝置。其中的內存監控方法包括為需要監控的內存設置內存管理單元訪問保護,針對程序包對所述內存的申請和釋放操作記錄內存分配信息,在程序包執行對所述內存的讀或寫數據操作時,基於內存管理單元訪問保護而觸發異常處理操作獲取讀或寫數據的目的地址,根據目的地址和內存分配信息判斷讀或寫數據的內存訪問操作是否越界,如果越界,記錄內存訪問操作越界的現場信息,允許程序包繼續按照包含的程序編碼進行後續流程,如果沒有越界,允許程序包繼續按照包含的程序編碼進行後續流程。上述技術方案能夠實時監測到內存讀和寫數據越界的現場信息,實現了對內存的實時監控,且被監控的存儲區域的大小不受限制。
文檔編號G06F11/30GK101561775SQ200910084008
公開日2009年10月21日 申請日期2009年5月12日 優先權日2009年5月12日
發明者葉凌群, 赫 蘇 申請人:華為技術有限公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀