小满锅lock 2019-11-03 11:05 采纳率: 0%
浏览 532

关于虚拟地址,物理地址,以及进程切换之间的shi'qing

之前看了深入理解计算机系统,老师讲了讲虚拟内存的东西。
在我们在虚拟地址翻译成线性地址,再翻译成物理地址就可以简介访问内存,这个翻译的过程主要时应对多个进程能够使用同一虚拟地址,但是我想知道的就是,既然每个进程都有独立的虚拟地址空间,那当然可以用相同的虚拟地址,只是翻译成物理地址的时候翻译到了不同的物理地址

既然这样的话,为什么不直接使用物理地址呢,间接访问物理地址将虚拟地址翻译到不同地址,不还是不能使用相同的物理地址吗

而且想问的就是进程切换时,到底在虚拟内存和物理内存中是怎么实现de

  • 写回答

1条回答 默认 最新

  • threenewbee 2019-11-03 12:09
    关注

    多个进程能够使用同一虚拟地址,不是物理地址。

    这么做主要是为了进程内存地址隔离,如果进程可以直接访问物理地址,那么一个进程就可以访问、读取、修改另一个进程也可见的内存空间。
    这样既不安全,也不可靠。
    另外“翻译”这件事情听上去似乎费事,但是实际上,从Intel 386开始,页表转换都是硬件指令来做的,因此访问虚拟地址再转换到物理地址的开销,其实几乎完全相当于直接访问物理地址。
    何乐而不为。

    评论

报告相同问题?

悬赏问题

  • ¥15 thinkphp6配合social login单点登录问题
  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch