【发布时间】:2017-01-26 10:07:53
【问题描述】:
一个进程可以访问所有的 RAM 还是 CPU 给进程一个由内核决定的特定部分,并且进程(在用户空间中运行)不能改变?换句话说 - 是一个被硬件沙箱化的进程,还是它可以做任何事情,但被操作系统监控?
编辑
我在 cmets 中被告知这太宽泛了,所以让我们假设 x86/x64。我还要补充一点,在阅读我理解的进程可以访问所有 RAM 的内容时出现了这个问题——这似乎与我读到的关于操作系统安全性的内容相冲突。
【问题讨论】:
-
这取决于操作系统(以及操作系统运行的硬件),但现代操作系统限制了进程可以执行的操作,并且进程无法访问所有内存,因为o/s 限制了允许使用的内容,部分原因是虚拟内存管理。但这确实假设您正在使用具有内存管理等功能的系统。如果您在嵌入式系统中使用 8 位微控制器,那么任何进程都可以访问任何内存的机会。但这仍然取决于 h/w 和 o/s。
-
在能够运行现代操作系统的现代硬件中,存在设置进程沙箱边界的硬件支持。主要以虚拟内存的形式,并在非特权模式下运行用户空间进程(特权指令陷入内核)。
-
@PeterCordes 谢谢。 (顺便说一句,我更新了问题。)
标签: c assembly operating-system kernel cpu