首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Linux内核中,内存读写和执行权限是如何强制执行的?

在Linux内核中,内存读写和执行权限是如何强制执行的?
EN

Stack Overflow用户
提问于 2015-07-23 17:30:42
回答 2查看 1.8K关注 0票数 2

一个系统如何能够限制进程能够写入内存集的区域-只读?特别是,假设硬件是不能为内核执行这些权限,Linux内核如何执行这些权限?

我最初的猜测是,这些内存区域没有映射到进程的地址空间,因此每当进程尝试访问这些内存区域时,都会生成一个页面错误,这使得内核能够控制所有事务是否正常。我意识到这可能会大大降低性能,所以我在这里寻求帮助,了解是否有一种更聪明的方法来强制执行这些权限。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-07-24 06:08:57

执行内存保护的任务由MMU来处理。我不知道任何架构确实有MMU,但没有硬件支持内存权限。因此,我想我们在这里谈论的是无MMU系统。

长期以来,Linux需要MMU才能工作。如果你愿意的话,它仍然能做到,但这是对无MMU系统的一些支持。它来自一段时间前在上游合并的uClinux项目。但是,用NOMMU编译的系统不能像普通的Linux系统那样工作(许多应用程序不能在它上工作),没有内存保护是它的局限性之一。

要直接回答您的问题,Linux上的内存保护取决于对它的硬件支持。如果它不存在,内核就不会试图模仿它。

现在,您的想法似乎很好(如果不切实际),但要做到这一点,您仍然需要虚拟内存支持,这需要某种MMU。如前所述,我不认为有任何系统确实有MMU,但不支持内存保护。不管怎样,Linux似乎不支持这种情况。

票数 1
EN

Stack Overflow用户

发布于 2015-07-25 00:33:01

在非分段系统中,有四种方法可以阻止对内存的访问,以限制对页面的访问。

  1. 没有特定地址的页表条目(易于使用嵌套的页表)。
  2. 该页没有页面映射。
  3. 页表按模式限制访问。例如,不允许用户模式访问,但允许内核模式。
  4. 页表按类型限制访问(写、执行)。

页面表的设置是用硬件完成的。验证对表的访问是在硬件中完成的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31594301

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档