在操作系统中,用户模式应用程序的虚拟地址空间是私有的,一个应用程序无法更改属于另一个应用程序的数据。每个应用程序都在隔离环境中运行,如果一个应用程序崩溃,崩溃只限于该应用程序。其他应用程序和操作系统不会受到影响。
为什么在内核模式下操作系统不保护内存,会发生蓝屏死机呢?
为什么在内核模式下操作系统不保护内存,会发生蓝屏死机呢?
首先,某个层次上,您将始终拥有一个不可能失败的组件。如果此组件崩溃,则无法进行恢复。例如,如果您损坏了正在运行的进程表,除了重新启动外,您无法重建它。因此,即使内存保护限制了此组件仅影响自身的崩溃,仍可能发生蓝屏死机(或等效情况)。
但您的观点是正确的-有许多组件通常可以在没有灾难性故障的情况下重置。例如,驱动程序或网络堆栈。实际上,有些操作系统在这个层面上进行保护-它们被称为 微内核架构。
然而,微内核的问题在于性能。在x86 CPU上,内存保护需要两个东西 - 当前特权级(CPL或'ring'),一个介于0(最大访问权限)和3(用户模式)之间的数字,以及页表。页表将虚拟地址映射到物理地址,并对每个页面(4096字节的内存块)设置访问限制。每个进程都有自己的页表,页表中的每个页面都可以通过设置最大CPL、只读标志、不执行标志或无访问标志来受到限制。