前言

在Linux中,新创建的进程都拥有独立的虚拟地址空间。为深入多进程多线程的理解,了解虚拟地址空间分区十分有必要。


一、概念

  • 虚拟地址空间分为4G空间,其中1G为内核区,3G为用户区。
  • 虚拟地址空间的地址从0开始,且该地址是虚拟的。但是通过CPU中的内存管理单元MMU(Memory Management Unit),可以将进程的虚拟地址空间中映射到磁盘上。

二、为什么不直接加载物理内存?

  • 每个进程的地址相互不隔离,存在安全风险。若有些进程越界修改了其它进程的数据,那么就会导致某些功能实现错误。
  • 效率低下。若物理内存不够大,那么一般就会将不常用的进程拷贝到磁盘的交换分区中,而对于数据量较大的进程,这种拷贝时间长、效率低。
  • 进程中的数据地址不确定。由于物理内存是动态变化的,我们无法确定内存现在的地址情况。

三、分区

虚拟地址空间的分区如下图(借鉴爱编程的大丙)所示:

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部