免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1866 | 回复: 5

[内核入门] 关于进程线性区的几个问题。 [复制链接]

论坛徽章:
0
发表于 2015-12-04 11:47 |显示全部楼层
linux进程的代码段和数据段是不是加载到进程的线性区的?也就是vm_area_struct 结构所代表的区域
1、为线性区分配的页框是不是长度为2的n次方的连续的页?也就是从伙伴系统里分配的页。(order为1~10)。
2、还是一个页一个页的分配?(order 为0)。

如果1成立,页框回收如何回收连续的页?

论坛徽章:
0
发表于 2015-12-04 12:53 |显示全部楼层
我知道进程线程区间是用vm_area_struct表示的,但是这只是表示进程的虚拟空间,并不一定有对应的物理内存
所以,下面两个问题,我感觉不存在

论坛徽章:
1
15-16赛季CBA联赛之新疆
日期:2017-03-09 12:33:45
发表于 2015-12-04 16:41 |显示全部楼层
回复 1# 626788149


    你问的问题,其实在《LINUX内核源代码情景分析》这本书中有你的答案。是在第二章,你把第二章好好看上三遍以上,才能懂这个道理,我这里大概跟你讲一下,具体的内容要看那里的内容。
        1, 为线性区分配的页框是不是长度为2的n次方的连续的页?也就是从伙伴系统里分配的页。(order为1~10)。
              这个问题是的。确实是这样的。但这只是相当于给了一个支票,没有实际兑现。什么时候兑现,要等到真正用的时候,什么叫真正用的时候,就是进程对这个地方进行读或者写的时候。
         2,还是一个页一个页的分配?(order 为0)。
              这个是实际分配的方式,也就是一读或者写到一个页面的地址的时候,进行分配。而且每次只分配一个页面。
  
         你可能问这个到底是怎么回事,如果没有懂,我这么跟你说,这是因为虚拟内存,因为虚拟内存是先在页表分配了,后面到了缺页中断的时候才真正进行分配,这样的好处是减少了不必要的分配。LAZYMODE才是好的方法 。而从虚拟内存到物理内存的映射工作,这里有一个CPU的机制问题,其中有很复杂的内容。但说的简单一点。就是有一个数据结构来管理,CPU根据这个结构来检查要访问的物理内存与进行读写。而操作系统通过维护这个数据结构来实现内存管理 。这些内容都在我说的那本书的那个章节中讲到,非常细节的内容,那最后还是要看源代码的。

论坛徽章:
0
发表于 2015-12-04 18:27 |显示全部楼层
回复 3# jeppeter

非常感谢。

你这么一说我好像豁然开朗。

因为最近我在写一个小型类unix的操作系统。

写完伙伴系统之后,我想了想需要为以后的页框回收系统留下接口。

后来我一直在考虑,因为页框回收系统回收页面的时候是一页一页回收的,如果分配了一组连续的页框,那怎么回收页面? 难道一下回收一组连续的页框?

后来我才发现,从伙伴系统里分配一组页框与回收单独的页框一点关系也没有!!!


但是我又有个疑问,进程刚刚被创建的时候分配了一组连续的页,但是进程长时间运行,经过页框回收系统的回收机制,
进程实际的物理页框会不会变得不连续了?

论坛徽章:
1
15-16赛季CBA联赛之新疆
日期:2017-03-09 12:33:45
发表于 2015-12-07 08:44 |显示全部楼层
回复 4# 626788149


    首先,物理连续与否,与虚拟内在连续与否没有太大关系,就算物理不连续,虚拟的也可以连续。如果担心这个,可以在两个地方实现:
      1,回收机制上,这个可以实现把内存,整块的回收,这里就要用到伙伴算法。
      2,在整理机制上,就是对进程的虚拟内存进行整理,那它整理到连续的物理内存上。这个有额外的开销。
      

论坛徽章:
0
发表于 2015-12-08 21:41 |显示全部楼层
进程的内存分配,都是lib库统一做虚拟地址的分配,实际的物理内存页使用,都在内核根据缺页中断处理,内核才真正地开始分配内存。实际上物理内存也不会连续。

内存运行时间长后,根据内存的页面类型,回收机制会处理不同的方式,映射页可能随时回收,anony页面可能被交换,所以进程实际的物理页框开始不连续,后续会变得更不连续。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP