linux学习(地址空间)[7]

本文探讨了进程中的地址空间概念,指出子进程虽然地址空间相同但数值不同,由页表映射物理地址。虚拟地址提供了保护,解释了为何需要地址空间以及延迟分配如何提高内存使用率。还提到进程加载时的新建状态和页表对磁盘的映射功能。
摘要由CSDN通过智能技术生成

地址空间

在子进程中修改变量值,不会和父进程同步,但是地址空间相同(此地址不是物理内存的地址)(而是虚拟地址–线性地址)

几乎所有的语言,如果有地址的概念,这个地址一定是虚拟地址,不是物理地址
在这里插入图片描述

验证地址空间

hello:hello.c
    gcc -o $@ $^   #$@代指hello    $^代指hello.c1   hello.c2 ....

在这里插入图片描述
在这里插入图片描述
进程1出现野指针访问到进程3
在这里插入图片描述

虚拟地址作用

使用虚拟地址映射物理地址在这里插入图片描述
在物理内存中间加一层保护机制,虚拟内存存在保护机制

虚拟地址空间到底是什么

每个进程都有地址空间,地址空间是一种内核数据结构,里面至少有:各个区域的划分
在这里插入图片描述
范围变化: 即对start或者end标记值 ± 特定的范围即可
用页表来映射
在这里插入图片描述
在这里插入图片描述
==所以父进程和子进程地址一样但是数值不一样==页表不同,映射物理地址不同
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

映射关系的维护

cpu拿到的还是虚拟地址,因为程序中要相互跳转,而程序本身没有改变,所以cpu拿到虚拟地址再映射物理地址然后执行
在这里插入图片描述

为什么要有地址空间

在这里插入图片描述
2.
在这里插入图片描述
在这里插入图片描述
延迟分配可使内存的使用率提高
3.
在这里插入图片描述
在这里插入图片描述

新建状态

进程在加载时并非将所有的代码和数据加载进来,只加载一部分甚至只创建内核,等待需要时再从磁盘中加载数据。理论上可以实现对程序的分批次加载(换入){当然也可以分批换出}。
在这里插入图片描述
在这里插入图片描述
页表不仅可以指向物理内存,也可以映射磁盘

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值