做外贸需关注的网站,移动网站开发 书,企业seo网站营销推广,禅道项目管理软件一、 对于C/C程序员#xff0c;我们看到的程序中的地址#xff0c;都不是物理地址#xff0c;而是操作系统映射的虚拟地址/线性地址#xff0c;每一个进程都映射了同样结构的虚拟地址空间#xff0c;让进程以为自己在独享内存资源#xff0c;下图是以Linux下32位操作系统…一、 对于C/C程序员我们看到的程序中的地址都不是物理地址而是操作系统映射的虚拟地址/线性地址每一个进程都映射了同样结构的虚拟地址空间让进程以为自己在独享内存资源下图是以Linux下32位操作系统的虚拟地址空间分布图 平时程序中定义的静态局部变量真的存放在函数栈帧里吗 并不是而是存放在全局变量区域中即.data段、.bss段 堆栈两块区域是相对生长的heap区域随着内存的分配向上申请内存资源而stack区域在申请分配内存时则是向下生长的但是注意是整体向下去申请内存局部使用时还是从下往上去使用的 原因是什么呢因为访问数据时是通过起始地址 偏移量的方式 二、 通过虚拟地址空间不同的进程都通过相同的内存布局操作系统去做地址映射不同进程中相同的地址值就可以映射到不同的物理内存快上也可以实现不同进程指向同一物理内存快实现进程间的数据交换、通信 三、 那么虚拟地址又是通过什么方式映射为物理地址的呢 虚拟地址不同32位数值分为不同的段采用索引的思想做映射把虚拟地址空间分为大小相同的页物理内存也分为大小相同的页通过建立页目录、页表做地址映射。