防止写入虚拟内存的大连续部分

防止写入虚拟内存的大连续部分

操作系统内核如何有效地阻止用户进程写入大块连续的虚拟内存?

答案1

虚拟内存由内存管理单元,一个硬件组件。只有内核才允许修改MMU配置。 MMU配置决定了每个虚拟地址对应的物理地址(如果有的话),以及程序在这个地址有什么权限(至少是读或者读写,具体能力取决于硬件架构)。

内核可以通过确保这些地址映射为只读或根本不映射来阻止进程写入虚拟内存块。

如果这是家庭作业,那么您可能需要解释架构上的 MMU 是如何工作的,特别是如何使用更高级别的目录(节、L1/L2 表或它们在您的架构上的任何名称):与较低级别的目录(L2/L3)相反。

答案2

在类 Unix 系统上,mprotect 系统调用用于控制内存保护:

细节:

https://en.wikipedia.org/wiki/Memory_protection

相关内容