Linux mprotect:如何实现内存保护

Linux mprotect:如何实现内存保护,linux,paging,bsd,mmu,mprotect,Linux,Paging,Bsd,Mmu,Mprotect,我已经知道mprotect()syscall在BSD中有4种保护模式,但我的问题是如何实现这种保护(硬件或软件实现) 比方说,如果我们将特定页面的保护设置为PROT_NONE,这真的取决于我使用的硬件,还是通过在页面表中的指定页面上设置一些标志来实现某种软件技巧 看起来我们有硬件上的这种保护,但我不确定 有关mprotect和分页的更多信息,请访问: 页面保护在硬件和软件协助下实现。基本上,您希望实现以下目标: 当用户进程想要对特定内存页执行某些操作时,自动输入内核上下文(硬件负责) 让内核代

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

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

看起来我们有硬件上的这种保护,但我不确定

有关mprotect和分页的更多信息,请访问:


页面保护在硬件和软件协助下实现。基本上,您希望实现以下目标:

  • 当用户进程想要对特定内存页执行某些操作时,自动输入内核上下文(硬件负责)
  • 让内核代码对访问进程做些什么,以维护
    mprotect
    保证(这发生在从第1页触发的硬件陷阱处理程序调用的软件中)
  • 是的,如果没有MMU,p.1将无法工作,因此在ucLinux(设计用于支持没有MMU的处理器的Linux版本)上,
    mprotect
    无法实现(因为不可能透明地从p.2调用代码)