[發明專利]一種面向共享內存式協處理器的堆內存管理方法和裝置有效
| 申請號: | 202210131446.2 | 申請日: | 2022-02-14 |
| 公開(公告)號: | CN114185687B | 公開(公告)日: | 2022-05-24 |
| 發明(設計)人: | 張昂;廖湘科;崔英博;楊燦群;黃春;唐滔;彭林;夏澤宇;郭逸飛 | 申請(專利權)人: | 中國人民解放軍國防科技大學 |
| 主分類號: | G06F9/50 | 分類號: | G06F9/50;G06F15/167 |
| 代理公司: | 長沙國科天河知識產權代理有限公司 43225 | 代理人: | 李楊 |
| 地址: | 410073 湖*** | 國省代碼: | 湖南;43 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 面向 共享 內存 處理器 管理 方法 裝置 | ||
1.一種面向共享內存式協處理器的堆內存管理方法,其特征在于,所述方法包括:
通過CPU獲取協處理器要申請的協處理器堆內存空間大小信息,根據所述協處理器堆內存空間大小信息通過第一接口函數申請堆內存空間,將申請的所述堆內存空間的虛地址轉換為物理地址,并將所述物理地址傳遞至協處理器端程序;所述CPU和所述協處理器構成異構系統;所述協處理器為共享內存式協處理器;
通過所述第一接口函數將所述申請的堆內存空間分別組織為可用鏈表和已分配鏈表;所述可用鏈表和所述已分配鏈表的每個節點存儲的信息包括:當前節點的內存大小,指向下一節點的指針;
在協處理器端程序申請內存使用時,通過第二接口函數從可用鏈表頭開始尋找第一塊大小可用的內存分配,并將新分配的內存加入所述已分配鏈表的鏈表尾;
在協處理器端程序執行過程中,通過第三接口函數釋放協處理器端堆內存空間,并將新釋放的內存加入所述可用鏈表;
在協處理器端程序執行完畢后,通過第四接口函數根據所述虛地址清理協處理器堆內存空間。
2.根據權利要求1所述的方法,其特征在于,通過所述第一接口函數將所述申請的堆內存空間分別組織為可用鏈表和已分配鏈表,包括:
通過所述第一接口函數初始化可用鏈表和已分配鏈表;將所述可用鏈表的可用鏈表頭指針指向所述物理地址;
將所述已分配鏈表的可分配鏈表頭指針賦值為空。
3.根據權利要求2所述的方法,其特征在于,在協處理器端程序申請內存使用時,通過第二接口函數從可用鏈表頭開始尋找第一塊大小可用的內存分配,并將新分配的內存加入所述已分配鏈表的鏈表尾,包括:
在協處理器端程序申請內存使用時,通過第二接口函數將所述可用鏈表頭指針賦值給當前內存塊指針;
若當前內存塊的大小大于等于申請內存的大小,則將所述當前內存塊指針作為分配的物理地址返回;否則,將下一內存塊指針作為當前內存塊指針,判斷所述當前內存塊的大小是否滿足申請內存的大小,直到找到大小合適的內存塊,并將其指針作為分配的物理地址返回;
將新分配的內存加入所述已分配鏈表的鏈表尾。
4.根據權利要求3所述的方法,其特征在于,若當前內存塊的大小大于等于申請內存的大小,則將所述當前內存塊指針作為分配的物理地址返回之后還包括:
獲取當前內存塊的大小;
獲取申請內存的大小;
將所述當前內存塊的大小減去所述申請內存的大小,作為當前空閑內存塊的大小;
將所述當前空閑內存塊加入所述可用鏈表。
5.根據權利要求4所述的方法,其特征在于,在協處理器端程序執行過程中,通過第三接口函數釋放協處理器端堆內存空間,包括:
在協處理器端程序執行過程中,通過第三接口函數獲取需要釋放的內存塊的物理地址;
從已分配鏈表頭開始,依次比較所述已分配鏈表中當前內存塊的指針和所述需要釋放的內存塊的物理地址,若兩者相等,將所述已分配鏈表中當前內存塊前一內存塊的指向下一節點的指針賦值為當前內存塊向后第二塊內存的地址。
6.根據權利要求5所述的方法,其特征在于,所述將新釋放的內存加入所述可用鏈表,包括:
若新釋放的內存與所述可用鏈表中的空閑內存塊相鄰,則將所述新釋放的內存與所述可用鏈表中相鄰的內存塊合并;
若新釋放的內存與所述可用鏈表中的空閑內存塊不相鄰,則遍歷所述可用鏈表,按照內存地址的先后順序將所述新釋放的內存塊加入所述可用鏈表中。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于中國人民解放軍國防科技大學,未經中國人民解放軍國防科技大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202210131446.2/1.html,轉載請聲明來源鉆瓜專利網。





