[發明專利]一種用戶態與內核態共享內存的管理方法和裝置有效
| 申請號: | 201210523851.5 | 申請日: | 2012-12-04 |
| 公開(公告)號: | CN103034544A | 公開(公告)日: | 2013-04-10 |
| 發明(設計)人: | 趙丹 | 申請(專利權)人: | 杭州迪普科技有限公司 |
| 主分類號: | G06F9/54 | 分類號: | G06F9/54 |
| 代理公司: | 北京博思佳知識產權代理有限公司 11415 | 代理人: | 林祥 |
| 地址: | 310051 浙江省杭*** | 國省代碼: | 浙江;33 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 用戶 內核 共享 內存 管理 方法 裝置 | ||
技術領域
本發明涉及數據交換技術,尤其涉及一種用戶態與內核態共享內存的管理方法和裝置。
背景技術
隨著互聯網(Internet)的迅猛發展,內核態進程和用戶態進程之間的數據交互越來越頻繁,并且交互的數據量越來越大。內核態進程和用戶態進程各自使用自己的地址空間,兩個狀態看到的虛擬地址空間是分離的,內核態進程和用戶態進程之間的數據交互需要專門的機制例如共享內存機制來實現。
在共享內存機制中,通過將一段物理內存同時映射到內核態地址空間和用戶態地址空間,來實現內核態進程和用戶態進程之間的數據通信。內存映射完成后,內核態進程和用戶態進程分別會獲得共享內存的基地址(虛擬地址)和長度。由于內核態進程和用戶態進程所獲取的基地址是不同的,所以要是使用傳統的鏈表內保存共享內存中內存對象的起始地址(虛擬地址)的方法來動態管理共享內存,就無法解決用戶態進程和內核態進程通用的問題。
具體地,現有技術中主要提供如下兩種方案來進行共享內存的管理。
方案一
一次性映射一大塊共享內存,然后靜態為使用者(內核態進程或用戶態進程)分配共享內存空間,即不管使用者最終使用多少內存,統一給使用者分配一定數量的內存。
該方案的缺點在于:1、如果使用者最終使用的內存小于為其分配的內存,會浪費內存;2、如果使用者最終使用的內存大于為其分配的內存,將導致內存越界,破壞其他內存使用者存儲的信息;3、不利于內存的回收和重新使用。
方案二
不同使用者(內核態進程或用戶態進程)各自映射所需的共享內存,使用后將其釋放,下次使用再重新映射。
該方案的缺點在于:每次內核態進程和用戶態進程交互數據都需要進行共享內存的映射,這樣增大了系統的開銷,降低了內核態進程和用戶態進程之間數據交互效率。
發明內容
有鑒于此,本發明的目的是提供一種用戶態與內核態共享內存的管理方法和裝置,能夠提高數據的交互效率,同時節約內存。
為實現上述目的,本發明提供技術方案如下:
一種用戶態與內核態共享內存的管理方法,包括:
將預定長度的物理內存作為共享內存分別映射到用戶態地址空間和內核態地址空間,映射完成后,用戶態進程和內核態進程在各自的地址空間分別得到共享內存的基地址;
將多個偽鏈表的頭節點保存到共享內存的最后區域,其中,偽鏈表的節點的結構包括對象類型和偽鏈表中下一個節點的起始地址相對于基地址的偏移,且每種對象類型對應一種長度的內存對象;
根據使用者需要申請內存的大小,從所述多個偽鏈表中選取一個偽鏈表,從所選取的偽鏈表中選取一個或多個節點,將選取的一個或多個節點對應的內存對象分配給該使用者,并將選取的一個或多個節點從所選取的偽鏈表中摘除,其中,所述使用者為內核態進程或用戶態進程,所述使用者能夠將自己的基地址加上所分配的內存對象的起始偏移得到內存對象的起始地址,并根據所述起始地址對所述內存對象進行操作。
一種用戶態與內核態共享內存的管理裝置,包括:
內存映射單元,用于將預定長度的物理內存作為共享內存分別映射到用戶態地址空間和內核態地址空間,映射完成后,用戶態進程和內核態進程在各自的地址空間分別得到共享內存的基地址;
偽鏈表建立單元,用于將多個偽鏈表的頭節點保存到共享內存的最后區域,其中,偽鏈表的節點的結構包括對象類型和偽鏈表中下一個節點的起始地址相對于基地址的偏移,且每種對象類型對應一種長度的內存對象;
內存分配單元,用于根據使用者需要申請內存的大小,從所述多個偽鏈表中選取一個偽鏈表,從所選取的偽鏈表中選取一個或多個節點,將選取的一個或多個節點對應的內存對象分配給該使用者,并將選取的一個或多個節點從所選取的偽鏈表中摘除,其中,所述使用者為內核態進程或用戶態進程,所述使用者能夠將自己的基地址加上所分配的內存對象的起始偏移得到內存對象的起始地址,并根據所述起始地址對所述內存對象進行操作。
與現有技術相比,本發明提供的內核態和用戶態共享內存的管理方案,應用于內核態進程和用戶態進程之間存在大量數據交互的場合時,可以提高數據的交互效率,同時節約內存。
附圖說明
圖1是本發明實施例的用戶態與內核態共享內存的管理方法流程圖;
圖2是本發明實施例中共享內存的構成示意圖;
圖3是本發明實施例中普通對象對應的內存結構圖;
圖4是本發明實施例中特殊對象對應的內存結構圖。
具體實施方式
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于杭州迪普科技有限公司,未經杭州迪普科技有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201210523851.5/2.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:一種供電式熱水器蓄水箱
- 下一篇:一種防震抗沖擊空調柜





