进程 "sandboxed" 是硬件吗?
Are processes "sandboxed" by hardware?
进程可以访问所有 RAM 还是 CPU 给进程一个由内核决定的特定部分,并且进程(运行 in user space)可以改变?换句话说 - 是一个被硬件沙盒化的进程,或者它可以做任何事情,但被 OS?
监控
编辑
我在评论中被告知这太宽泛了,所以让我们假设 x86/x64。我还要补充一点,在阅读我所理解的进程可以访问所有 RAM 的内容时出现了这个问题 - 这似乎与我在 OSs.
中阅读的有关安全性的内容相冲突
如果您将 MS-DOS 算作 "operating system",那么进程可以做任何事情(并且不受监控)。甚至 Windows95 也没有真正的内存保护,有错误的进程可能会因为涂写错误的内存而导致机器崩溃。
如果您只计算具有特权分离的现代 OSes(Unix/Linux、Windows NT 和衍生版本),那么进程是沙盒化的。
AFAIK,除了 "fault if you try to do something" 之外,没有真正的系统可以进行任何类型的监控。内核设置边界,如果 user-space 进程试图越过边界,则会出现错误。
如果您认为内核可能会查看非特权进程的行为并相应地进行调整,那么不,事实并非如此。
见
https://en.wikipedia.org/wiki/Memory_protection: Usually achieved by giving each process its own virtual address space (virtual memory). This is hardware-supported: every address your code uses is translated to a physical address by a fast translation cache (TLB),它缓存由 OS(又名页表)设置的转换表。
进程不能直接修改自己的页表:它必须要求内核将更多物理内存映射到它的地址 space(例如,作为 malloc() 的一部分)。所以内核在做之前有机会验证请求是否正常。
此外,一个进程可以要求内核将数据 to/from 文件(或其他东西)复制到它的内存 space 中。 (write/read 系统调用)。
https://en.wikipedia.org/wiki/User_space: 用户模式下的正常进程运行,这是硬件提供的一种模式,特权指令将陷入内核。
进程可以访问所有 RAM 还是 CPU 给进程一个由内核决定的特定部分,并且进程(运行 in user space)可以改变?换句话说 - 是一个被硬件沙盒化的进程,或者它可以做任何事情,但被 OS?
监控编辑
我在评论中被告知这太宽泛了,所以让我们假设 x86/x64。我还要补充一点,在阅读我所理解的进程可以访问所有 RAM 的内容时出现了这个问题 - 这似乎与我在 OSs.
中阅读的有关安全性的内容相冲突如果您将 MS-DOS 算作 "operating system",那么进程可以做任何事情(并且不受监控)。甚至 Windows95 也没有真正的内存保护,有错误的进程可能会因为涂写错误的内存而导致机器崩溃。
如果您只计算具有特权分离的现代 OSes(Unix/Linux、Windows NT 和衍生版本),那么进程是沙盒化的。
AFAIK,除了 "fault if you try to do something" 之外,没有真正的系统可以进行任何类型的监控。内核设置边界,如果 user-space 进程试图越过边界,则会出现错误。
如果您认为内核可能会查看非特权进程的行为并相应地进行调整,那么不,事实并非如此。
见
https://en.wikipedia.org/wiki/Memory_protection: Usually achieved by giving each process its own virtual address space (virtual memory). This is hardware-supported: every address your code uses is translated to a physical address by a fast translation cache (TLB),它缓存由 OS(又名页表)设置的转换表。
进程不能直接修改自己的页表:它必须要求内核将更多物理内存映射到它的地址 space(例如,作为 malloc() 的一部分)。所以内核在做之前有机会验证请求是否正常。
此外,一个进程可以要求内核将数据 to/from 文件(或其他东西)复制到它的内存 space 中。 (write/read 系统调用)。
https://en.wikipedia.org/wiki/User_space: 用户模式下的正常进程运行,这是硬件提供的一种模式,特权指令将陷入内核。