保护机制是可靠运行多任务环境所必须的。它可以用于保护各个任务免受互相之间的干扰。在软件开发的任何阶段都可以使用段级和页级保护来协助寻找和检测设计问题和错误。当程序对错误内存空间执行了一次非期望的引用,保护机制可以阻止这种操作并且报告此类事件。
保护机制可以被用于分段和分页机制。处理器寄存器的2个比特位定义了当前执行程序的特权级,称为当前特权级CPL。在分段和分页地址转换过程中,处理器将对CPL进行验证。
- 通过设置控制寄存器CR0的PE标志(位0)可以让处理器工作在保护模式下,从而也就开启了分段保护机制。一旦进入保护模式,处理器并不存在明确的标志来停止或启用保护机制。不过基于特权级的保护机制部分可以通过把所有段选择符和段描述符的特权级都设置为0级来隐含地关闭。这种处理方式可以在段之间禁止特权级保护壁垒,但是其他段长度和段类型检查保护机制任然起作用。
- 设置控制寄存器CR0的PG标志(位31)可以开启分页机制,同时也开启了分页保护机制。同样,处理器中也没有相关的标志用来开启条件下禁用或开启页级保护机制。但是通过设置每个页目录项和页表项的读/写标志和用户/超级用户标识,我们可以禁止页保护机制。设置这两个标志可以使得每个页面都可以被任意读写,因此实际上也就禁用了页级保护。
对于分段级保护机制,处理器使用段寄存器中选择符(RPL和CPL)和段描述符中各个字段执行保护验证。对于分页机制,则主要利用页目录和页表项中的R/W和U/S标志来实现保护操作。
原文地址:https://www.cnblogs.com/ay-a/p/9097966.html
时间: 2024-10-07 03:34:31