流程是否由硬件"沙盒化"?

isp*_*iro 3 c cpu assembly operating-system kernel

进程是否可以访问所有RAM,或者CPU是否为进程提供了内核决定的特定部分,并且进程(在用户空间中运行)不能更改?换句话说 - 是一个由硬件沙箱化的过程,还是它可以做任何事情,但是由操作系统监控?

编辑

我在评论中告诉我这太宽泛了,所以让我们假设x86/x64.我还要补充一点,在阅读我理解的过程中出现的问题是流程可以访问所有RAM - 这似乎与我在操作系统中看到的安全性相冲突.

Pet*_*des 5

如果将MS-DOS视为"操作系统",则进程可以执行任何操作(并且不受监视).甚至Windows95也没有真正的内存保护,并且一个错误的进程可能会通过涂写错误的内存来破坏机器.

如果您只计算具有权限分离的现代操作系统(Unix/Linux,Windows NT和派生),则会对进程进行沙盒处理.

AFAIK,除了"如果你试图做某事的错误"之外,没有真正的系统可以监控任何类型.内核设置边界,如果用户空间进程试图超出它们,则会发生错误.

如果您想象内核可能会查看无特权进程的作用,并相应地进行调整,那么不,那不是发生的事情.


看到

  • https://en.wikipedia.org/wiki/Memory_protection:通常通过为每个进程提供自己的虚拟地址空间(虚拟内存)来实现.这是硬件支持的:您的代码使用的每个地址都通过快速转换缓存(TLB)转换为物理地址,TLB缓存由OS(也称为页表)设置的转换表.

    进程不能直接修改自己的页表:它必须要求内核将更多的物理内存映射到其地址空间(例如,作为malloc()的一部分).因此内核有机会执行之前验证请求是否正常.

    此外,进程可以要求内核将数据复制到文件(或其他东西)或从文件(或其他东西)复制到其内存空间.(写/读系统调用).

  • https://en.wikipedia.org/wiki/User_space:正常进程以用户模式运行,这是硬件提供的模式,特权指令将陷入内核.