如果软件代码中的指令使用直接地址位并命令cpu访问受限区域,那么我们如何真正限制机器内存访问?
如果我们使用容器,虚拟或...,我们应该运行代码来检查原始代码的每条指令,以查看其是否无法访问限制区域?
答案 0 :(得分:0)
特权管理通常需要CPU中的硬件支持。如果是软件仿真,则需要使用仿真器来确保强制实施适当的特权级别。
MMU是(除其他事项外)控制内存访问的组件。内存的某些区域可以标记为可读,可写和可执行。 MMU将检查所有内存访问,并对非法访问造成某种故障。这样可以防止CPU在任意内存位置进行读取/写入/执行。
许多CPU都具有内置的特权分离功能。它将具有特权级别的概念(例如x86中的振铃,ARM中的模式位),并检查当前特权级别中是否允许运行指令。这样可以防止以非特权模式运行的代码执行特权指令。
托管容器的操作系统或虚拟机宿主软件将需要确保正确实施正确的权限分离(适当使用硬件功能)。