深入理解Linux内核个人小结9---进程地址空间

主要包括两部分: 进程地址空间的结构,进程动态内存的推迟分配(通过请求调页与缺页中断来实现的)。

         推迟分配:用户态进程请求动态内存时,并未立即获得请求的页框,而是仅仅获得对一个线性区的访问权,仅当要用此区域时才真正通过缺页中断分配页框;通过这增加了系统中空闲页框的平均数,从而能够更好的利用空闲内存。


一.  进程的地址空间:

       每个用户态进程都拥有自己的进程地址空间(0-3G),而内核地址空间(第4G)是所有进程所共享的(通过中断或系统调用来使用)。

       进程描述符--->内存描述符--->线性区--->线性地址空间 :   注意后三者间的对应关系(本节核心)

       无效线性地址的两种情况: 编程错误引发的无效地址, 由缺页引发的无效地址。

       内核线程不使用线性区,故而其对应的进程描述符字段为NULL。但是其active_mm字段会被初始化为前一个运行进程的内存描述符。

       线性区:

             两种组织结构: 链表(顺序扫描用)与红黑树(快速确定指定地址的线性区)。进程内线性区不会发生重叠。若其相邻且权限一致则可进行合并操作。

             相关权限:线性区的访问权限,页表访问权限,页描述符的flag字段标志。

             线性区的创建及删除等操作及相应的辅助函数。


二.  缺页异常:

      一个流程图:

                                        

    三. 进程地址空间的创建爱你及删除,堆的管理

         堆: 每个Unix进程都拥有一个特殊的线性区(堆),通过其用于满足进程动态内存的的请求。



    


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值