深入Linux内核架构笔记(进程虚拟内存)

在32位架构中,进程的虚拟地址按照3:1的比例划分为内核空间和用户空间,这样划分是为了实现CPU的不同权限,而64位架构中,因为进程的虚拟地址足够大,所以没有这个划分,都是足够的,一般是1:1,高位作为内核空间,地位作为用户空间,虽然64位的系统寻址可以达到很大,但是实际的CPU硬件的寻址并没有那么大,目前一般只有48根地址先,也就是可以256T这么大,那么高位的128T作为内核空间,地位的128T作为用户空间,中间的一部分作为不可用部分,这个通过地址空间的转换来实现的,具体参考前面的文章

而用户空间分为如下几个部分:

代码段,堆栈分开,

因为不同段地址的访问权限不同,比如代码段只能读,不能写,数据段可以读可以写,所以进程的地址划分为了不同的段,每个段都有相应的页表映射到物理地址

内存映射

通过mmap 调用来创建映射

 如果设置了VM_LOCKED,或者通过系统调用的标志参数显式传递进来,或者通过mlockall机制隐 式设置,内核都会调用make_pages

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值