gpt4 book ai didi

linux - 保护 : how is memory protection implemented

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:57:57 25 4
gpt4 key购买 nike

我已经知道 mprotect() 系统调用在 BSD 中有 4 种保护模式,但我的问题是这种保护是如何实现的(硬件或软件实现)?

假设我们将特定页面的保护设置为 PROT_NONE,它真的取决于我使用的硬件还是通过在页表中的指定页面上设置一些标志来实现某种软件技巧。

似乎这种对硬件的保护依赖于MMU我们有,但我不确定。

您可以在以下位置找到有关 mprotect 和分页的更多信息:

BSD man page

Paging - Wiki

最佳答案

页面保护是在软件辅助下在硬件中实现的。基本上,您想要实现以下目标:

  1. 当用户进程想要对特定内存页执行某些操作时,自动进入内核上下文(硬件对此负责)。
  2. 让内核代码对访问进程做一些事情,以维护 mprotect 保证(这发生在从 p.1 中触发的硬件陷阱处理程序调用的软件中)。

是的,如果没有 MMU p.1 将无法工作,所以在 ucLinux(一个旨在支持没有 MMU 的处理器的 Linux 版本)上 mprotect 没有实现(因为它不可能调用p.2 中的代码是透明的)。

关于linux - 保护 : how is memory protection implemented,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23903221/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com