Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我已经知道 mprotect() 系统调用在 BSD 中有 4 种保护模式,但我的问题是这种保护是如何实现的(硬件或软件实现)?
假设我们将特定页面的保护设置为 PROT_NONE ,它真的取决于我正在使用的硬件还是通过在页表中的指定页面上设置一些标志来某种软件技巧。
似乎这种对硬件的保护依赖于我们拥有的MMU,但我不确定。
您可以在以下位置找到有关 mprotect 和分页的更多信息:
BSD 手册页
分页 - 维基
页面保护通过软件辅助在硬件中实现。基本上,您要实现以下目标:
mprotect
是的,没有 MMU p.1 将无法工作,因此在 ucLinux(旨在支持没有 MMU 的处理器的 Linux 版本)mprotect上没有实现(因为不可能透明地从 p.2 调用代码)。