[發明專利]基于動態插樁的大塊內存分配系統及方法有效
| 申請號: | 201710398778.6 | 申請日: | 2017-05-31 |
| 公開(公告)號: | CN107239410B | 公開(公告)日: | 2020-06-09 |
| 發明(設計)人: | 張媛媛;胡正浩;劉慧;李卷孺;谷大武 | 申請(專利權)人: | 上海交通大學 |
| 主分類號: | G06F12/02 | 分類號: | G06F12/02;G06F12/06;G06F21/56 |
| 代理公司: | 上海交達專利事務所 31201 | 代理人: | 王毓理;王錫麟 |
| 地址: | 200240 *** | 國省代碼: | 上海;31 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 基于 動態 大塊 內存 分配 系統 方法 | ||
1.一種基于動態插樁的大塊內存分配系統,其特征在于,包括:內存布局獲取模塊、調用攔截模塊、內存隨杋化分配模塊和污點跟蹤模塊,其中:內存布局獲取模塊與內存隨機化分配模塊相連并傳輸空閑內存塊信息,調用攔截模塊與內存隨杋化分配模塊以及污點跟蹤模塊相連并傳輸上層應用程序系統調用信息,內存隨杋化分配模塊連接用戶進程并傳輸隨機化后的內存地址信息,污點跟蹤模塊與內存隨杋化分巸模塊相連并傳輸對bκk內有區域污點跟蹤信息;
所述的內存布局獲取模塊獲得程序內存布局信息,然后調用攔截模塊通過動態插樁工具攔截mmap和brk系統調用,即首先對二進制程序的基本塊進行指令翻譯;
然后對翻譯過后的基本塊檢査是香有系統調用指令;
最后對檢測到的系統調用指令進行插樁,內存隨機化分配模塊對mmap系統調用進行隨機化分配、污點跟蹤模塊對brk系統調用使用污點跟蹤處理,從而實現大塊內存分配;
所述的污點跟蹤處理是指:對brk系統調用使用污點跟蹤技術,并對內存塊進行實時遷移,具體包括:
①當第一次檢測到brk系統調用時開始污點跟蹤,對每條內存讀寫指令進行污點跟蹤,判斷是否存在brk內存區域的指針引用;
②當應用請求的brk內存超過閾值1時,對brk內存區域進行隨機化的遷移,并根據污點跟蹤信息更新指針引用;
③當應用請求的brk內存超過閾值2時,返回錯誤信息,表示brk內存分配失敗。
2.根據權利要求1所述的大塊內存分配系統,其特征是,所述的閾值1為:200MB,所述的閥值2為:512KB。
3.一種大塊內存分配方法,其特征在于,根據權利要求1所述系統實現。
4.根據權利要求3所述的大塊內存分配方法,其特征是,所述的獲得程序內存布局信息,具體包括
1.1)讀取并解析/proc/[pid]/maps位置下的內存文件中的數據;
1.2)跟蹤內存分配的情況,對內存布局信息進行實時更新。
5.根據權利要求3所述的大塊內存分配方法,其特征是,所述的隨機化分配,具體包括:
i)當上層應用請求的內存大小超過4KB時,從現有內存中滿足大小的最小的空閑內存塊開始,并隨機選取一個空閑內存塊,從中隨機選取一個偏移值進行內存分配;
ii)當請求內存不超過4KB,即一個內存頁時,從另一塊單頁空閑內存池中隨機進行分配;
iii)單頁空閑內存池在內存分配開始時進行初始化,為滿足隨機化要求,單頁空閑內存池中應保證一定數量的內存頁供隨機化選擇。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于上海交通大學,未經上海交通大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201710398778.6/1.html,轉載請聲明來源鉆瓜專利網。





