没有虚拟内存如何完成内存保护?

时间:2016-09-23 12:27:55

标签: memory-management operating-system

我正在阅读高尔文的操作系统并且有一个疑问,如果系统不支持虚拟内存,如何实现内存保护?我的意思是如何为进程提供受保护的地址空间?

任何新的概念或解释都会很棒......

2 个答案:

答案 0 :(得分:1)

Memory protection on Wikipedia显示了不同的内存保护方法,您应该仔细阅读。

如果不支持虚拟内存,可以使用Protection keys method的概念。

读它:

  

内存保护密钥(MPK)机制将物理内存分开   特定尺寸的块(例如,4kiB),每个块具有一个   相关的数值称为保护密钥。每个过程也   具有与之关联的保护键值。在内存访问   硬件检查当前进程的保护密钥是否匹配   与正在访问的内存块相关联的值;如果没有,一个   异常发生。

答案 1 :(得分:0)

如果您想了解操作系统,请使用Galvin排列您的猫盒,而不是其他任何内容。

理解这个问题的第一个关键是理解逻辑内存和虚拟内存之间的差异。遗憾的是,许多流程和操作系统文档都将这两个术语混为一谈。

页表定义了一个连续的线性逻辑地址空间,用于将页面映射到非连续的页面框架。 =>逻辑记忆。

虚拟内存是页表条目未映射到物理页面框架时使用辅助存储(磁盘)的过程。

这是两个密切相关的概念。虚拟内存需要逻辑内存但逻辑内存不需要虚拟内存。

在后一种情况下,操作系统不使用辅助存储来模拟物理内存。当进程访问逻辑页面时,它必须映射到物理页面框架,否则会出现错误(而不是页面错误,如虚拟内存中)。

在虚拟记忆前的日子里,事情完全不同。然后整个进程被交换进出(为什么在Eunuchs中,页面文件被称为交换分区)。这是使用读/写磁盘或映射寄存器完成的。在那些日子里,地址空间是64K字节或更小,因此将进程写入磁盘并不像看起来那么繁重。

在这样的系统中,你有自己的64K左右的内存,除了那个以外无法访问以获得另一个进程的内存。

相关问题