免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123
最近访问板块 发新帖
楼主: 瀚海书香
打印 上一主题 下一主题

linux内存管理讨论——欢迎大家围观! [复制链接]

论坛徽章:
6
金牛座
日期:2013-10-08 10:19:10技术图书徽章
日期:2013-10-14 16:24:09CU十二周年纪念徽章
日期:2013-10-24 15:41:34狮子座
日期:2013-11-24 19:26:19未羊
日期:2014-01-23 15:50:002015年亚洲杯之阿联酋
日期:2015-05-09 14:36:15
21 [报告]
发表于 2012-04-09 12:28 |显示全部楼层
回复 66# titer1
2.用户线程共享 进程的 用户空间,但是核心空间 堆栈是各自独立的

由于linux本身不支持用户态线程,所以这个不同的线程库有不同的实现方式。

   

论坛徽章:
6
金牛座
日期:2013-10-08 10:19:10技术图书徽章
日期:2013-10-14 16:24:09CU十二周年纪念徽章
日期:2013-10-24 15:41:34狮子座
日期:2013-11-24 19:26:19未羊
日期:2014-01-23 15:50:002015年亚洲杯之阿联酋
日期:2015-05-09 14:36:15
22 [报告]
发表于 2012-04-12 14:42 |显示全部楼层
回复 88# titer1
这个或许有用http://linux.sheup.com/linux/38/linux21081.htm
1、 page cache及swap cache中页面的区分:一个被访问文件的物理页面都驻留在page cache或swap cache中,一个页面的所有信息由struct page来描述。struct page中有一个域为指针mapping ,它指向一个struct address_space类型结构。page cache或swap cache中的所有页面就是根据address_space结构以及一个偏移量来区分的。
2、文件与 address_space结构的对应:一个具体的文件在打开后,内核会在内存中为之建立一个struct inode结构,其中的i_mapping域指向一个address_space结构。这样,一个文件就对应一个address_space结构,一个 address_space与一个偏移量能够确定一个page cache 或swap cache中的一个页面。因此,当要寻址某个数据时,很容易根据给定的文件及数据在文件内的偏移量而找到相应的页面。
3、进程调用mmap()时,只是在进程空间内新增了一块相应大小的缓冲区,并设置了相应的访问标识,但并没有建立进程空间到物理页面的映射。因此,第一次访问该空间时,会引发一个缺页异常。
4、对于共享内存映射情况,缺页异常处理程序首先在swap cache中寻找目标页(符合address_space以及偏移量的物理页),如果找到,则直接返回地址;如果没有找到,则判断该页是否在交换区 (swap area),如果在,则执行一个换入操作;如果上述两种情况都不满足,处理程序将分配新的物理页面,并把它插入到page cache中。进程最终将更新进程页表。 注:对于映射普通文件情况(非共享映射),缺页异常处理程序首先会在page cache中根据address_space以及数据偏移量寻找相应的页面。如果没有找到,则说明文件数据还没有读入内存,处理程序会从磁盘读入相应的页面,并返回相应地址,同时,进程页表也会更新。
5、所有进程在映射同一个共享内存区域时,情况都一样,在建立线性地址与物理地址之间的映射之后,不论进程各自的返回地址如何,实际访问的必然是同一个共享内存区域对应的物理页面。 注:一个共享内存区域可以看作是特殊文件系统shm中的一个文件,shm的安装点在交换区上。

   

论坛徽章:
6
金牛座
日期:2013-10-08 10:19:10技术图书徽章
日期:2013-10-14 16:24:09CU十二周年纪念徽章
日期:2013-10-24 15:41:34狮子座
日期:2013-11-24 19:26:19未羊
日期:2014-01-23 15:50:002015年亚洲杯之阿联酋
日期:2015-05-09 14:36:15
23 [报告]
发表于 2012-04-12 16:16 |显示全部楼层
回复 91# doit_zzg
多谢分享!

   

论坛徽章:
6
金牛座
日期:2013-10-08 10:19:10技术图书徽章
日期:2013-10-14 16:24:09CU十二周年纪念徽章
日期:2013-10-24 15:41:34狮子座
日期:2013-11-24 19:26:19未羊
日期:2014-01-23 15:50:002015年亚洲杯之阿联酋
日期:2015-05-09 14:36:15
24 [报告]
发表于 2012-04-14 13:45 |显示全部楼层
回复 98# rootsecurity
的确是这样的。除非内存的确紧张了,否则没必要手动的清楚page cache。

   

论坛徽章:
6
金牛座
日期:2013-10-08 10:19:10技术图书徽章
日期:2013-10-14 16:24:09CU十二周年纪念徽章
日期:2013-10-24 15:41:34狮子座
日期:2013-11-24 19:26:19未羊
日期:2014-01-23 15:50:002015年亚洲杯之阿联酋
日期:2015-05-09 14:36:15
25 [报告]
发表于 2012-04-15 09:07 |显示全部楼层
回复 103# titer1
回答的不错,多谢分享。有很多地方不是简单的一句话就能说明白的。另外建议结合x86_64或者arm,描述这些问题。

   

论坛徽章:
6
金牛座
日期:2013-10-08 10:19:10技术图书徽章
日期:2013-10-14 16:24:09CU十二周年纪念徽章
日期:2013-10-24 15:41:34狮子座
日期:2013-11-24 19:26:19未羊
日期:2014-01-23 15:50:002015年亚洲杯之阿联酋
日期:2015-05-09 14:36:15
26 [报告]
发表于 2012-04-15 09:08 |显示全部楼层
回复 100# EnjoyKernel
本来是100楼的,但是有两个广告帖子删除了,所以就。。。

   

论坛徽章:
6
金牛座
日期:2013-10-08 10:19:10技术图书徽章
日期:2013-10-14 16:24:09CU十二周年纪念徽章
日期:2013-10-24 15:41:34狮子座
日期:2013-11-24 19:26:19未羊
日期:2014-01-23 15:50:002015年亚洲杯之阿联酋
日期:2015-05-09 14:36:15
27 [报告]
发表于 2012-04-17 10:29 |显示全部楼层
回复 107# titer1
大部分的初级问题,在内核文档里都有描述

   

论坛徽章:
6
金牛座
日期:2013-10-08 10:19:10技术图书徽章
日期:2013-10-14 16:24:09CU十二周年纪念徽章
日期:2013-10-24 15:41:34狮子座
日期:2013-11-24 19:26:19未羊
日期:2014-01-23 15:50:002015年亚洲杯之阿联酋
日期:2015-05-09 14:36:15
28 [报告]
发表于 2012-09-23 09:08 |显示全部楼层
回复 114# embeddedlwp
5、所有进程在映射同一个共享内存区域时,情况都一样,在建立线性地址与物理地址之间的映射之后,不论进程各自的返回地址如何,实际访问的必然是同一个共享内存区域对应的物理页面。 注:一个共享内存区域可以看作是特殊文件系统shm中的一个文件,shm的安装点在交换区上。

=======================================

什么叫安装在交换区上,这个怎么理解?


这个主要是与普通的文件系统缺页异常进行类比的。
对于普通的文件系统中的文件,内核在操作文件中一个页的时候,首先会查找page cache,如果没有,内核会从文件系统中调入,当内存紧张的时候,会把page cache的内容写到文件系统,释放内存。

对于 shm的情况,内核在操作的时候,首先会查找swap cache,如果没有,内核会查找swap area中是否有,当内存紧张的时候,会把swap cache的内容写到swap area,是否内存。

所以,可以把shm看做是安装在swap上的特殊文件系统。   

论坛徽章:
6
金牛座
日期:2013-10-08 10:19:10技术图书徽章
日期:2013-10-14 16:24:09CU十二周年纪念徽章
日期:2013-10-24 15:41:34狮子座
日期:2013-11-24 19:26:19未羊
日期:2014-01-23 15:50:002015年亚洲杯之阿联酋
日期:2015-05-09 14:36:15
29 [报告]
发表于 2012-09-24 07:32 |显示全部楼层
回复 116# embeddedlwp
多谢指正!

对swapcache与pagecache的交互理解有疏漏之处。 关于“一个共享内存区域可以看作是特殊文件系统shm中的一个文件,shm的安装点在交换区上”的理解应该是没有错的。

   

论坛徽章:
6
金牛座
日期:2013-10-08 10:19:10技术图书徽章
日期:2013-10-14 16:24:09CU十二周年纪念徽章
日期:2013-10-24 15:41:34狮子座
日期:2013-11-24 19:26:19未羊
日期:2014-01-23 15:50:002015年亚洲杯之阿联酋
日期:2015-05-09 14:36:15
30 [报告]
发表于 2012-09-24 08:11 |显示全部楼层
回复 118# embeddedlwp
普通文件系统的page cache,换出的时候,对应自己的物理磁盘文件;对应shm类型换出的时候,对应的物理磁盘就是swap area了。

   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP