[發明專利]內存管理方法及系統有效
申請號: | 201310364517.4 | 申請日: | 2013-08-19 |
公開(公告)號: | CN103455433A | 公開(公告)日: | 2013-12-18 |
發明(設計)人: | 龔福才;宋懷明;苗艷超;劉新春;邵宗有 | 申請(專利權)人: | 曙光信息產業股份有限公司 |
主分類號: | G06F12/02 | 分類號: | G06F12/02;G06F9/44 |
代理公司: | 北京新知遠方知識產權代理事務所(普通合伙) 11397 | 代理人: | 張艷 |
地址: | 300384 天津市西青區華*** | 國省代碼: | 天津;12 |
權利要求書: | 查看更多 | 說明書: | 查看更多 |
摘要: | |||
搜索關鍵詞: | 內存 管理 方法 系統 | ||
技術領域
本發明涉及內存管理方法及系統。
背景技術
內存是計算機中重要的部件之一,它是與CPU進行溝通的橋梁。計算機中所有程序的運行都是在內存中進行的,因此內存的性能對計算機的影響非常大。內存(Memory)也稱為內存儲器,其作用是用于暫時存放CPU中的運算數據,以及與硬盤等外部存儲器交換的數據。只要計算機在運行中,CPU就會把需要運算的數據調到內存中進行運算,當運算完成后CPU再將結果傳送出來,內存的運行也決定了計算機的穩定運行。
因此,大量運行的程序需要經常使用內存空間。每個程序所需的內存空間必須通過向系統內核申請而得到。但是,如果實時地頻繁地申請內存空間將導致如下的問題:
第一,程序運行速度減慢。通常,操作系統有一個記錄空閑內存地址的鏈表。當系統收到一個程序的內存空間申請時,會遍歷該鏈表,尋找第一個空間大于所申請內存空間的堆結點,然后將該結點從空閑結點鏈表中刪除,并將該結點的空間分配給這個程序。對于大多數系統,會在這塊內存空間中的首地址處記錄本次分配的大小,這樣,代碼中的delete語句才能正確地釋放這個內存空間。然而,由于找到的堆結點的大小不一定正好等于所申請內存空間的大小,系統會自動地將多余的那部分重新放入空閑鏈表中。因此,向系統申請內存空間的操作比較復雜,并且申請內存需消耗的時間也遠遠大于對內存操作的時間。如果程序在運行過程中實時地頻繁申請內存空間,將會導致程序效率低下。
第二,碎片內存問題嚴重。“碎片內存”指的是一個系統中所有不可用的空閑內存。這些資源之所以仍然未被使用,是因為負責分配內存的分配器使這些內存無法使用。這一問題通常都會發生,原因在于空閑內存以小而不連續方式出現在不同的位置。如果程序運行過程中實時地申請內存空間,必然是這次需要多少內存空間就申請多少內存空間。由于同時運行的程序很多,可能就會存在多個程序同時在申請內存空間。如果內核按照頁的方式來順序分配內存空間,那么內存空間在剛剛開機時候大部分為空白可用狀態。但是,隨著運行時間的增長,所使用內存空間會慢慢的向后覆蓋過去,前面使用完后釋放掉的內存空間可能是小塊的,但后續其他程序申請的內存空間比這個塊大,那么這些小塊的內存空間就分配不出去。因此,雖然例如系統顯示有1G的剩余內存空間,但此時如果有一個程序啟動起來要一次性申請500MB的連續內存空間,可能也會提示內存空間不足,因此沒有大于500MB的連續內存空間可以分配。顯然,這實際上造成了內存空間浪費和程序執行效率的下降。一個不斷產生內存碎片的系統,不管產生的內存碎片多么小,只要時間足夠長,就會將內存用完。這種情況在許多嵌入式系統中,特別是在高可用性系統中是不可接受的。
鑒于以上的種種原因,一個需要頻繁使用大量內存空間的系統應當對系統申請得到的內存空間進行統一管理,并且將已經申請到的內存空間重復使用。并且,在系統剛剛啟動的時候,就預先分配好基本足夠多的內存以供以后使用,并且,盡量減少內存分配的次數。
圖1示出了當前較常用的一種內存分配技術。在內存塊的使用過程中,主要涉及到下面兩種操作:
(1)使用和放棄使用內存塊。當系統剛啟動時,先申請一些內存空間塊,并將全部的內存塊指針或標識放入″可使用空間列表″,當系統需要內存塊時,將某個內存塊標識從″可使用空間列表″中移除,放入″已使用空間列表″中。當系統不需要某內存塊時,將該內存塊的標識再放回去。
(2)內存塊擴容。當系統中已經申請的內存塊已經全部使用時,需要重新申請內存塊以供使用。這時,需要首先申請一個比現有內存空間更大的內存空間。然后,將已經使用的塊中的數據全部拷貝到新的塊中。最后,釋放舊的內存空間。
在圖1中,上方的左右箭頭示出了上述第一種情形,即當需要使用某內存空間塊時,將某塊指針或標識向右移動,從“可使用空間列表”移動到“已使用空間列表”;當不需要使用某內存空間塊時,將某塊指針或標識向左移動,從“已使用空間列表”移動到“可使用空間列表”。右側的上下箭頭示出了上述第二種情況,即當內存空間塊不足時,將某塊指針或標識向右移動,分三步完成擴容:(1)申請更大的內存塊;(2)拷貝舊數據塊的數據至新的更大內存塊;(3)釋放舊數據塊。
上述現有技術存在如下的問題:
(1)當內存塊不足時,需要重新申請一個更大的連續內存塊。隨著系統的運行,可能更大的連續內存塊越來越困難去申請。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于曙光信息產業股份有限公司,未經曙光信息產業股份有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201310364517.4/2.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:垃圾架式無煙焚燒爐
- 下一篇:一種圓管節點轉換結構及其制作方法