前言:作為控制寄存器的筆記
什么是控制寄存器
控制寄存器有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:

