前言:作为控制寄存器的笔记

什么是控制寄存器

控制寄存器有5个CR0 CR1 CR2 CR3 CR4,其作用是控制寄存器用于控制和确定CPU的操作模式。

知识点:CR1控制寄存器是保留的,我们学过CR3控制寄存器,该寄存器是保存了页目录表基址。

CR0寄存器

cpcl和ESC的区别_cpcl和ESC的区别

说明:

1、PE:CR0的第0位是启用保护(Protection Enable)标志。

PE=1保护模式,PE=0 实地址模式,这个标志仅开启段级保护,而并没有启用分页机制,若要启用分页机制,那么PE和PG标志都要置为1。

2、PG:当设置该位时即开启了分页机制。在开启这个标志之前必须已经或者同时开启PE标志。

  • PG=0且PE=0 处理器工作在实地址模式下
  • PG=0且PE=1 处理器工作在没有开启分页机制的保护模式下
  • PG=1且PE=0 在PE没有开启的情况下 无法开启PG
  • PG=1且PE=1 处理器工作在开启了分页机制的保护模式下

所以想要用开始保护模式并且还需要正常运行的话,那么PG位和PE位都需要置位才可以

3、WP:对于Intel 80486或以上的CPU,CR0的位16是写保护(Write Proctect)标志,当置位该标志时,处理器会禁止超级用户程序(例如特权级0的程序)向用户级只读页面执行写操作

当CPL<3的时候:

如果 WP=0 可以读写任意用户级物理页,只要线性地址有效。

如果 WP=1 可以读取任意用户级物理页,但对于只读的物理页,则不能写。

需要:后面写写拷贝的驱动的时候这个标志位就需要用到!

CR2寄存器

cpcl和ESC的区别_cpcl和ESC的区别_02

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

CR3寄存器

都知道的是该寄存器的值是页目录表的基址,所以该寄存器就被称作为页目录表基地址寄存器PDBR。

CR3不仅包括了页目录表的地址,还有两个标志位(PCD和PWT)

cpcl和ESC的区别_分页机制_03

关于PCD和PWT的标志位,如下图所示

PWT(Page Write Through),PWT=1时 写Cache的时候也要将数据写入内存中。

PCD(Page Cache Disable),PCD=1时,禁止某个页写入缓存,直接写内存。比如,做页表用的页,已经存储在TLB中了,可能不需要再缓存了。

cpcl和ESC的区别_保护模式_04

CR4寄存器

cpcl和ESC的区别_保护模式_05

PAE/PSE说明:

PAE=1 是2-9-9-12分页 PAE=0 是10-10-12分页。

PSE:

cpcl和ESC的区别_分页机制_06