流程是"沙盒"通过硬件?

时间:2016-09-18 18:04:08

标签: c assembly operating-system kernel cpu

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

修改

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

1 个答案:

答案 0 :(得分:5)

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

如果你只计算具有权限分离的现代操作系统(Unix / Linux,Windows NT和派生),那么进程就会被沙箱化。

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

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

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

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

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

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