LinuxMalloc分析-从用户空间到内核空间
系统大全为您提供
1
2
3
4
5
6
7
8
9
10
11
chunk free_list
malloc(size)
foreach(chuck in freelist)
if(chunk.size >size)
return chunk + sizeof(chunk)
//空闲缓冲区无法满足需求,那么像系统批发内存
add = sys_brk(brk+(size +sizeof(chunk)))
newchunk = (chunk)add;
newchunk.size = size;
...
return newchunk + sizeof(newchunk)
【free】free操作是对堆空间的回收,回收的区块并不是立即返还给内核。而是将区块对应的chunk“标记”为空闲,加入空闲队列中。当然,如果空闲队列中出现相邻地址的chunk,那么可以考虑合并,已解决内存的碎片化,一遍满足之后的大内存申请的需求。一个简单的free伪代码:将释放的地址空间加入空闲链表中
?
1
2
3
free(add)
pchunk = add - sizeof(chunk)
insert_to_freelist(pchunk)
2.2 内核层 上文中,malloc的空闲chunk列表无法满足用户的需求,那么要通过sys_brk()进行堆的扩展,这时候才真正算得上进入内核空间。
sys_brk()涉及的主要操作有:
1. 在mm_struct中的堆上界brk延伸到newbrk:即申请一块vma,vma.start=brk vma.end=newbrk
2. 为该虚拟区间块进行物理内存的映射:从虚拟空间vma.start~vma.end中的每个内存页进行映射:
?
1
2
3
4
5
addr = vma.start
do{
handle_mm_fault(mm,vma,addr,...)
addr += PAGESIZE
}while(addr< vma.end)
函数handle_mm_fault为addr所在的内存页映射物理页面。实现虚拟空间到物理空间的换算和映射。1.通过alloc_page申请一个物理页面;2.换算addr在进程pdg映射中所在的pte地址;3.将addr对应的pte设置为物理页面的首地址。
2.3 虚拟地址与物理地址 当进程读取堆空间的地址vaddr时,虚拟地址vaddr到物理页面的映射如下图所示。
以上就是系统大全给大家介绍的如何使的方法都有一定的了解了吧,好了,如果大家还想了解更多的资讯,那就赶紧点击系统大全官网吧。
本文来自系统大全http://www.win7cn.com/如需转载请注明!推荐:win7纯净版
相关文章
- 微软 Win11 23H2 发布 11 月可选更新补丁 KB5070312
- 微软为 Win10 推送首个扩展安全更新 KB5068781
- Win11 26H1 预览版更新:Canary 通道 28000.1199 上线
- 微软推送 KB5072653 补丁:修复 Win10 首个 ESU 安装失败
- 微软发布 Win11 Beta/Dev 预览版更新补丁 KB5070303
- 微软 Win11 23H2 RP 22631.6269 预览版发布!更新内容一览
- 微软 Win11 24H2 / 25H2 发布 11 月累积更新补丁 KB5068861
- 微软为 Win11 23H2 家庭版 / 专业版推送最后一次更新 KB5068865
- 教你一眼就能辨别系统之家网站哪个是真的
- Win11 23H2 家庭版 / 专业版 11 月 11 日停服!一键升级 24H2/25H2
系统下载排行榜71011xp
【纯净之家】Windows7 64位 全新纯净版
2番茄花园 Win7 64位 快速稳定版
3【纯净之家】Windows7 SP1 64位 全补丁旗舰版
4JUJUMAO Win7 64位 最新纯净版
5【纯净之家】Windows7 32位 全新纯净版
6【纯净之家】Win7 64位 Office2007 办公旗舰版
7【雨林木风】Windows7 64位 装机旗舰版
8【电脑公司】Windows7 64位 免费旗舰版
9JUJUMAO Win7 64位旗舰纯净版
10【深度技术】Windows7 64位 官方旗舰版
【纯净之家】Windows10 22H2 64位 游戏优化版
2【纯净之家】Windows10 22H2 64位 专业工作站版
3【纯净之家】Windows10 企业版 LTSC 2021
4【纯净之家】Windows10企业版LTSC 2021 纯净版
5【深度技术】Windows10 64位 专业精简版
6联想Lenovo Windows10 22H2 64位专业版
7JUJUMAO Win10 X64 极速精简版
8【雨林木风】Windows10 64位 专业精简版
9深度技术 Win10 64位国庆特别版
10【纯净之家】Win10 64位 Office2007 专业办公版
【纯净之家】Windows11 23H2 64位 游戏优化版
2【纯净之家】Windows11 23H2 64位 纯净专业版
3风林火山Windows11下载中文版(24H2)
4【纯净之家】Windows11 23H2 64位 企业版
5【纯净之家】Windows11 23H2 64位 中文家庭版
6JUJUMAO Win11 24H2 64位 专业版镜像
7【纯净之家】Windows11 23H2 64位专业精简版
8【纯净之家】Windows11 23H2 64位 纯净家庭版
9Windows11 23H2 64位 官方正式版 V22631.6199
10JUJUMAO Win11 24H2 64位 精简版镜像
深度技术 GHOST XP SP3 电脑专用版 V2017.03
2深度技术 GGHOST XP SP3 电脑专用版 V2017.02
3Win7系统下载 PCOS技术Ghost WinXP SP3 2017 夏季装机版
4番茄花园 GHOST XP SP3 极速体验版 V2017.03
5萝卜家园 GHOST XP SP3 万能装机版 V2017.03
6雨林木风 GHOST XP SP3 官方旗舰版 V2017.03
7电脑公司 GHOST XP SP3 经典旗舰版 V2017.03
8雨林木风GHOST XP SP3完美纯净版【V201710】已激活
9萝卜家园 GHOST XP SP3 完美装机版 V2016.10
10雨林木风 GHOST XP SP3 精英装机版 V2017.04
热门教程
装机必备 更多+
重装工具


