我正在阅读高尔文的操作系统并且有一个疑问,如果系统不支持虚拟内存,如何实现内存保护?我的意思是如何为进程提供受保护的地址空间?
任何新的概念或解释都会很棒......
答案 0 :(得分:1)
Memory protection on Wikipedia显示了不同的内存保护方法,您应该仔细阅读。
如果不支持虚拟内存,可以使用Protection keys method的概念。
读它:
内存保护密钥(MPK)机制将物理内存分开 特定尺寸的块(例如,4kiB),每个块具有一个 相关的数值称为保护密钥。每个过程也 具有与之关联的保护键值。在内存访问 硬件检查当前进程的保护密钥是否匹配 与正在访问的内存块相关联的值;如果没有,一个 异常发生。
答案 1 :(得分:0)
如果您想了解操作系统,请使用Galvin排列您的猫盒,而不是其他任何内容。
理解这个问题的第一个关键是理解逻辑内存和虚拟内存之间的差异。遗憾的是,许多流程和操作系统文档都将这两个术语混为一谈。
页表定义了一个连续的线性逻辑地址空间,用于将页面映射到非连续的页面框架。 =>逻辑记忆。
虚拟内存是页表条目未映射到物理页面框架时使用辅助存储(磁盘)的过程。
这是两个密切相关的概念。虚拟内存需要逻辑内存但逻辑内存不需要虚拟内存。
在后一种情况下,操作系统不使用辅助存储来模拟物理内存。当进程访问逻辑页面时,它必须映射到物理页面框架,否则会出现错误(而不是页面错误,如虚拟内存中)。
在虚拟记忆前的日子里,事情完全不同。然后整个进程被交换进出(为什么在Eunuchs中,页面文件被称为交换分区)。这是使用读/写磁盘或映射寄存器完成的。在那些日子里,地址空间是64K字节或更小,因此将进程写入磁盘并不像看起来那么繁重。
在这样的系统中,你有自己的64K左右的内存,除了那个以外无法访问以获得另一个进程的内存。