CPU-控制寄存器

控制寄存器有5个,分别是Cr0 Cr1 Cr2 Cr3 Cr4

Cr1: 保留

Cr3:页目录基地址寄存器,用来切换和定位当前正在使用的页表。

 

Cr0 寄存器:

结构图:

PE 位:启用保护(Protection Enable)标志

PE=1 :保护模式

PE=0: 实地址模式

这个标志仅开启段级保护,而没有启用分页机制

若要启用分页机制,那么PE和PG标志都要置位

 

PG 位:分页机制标志

PG=1 :开启了分页机制

PG=0:未开启分页机制

在开启这个标志之前必须已经或者同时开启PE标志

 

PG=0 且PE=0:处理器工作状态为实地址模式

PG=0且PE=1:处理器工作状态为没有开启分页机制的保护模式

PG=1且PE=0:不存在。在PE没有开启的情况下无法开启PG

PG=1且PE=1:处理器工作状态为开启了分页机制的保护模式

 

WP位:写保护(Write Protect) 标志

对于Intel 80486或以上的CPU,CR0的16是写保护标志

当设置该标志时,处理器会禁止超级用户程序(例如特权级0 的程序)向用户级只读页面执行写操作

当CPL<3的时候:

  1. 如果WP=0 可以读写任意用户级物理页,只要线性地址有效
  2. 如果WP=1 可以读取任务用户级物理页,但对于只读的物理页,则不能写

 

 

CR2 寄存器

当CPU访问某个无效页面时,会产生缺页异常,此时,CPU会引起异常的线性地址存放在CR2中。

结构图:

举例:

  1. 当CPU访问某个物理页,但PDE/PTE 的P位为0时,会产生缺页异常
  2. 缺页异常一旦发生,CPU会将引起缺页异常的线性地址存储到CR2中
  3. 此时,操作系统的处理程序开始对异常进行处理
  4. 若处理结束后,虽然PDE/PTE 的P位为0,但实际上它被写进了页面
  5. 这时,处理程序会将数据从页面中读出,再挂上一个有效的物理页,让程序接着往下执行
  6. 程序继续执行时,操作系统必须要记录程序原先已经执行到哪里
  7. 此时,CR2便派上了用场,因为产生异常时的线性地址存在了CR2中
  8. 但如果异常处理程序检测到用户访问的页面时一个未分配的页面
  9. 这时,操作系统会报告一个异常,告诉我们在哪里发生了错误
  10. 若没有CR2寄存器,当进入异常处理程序时,将找不到回去的线性地址

 

CR4 寄存器:

结构图:

PAE:

PAE=1 : 2-9-9-12 分页

PAE=0 : 10-10-12分页

 

PSE:

PSE =1

10-10-12   PS =1, 4M页      2-9-9-12 PS=1 ,2M页

PS=0, 4K页                PS=0,4K页

PSE = 0

10-10-12   PS =1, 4K页      2-9-9-12 PS=1 ,4K页

PS=0, 4K页                PS=0,4K页

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值