免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 4010 | 回复: 11

glibc和操作系统的内核是如何协作管理内存的? [复制链接]

论坛徽章:
0
发表于 2009-06-23 14:41 |显示全部楼层
malloc和free是如何起作用的?
glibc是如何向系统申请内存和释放内存的?
操作系统是如何统计有多少空闲的内存,哪些是可以释放的,并回收再利用的?
呵呵,本人比较迷惑,请高人指点!

论坛徽章:
0
发表于 2009-06-23 14:52 |显示全部楼层

回复 #1 nian_cauc 的帖子

这个问题比较复杂,最好从代码中找答案。
大概是这么回事:
1. glibc是up layer,malloc向内核申请一段逻辑地址空间sys_brk(?)
2. 内核收到请求,创建vm_area_struct( start, end )给进程,物理页面并未分配
3. 当访问到相应的物理地址时,缺页异常产生,内核真正的分配物理页面alloc_page,从buddy system中返回空闲的页面
4. free的过程刚好相反,把逻辑地址返还给内核,内核会把对应的物理页面标记为空闲页面
5. 内核通过buddy system管理内存,从中可以知道每个页面是否被使用

论坛徽章:
0
发表于 2009-06-23 15:24 |显示全部楼层

回复 #2 bobcuer 的帖子

我想深入的学习linux,有什么好的建议没有,目前手中有linux源码情景分析一书。不知道还有什么比较好的书籍或实验方法。

论坛徽章:
0
发表于 2009-06-23 15:48 |显示全部楼层

回复 #3 nian_cauc 的帖子

入门的话,这本书太复杂了。有个旧版(0.11)内核注释适合入门级别读,慢慢来

论坛徽章:
0
发表于 2009-06-23 23:05 |显示全部楼层

回复 #4 bobcuer 的帖子

以后遇到不懂的向你请教。先谢谢了,呵呵!

论坛徽章:
0
发表于 2011-10-26 09:37 |显示全部楼层
这个问题比较复杂,最好从代码中找答案。
大概是这么回事:
1. glibc是up layer,malloc向内核申请一段逻 ...
bobcuer 发表于 2009-06-23 14:52



    哎,以前介绍操作系统的书里只有那么一笔,说是什么是内存在收到缺页异常在真正分配,一直很模糊,要么将系统只讲系统,讲编程的只讲编程,总觉缺少一种融会贯通的书。。。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
发表于 2011-10-26 15:19 |显示全部楼层
额滴神啊,这两天咋尽碰上一上手就是高手的人呢。

上来就问这些,难道俺们当初那循序渐进的学习方式真的落伍了 。

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
发表于 2011-10-26 15:34 |显示全部楼层
额滴神啊,这两天咋尽碰上一上手就是高手的人呢。

上来就问这些,难道俺们当初那循序渐进的学习方式真的 ...
snow888 发表于 2011-10-26 15:19



    要理解新手急于求成的心理,毕竟都是从新手过来的。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
发表于 2011-10-26 15:36 |显示全部楼层
要理解新手急于求成的心理,毕竟都是从新手过来的。
MMMIX 发表于 2011-10-26 15:34



    再急也得从基础来吧,一上来就问到内核级的问题。

汗啊,咱们都回家种地去得了 。。。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
发表于 2011-10-26 15:39 |显示全部楼层
要理解新手急于求成的心理,毕竟都是从新手过来的。
MMMIX 发表于 2011-10-26 15:34



    其实楼主问的问题,有基础了,直接看 glibc 的源码,是能看懂的。至于说后面的操作系统内核的内存管理机制,可以看 linux 内核详解,或者是 linux 内核场景分析,那里面有很详细的介绍 。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP