程序地址空间

程序地址空间

  • 1.程序地址空间
  • 2.malloc的本质
  • 3.重新理解地址空间
  • 4.地址空间的意义

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

1.程序地址空间

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

程序地址空间_第1张图片
程序地址空间_第2张图片
程序地址空间_第3张图片

2.malloc的本质

向OS申请内存,操作系统在需要的时候再给你
OS一般不允许有任何的浪费和不高效
申请内存不一定立马使用
程序地址空间_第4张图片

3.重新理解地址空间

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

4.地址空间的意义

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

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

你可能感兴趣的:(Linux的学习,linux,程序地址空间,虚拟地址)