大多数保护检查都在硬件中完成,由CPU本身,并且不需要来自操作系统方面的大量参与。
的OS建立了一些特殊的表(页表或段描述符或一些这样的),其中存储器范围具有相关联的读,写,执行和用户/内核权限则CPU在内部缓存。
每个指令检查,然后,CPU内存是否访问遵守OS建立的权限,如果一切正常,进行。如果试图违反这些权限,则CPU会引发操作系统处理的异常(类似于CPU I/O设备外部中断的形式)。在大多数情况下,操作系统在发生这种异常时会简单地终止违规应用程序。
在它试图处理他们,使看似断码工作的一些其他情况。其中一种情况是支持虚拟磁盘内存。当没有物理内存备份时,操作系统将该区域标记为不可访问/不可访问,并且其数据位于磁盘上某处。当应用程序尝试使用该区域时,操作系统会从试图访问此内存区域的指令中捕获异常,使用物理内存备份该区域,使用磁盘中的数据填充该区域,将其标记为存在/可访问并重新启动导致异常的指令。只要操作系统内存不足,它就可以将数据从特定范围卸载到磁盘,将这些范围标记为不再存在/不可访问,并将这些区域的内存回收用于其他目的。
也可能有特定的硬编码由CPU内存范围无法访问操作系统内核和CPU的软件运行外可以很容易地检查在这里。
这似乎是为MIPS (from "Application Note 235 - Migrating from MIPS to ARM")的情况下:
3.4.2存储器保护 MIPS提供存储器保护只对前面描述即地址 在地址空间的上部2GB不允许的范围内当处于用户模式时。 没有更细粒度的保护机制是可能的。
This document名单“MEM - 缺页上的数据读取未对齐的内存访问,存储,保护违反”其他MIPS例外之一。
如果某个特定版本的MIPS CPU没有更多的细粒度保护检查,则只能由操作系统模拟,并且成本很高。操作系统需要通过指令来执行代码指令,或者将其转换为几乎相同的代码,并插入地址和访问检查,然后执行代码,而不是原始代码。