[發明專利]程序共享內存的地址轉換方法和裝置有效
| 申請號: | 201210590326.5 | 申請日: | 2012-12-31 |
| 公開(公告)號: | CN103077120A | 公開(公告)日: | 2013-05-01 |
| 發明(設計)人: | 萬青 | 申請(專利權)人: | 東軟集團股份有限公司 |
| 主分類號: | G06F12/02 | 分類號: | G06F12/02 |
| 代理公司: | 北京鴻元知識產權代理有限公司 11327 | 代理人: | 陳英俊 |
| 地址: | 110179 遼*** | 國省代碼: | 遼寧;21 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 程序 共享 內存 地址 轉換 方法 裝置 | ||
技術領域
本發明涉及計算機系統中的地址轉換方法,更為具體地,涉及一種程序共享內存的地址轉換方法和裝置。
背景技術
當應用程序與內核程序共享內存時,應用程序與內核程序通過不同的地址空間訪問同一塊物理內存。
圖1示出了連續物理內存空間的映射示意圖。如圖1所示,假設應用程序與內核程序共享一塊連續的物理內存,其中:
C為物理地址空間;c為物理地址;
A為線性地址空間;a為線性地址;
B為線性地址空間;b為線性地址;
線性地址a屬于A,b屬于B,c屬于C,應用程序通過線性地址空間A訪問物理地址空間C,內核程序通過線性地址空間B訪問物理地址空間C。線性地址a和線性地址b通過地址轉換對應同一物理地址c,那么a和b之間則存在一個地址差,同時這個地址差也是線性地址空間A和線性地址空間B的空間差。應用程序將線性地址空間A中的線性地址a傳給內核程序后,內核程序可以根據空間差計算出線性地址空間B中對應的線性地址,反之同樣成立。這樣應用程序和內核程序就可以實現共享內存。
程序運行離不開頻繁的內存訪問,因此地址空間轉換的效率就顯得尤為重要。對于共享一塊物理內存這種情況,由于只存在一個空間差,所以空間轉換時間復雜度為O(1)。但實際上,共享多塊不連續物理內存才是普遍情況,這時空間轉換的時間復雜度會變大。當共享n塊不連續物理內存時,就會存在n個地址空間差,那么空間轉換的時間復雜度就為O(logn)。
要使空間轉換的時間復雜度始終為O(1),最直接的方法就是確保申請一塊連續物理內存。但問題是申請一塊足夠大的連續物理內存常常無法成功,尤其系統運行時間越長,內存碎片越多,成功的可能就越小。為了能申請到一塊足夠大的連續物理內存,通常要對內核內存管理系統進行深度修改。對于閉源系統,這樣的修改不可能。即便是開源系統,因為幾乎所有其它子系統都要使用內存管理系統,修改起來也會很復雜,并且還要考慮系統版本更新帶來的維護開銷,對內核內存管理系統進行深度修改這個方法雖然直接但不理想。
發明內容
鑒于上述問題,本發明的目的是提供一種程序共享內存的地址轉換方法和裝置,用以在共享非連續物理內存的情況下保證地址空間轉換的時間復雜度為O(1),提高地址空間轉換效率。
本發明的程序共享內存的地址轉換方法,
用于將為程序分配的物理內存空間映射到虛擬地址空間,所述為程序分配的物理內存空間包括所述程序在所述物理內存空間中所占用的物理內存塊和所述物理內存塊之間的間隔塊,所述方法包括:
1)根據所述物理內存空間確定所述物理內存空間的起始地址和其中所占用的物理內存塊以及所述間隔塊的順序和大小;
2)根據所述物理內存空間的起始地址確定相應虛擬地址空間的起始地址,其中,所述虛擬地址空間具有不小于所述物理內存空間的連續空間;
3)將所述物理內存空間從所述虛擬地址空間的起始地址起按序映射到所述虛擬地址空間的連續空間中,其中包括所占用的物理內存塊以及所占用的物理內存塊之間的間隔塊的順序和大小;
4)根據所述不同的虛擬地址空間對應所述物理內存空間的差進行地址轉換,其中,所述物理內存空間映射到不同的虛擬地址空間的起始地址的差即為所述不同的虛擬地址空間對應所述物理內存空間的差。
另一方面,本發明還提供一種程序共享內存的地址轉換裝置,用于將為程序分配的物理內存空間映射到虛擬地址空間,所述為程序分配的物理內存空間包括所述程序在所述物理內存空間中所占用的物理內存塊和所述物理內存塊之間的間隔塊,所述裝置包括:
物理內存空間分析單元,用于根據所述物理內存空間確定所述物理內存空間的起始地址和其中所占用的物理內存塊以及所述間隔塊的順序和大小;
虛擬地址空間確定單元,用于根據所述物理內存空間的起始地址確定相應虛擬地址空間的起始地址,其中,所述虛擬地址空間具有不小于所述物理內存空間的連續空間;
映射單元,用于將所述物理內存空間從所述虛擬地址空間的起始地址起按序映射到所述虛擬地址空間的連續空間中,其中包括所占用的物理內存塊以及所占用的物理內存塊之間的間隔塊的順序和大小;
地址轉換單元,用于根據不同的虛擬地址空間對應物理內存空間的差進行地址轉換,其中,物理內存空間映射到不同的虛擬地址空間的起始地址的差即為該不同的虛擬地址空間對應物理內存空間的差。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于東軟集團股份有限公司,未經東軟集團股份有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201210590326.5/2.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:一種抽油機的智能節電配電裝置
- 下一篇:并溝線夾外護套





