[發明專利]Linux系統平臺上指定地址范圍分配物理內存的方法無效
| 申請號: | 200710306110.0 | 申請日: | 2007-12-28 |
| 公開(公告)號: | CN101470667A | 公開(公告)日: | 2009-07-01 |
| 發明(設計)人: | 武波;陳玄同;劉文涵 | 申請(專利權)人: | 英業達股份有限公司 |
| 主分類號: | G06F12/06 | 分類號: | G06F12/06 |
| 代理公司: | 北京律誠同業知識產權代理有限公司 | 代理人: | 梁 揮;祁建國 |
| 地址: | 臺灣省*** | 國省代碼: | 中國臺灣;71 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | linux 系統 平臺 指定 地址 范圍 分配 物理 內存 方法 | ||
技術領域
本發明涉及一種內存分配方法,尤其涉及一種Linux系統平臺上指定地址范圍分配物理內存的方法。
背景技術
目前,內存測試是硬件診斷方案中一項非常重要的功能,其流程主要由兩部分組成:內存分配和測試算法。其中,測試算法規定了讀寫內存的規則,不同的測試算法會針對不同的內存錯誤類型進行檢測,現有技術的測試算法的相關內容在一些內存測試算法的文獻中都有專門的介紹,在此不再贅述。內存分配,是進行內存讀寫測試的重要前提,它將直接關系到測試效果能否達成,例如:能否測試到真正的物理內存或者是否會重復測試同一塊內存等。然而,不同的操作系統平臺管理物理內存的方式有所不同,并沒有統一的規則,因此內存分配是相對比較復雜的,需要針對不同的操作系統平臺分別加以考慮。
在Linux操作系統(一種可免費使用的多用戶的計算機作業系統)平臺上,由于用戶態沒有提供分配物理內存的方法,所以現有技術的做法只能通過驅動程序,在內核(Kernel)中實現分配物理內存的功能,然后對外提供接口。然而要使分配出的物理內存可以在用戶態隨意讀寫,還需要把分配到的物理內存映像到用戶態的虛擬地址空間里,在這一點上現有技術中所使用的原理和方法都是相似的,在此不再贅述。而其中,主要的不同就在于分配物理內存的方法。
目前現有技術的分配物理內存的方法有:
方法一:一種分配指定物理內存頁的方法。這種方法可以指定地址范圍分配物理內存,此方法對于內存分配的最小單位為頁,頁的大小視Linux系統內核(Kernel)的配置所定。但是此方法每次只能分配一個內存頁,效率太低,而且可能會占用相鄰的其它內存頁,造成不必要的資源浪費。因此,這種方法局限性較大,不適用于對大量物理內存的測試。
方法二:直接調用Linux系統內核(Kernel)提供的分配成塊的連續物理內存的接口。這種方法可以分配大量的物理內存,適用于對大量物理內存的測試,但此方法的主要缺點是無法指定地址范圍進行物理內存的分配(這是由于Linux系統內核中組織物理內存的數據結構的限制,使其不便于指定地址范圍進行物理內存的分配),因而也就無法用于針對特定的內存單元或者指定插槽上的內存進行測試。
發明內容
本發明所要解決的技術問題在于提供一種Linux系統平臺上指定地址范圍分配物理內存的方法,應用于Linux操作系統下的物理內存的測試進程中,此方法可根據所要分配內存的指定地址范圍及大小,對系統中大量的物理內存進行指定地址范圍的分配,進而為Linux操作系統下的物理內存的測試提供了有效的支持。
位實現上述目的,本發明所提供的一種Linux系統平臺上指定地址范圍分配物理內存的方法,包含以下步驟:
獲得所要分配內存的指定地址范圍及大小;針對系統中每一個節點(Node),查看其包含的內存的地址范圍是否與指定地址范圍有交集;如果有交集,則對各節點中的每一個頁區(Zone),查看其包含的內存的地址范圍是否與指定地址范圍有交集;如果仍有交集,則在各頁區的每中央處理器頁框高速緩存(Per-CPU?Page?Frame?Cache)和伙伴系統(Buddy?System)中的內存塊鏈表中,查找符合上述大小及指定地址范圍要求的內存塊;將查找到的內存塊從內存塊鏈表中經拆分后取出;以及在各頁區中重復查找符合上述大小及指定地址范圍要求的內存塊并將其拆分后取出,直至分配滿足了所要求的大小、或者各頁區中已沒有符合指定地址范圍的內存塊、或者各頁區的空閑內存已減少至系統內核安全的下限后,傳送所有分配出來的內存塊的信息,以用于對內存進行映像、檢測和釋放。
綜上所述,本發明的優點在于:
本發明所提供的一種Linux系統平臺上指定地址范圍分配物理內存的方法,可實現指定地址范圍的、大量的物理內存的分配,其通過改進整體分配流程,提供了一次可分配多個內存頁/塊的功能接口,并利用內核中的數據結構,改進查找方法,加快查找速度,同時,通過拆分內存塊的方法,避免了對多余內存頁的占用。因此,不僅結合了現有技術中兩種分配物理內存的方法的優點,同時也克服了它們所具有的缺陷,進而為Linux操作系統下的物理內存的測試提供了有效的支持。其主要的優點包含:分配到的是實際的物理內存;可以指定地址范圍進行分配;可以一次分配大量的內存;不會占用相鄰的其它內存頁,因而避免了現有技術中可能造成不必要的資源浪費的問題;可以用于針對特定的內存單元或者指定插槽上的內存進行測試。
以下結合附圖和具體實施例對本發明進行詳細描述,但不作為對本發明的限定。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于英業達股份有限公司,未經英業達股份有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/200710306110.0/2.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:向多個存儲介質復制數據的裝置、系統及復制方法
- 下一篇:一種數據存儲方法





