【问题标题】:processes writing to virtual memory进程写入虚拟内存
【发布时间】:2011-09-09 12:13:36
【问题描述】:

我目前正在阅读一本关于 .Net 4.0 和 C# 的书,并且我阅读了一个我不完全理解的声明...

它指出: “一般来说,任何进程只能通过在虚拟内存中指定地址来访问内存——进程无法直接访问物理内存。因此,一个进程根本不可能访问分配给另一个进程的内存”

我们如何形成这种区别.. 因为我将地址指定到虚拟内存而不是物理内存,所以我无法访问另一个进程的内存?还是在于他们的意思是我的访问权限?

【问题讨论】:

    标签: .net memory process


    【解决方案1】:

    这意味着给你的地址都是虚拟的(也称为逻辑的)......它们并不直接指示你将访问哪个物理内存。相反,有一个映射(在硬件中,由系统控制)在您的虚拟地址和实际使用的物理内存之间进行转换。

    换句话说,您的进程可能具有地址 0x1000,而我的进程也可能具有相同的地址。由于我们的地址都是虚拟的,因此您无法访问我的地址(在物理层,它们将位于硬件的不同位置)。

    【讨论】:

    • 啊...好吧,所以这种安全性是通过你提到的我假设的地图间接实现的?更有意义谢谢!
    • @cajmrn:是的。如果您听说过 MMU 或内存管理单元,那么它就是管理映射的硬件。操作系统内核有权配置 MMU,当您的进程开始运行时,它会为您的进程的内存映射配置它,同时删除(或禁用)其他映射。
    猜你喜欢
    • 2013-12-13
    • 2020-05-21
    • 2011-12-05
    • 2017-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-19
    相关资源
    最近更新 更多