程序地址空间

🌟🌟hello,各位读者大大们你们好呀🌟🌟
🚀🚀系列专栏:【Linux的学习】
📝📝本篇内容:程序地址空间
⬆⬆⬆⬆上一篇:进程优先级
💖💖作者简介:轩情吖,请多多指教(> •̀֊•́ ) ̖́-

1.程序地址空间

进程地址空间本质就是一个内核数据结构,struct mm_struct
struct mm_struct是在struct task_struct结构体中的
线性区域进行指定start和end即可完成区域划分
我们使用的是虚拟地址(线性地址)
修改数据时,会发生写时拷贝,此时页表所指向的位置也发生改变
MMU是负责虚拟地址与物理地址的转换
页表还有权限限制

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.malloc的本质

向OS申请内存,操作系统在需要的时候再给你
OS一般不允许有任何的浪费和不高效
申请内存不一定立马使用
在这里插入图片描述

3.重新理解地址空间

我们的程序再被编译的时候,没有被加载到内存,我们程序内部已经有了虚拟地址
源代码被编译的时候,就是按照虚拟地址空间的方式进行对代码和数据早就已经编好了对应的编制
CPU读到的数据中涵盖地址,这个地址是虚拟地址

4.地址空间的意义

①防止地址随意访问,保护物理内存与其他进程
②将进程管理和内存管理进行解耦合
③可以让进程以统一的视角,看待自己的代码和数据

🌸🌸程序地址空间的知识大概就讲到这里啦,博主后续会继续更新更多Linux的相关知识,干货满满,如果觉得博主写的还不错的话,希望各位小伙伴不要吝啬手中的三连哦!你们的支持是博主坚持创作的动力!💪💪

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

轩情吖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值