前言:作为控制寄存器的笔记
什么是控制寄存器
控制寄存器有5个CR0 CR1 CR2 CR3 CR4,其作用是控制寄存器用于控制和确定CPU的操作模式。
知识点:CR1控制寄存器是保留的,我们学过CR3控制寄存器,该寄存器是保存了页目录表基址。
CR0寄存器
说明:
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寄存器
知识点:当CPU访问某个无效页面时,会产生缺页异常,此时,CPU会将引起异常的线性地址存放在CR2中。
CR3寄存器
都知道的是该寄存器的值是页目录表的基址,所以该寄存器就被称作为页目录表基地址寄存器PDBR。
CR3不仅包括了页目录表的地址,还有两个标志位(PCD和PWT)
关于PCD和PWT的标志位,如下图所示
PWT(Page Write Through),PWT=1时 写Cache的时候也要将数据写入内存中。
PCD(Page Cache Disable),PCD=1时,禁止某个页写入缓存,直接写内存。比如,做页表用的页,已经存储在TLB中了,可能不需要再缓存了。
CR4寄存器
PAE/PSE说明:
PAE=1 是2-9-9-12分页 PAE=0 是10-10-12分页。
PSE: