面试冲刺:28---同一主机不同进程之间拥有同名的变量,这些变量的地址可能相同吗?

一、问题描述

  • 在同一主机上,假设有两个进程A和B,A进程内有一个变量a,B进程内也有一个变量a。现问:它们各自进程之间的变量a的地址可能相同吗?

二、解析

  • 答案为:虚拟地址可能相同,但物理地址不可能相同
  • 每一个进程有独立的虚拟地址空间,一个进程中的虚拟地址需要经过转换才能转成物理地址。不同进程所对应的虚拟地址即使相同也不会被转成统一物理地址
  • 实际上内存是按照页来组织的,每进程有一个虚拟地址到物理地址的映射表(页表),专门用于进程对应的虚拟页到物理页的映射(CPU内部有一个TLB部件专门用于加速映射过程)
  • 当进程A读写变量a时,会根据a的虚拟地址找到其所在的虚拟页,通过页表找到物理页并进一步定位到物理地址。由于进程 A、 B 拥有完全不同的映射表,因此物理地址不会相同

你可能感兴趣的:(面试冲刺)