isp*_*iro 3 c cpu assembly operating-system kernel
进程是否可以访问所有RAM,或者CPU是否为进程提供了内核决定的特定部分,并且进程(在用户空间中运行)不能更改?换句话说 - 是一个由硬件沙箱化的过程,还是它可以做任何事情,但是由操作系统监控?
编辑
我在评论中告诉我这太宽泛了,所以让我们假设x86/x64.我还要补充一点,在阅读我理解的过程中出现的问题是流程可以访问所有RAM - 这似乎与我在操作系统中看到的安全性相冲突.
如果将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:正常进程以用户模式运行,这是硬件提供的模式,特权指令将陷入内核.