一、地址空间Address Space1. 什么是地址空间地址空间 一个进程能看到的所有内存地址的集合2. 地址空间的本质地址空间是一个视图不是实际的物理内存二、虚拟地址Virtual Address1. 虚拟地址是什么虚拟地址 地址空间中的一个具体位置一个数字2. 虚拟地址 vs 物理地址三、核心关系地址空间 vs 虚拟地址概念类比关系地址空间整个城市地图0-4GB范围容器、范围、视图虚拟地址地图上的一个具体坐标如中山路100号容器中的具体位置mm_struct地图的管理结构内核描述地址空间的数据结构四、为什么需要虚拟地址1. 隔离性保护——进程互不干扰2. 连续性保证——简化编程让程序误以为内存是连续的实际物理位置随意OS通过页表管理3. 超额分配——提高内存利用率五、回到共享窗口概念一句话解释地址空间进程能访问的内存版图0-4GB的范围由mm_struct描述虚拟地址版图上的具体坐标如0x08048000程序使用的地址物理地址真实内存芯片上的门牌号如0xAF000000CPU最终访问的地址页表坐标转换表把虚拟地址翻译成物理地址共享窗口 两个线程的task_struct指向同一个mm_struct所以它们使用同一套页表相同的虚拟地址对应相同的物理地址自然实现了内存共享。