CPU的架構:要求能夠理解從源程序到微指令的整個經歷過程:存儲器的層次結構(網絡資源下載到硬盤、磁盤緩存、內存、Cache、寄存器);CPU的四大部分:ALU、CU、中斷系統和寄存器;程序執行的整個過程(高級語言機器、匯編語言機器、操作系統機器、機器語言機器和微指令系統)。
進程控制塊PCB位于內核空間。
MMU(內存管理單元):包括從邏輯地址到虛擬地址(線性地址)再到內存地址的變換過程、頁式存儲管理、段式存儲管理、段頁式存儲管理、虛擬存儲管理(請求分頁、請求分段、請求段頁)。 MMU位于CPU內部,可以假想為一個進程的所需要的資源都放在虛擬地址空間里面,而CPU在取指令時,機器指令中的地址碼部分為虛擬地址(線性地址),需要經過MMU轉換成為內存地址,才能進行取指令。MMU完成兩大功能:1.虛擬地址到內存地址的地址變換;2.設置修改CPU對內存的訪問級別。比如在Linux的虛擬地址空間中,3-4G為內核空間,訪問級別最高,可以訪問整個內存;而0-3G的用戶空間只能訪問用戶空間的內容。其實這也是由MMU的地址變換機制所決定的。對于Inter(英特爾)CPU架構,CPU對內存的訪問設置了4個訪問級別:0、1、2、3(如上圖所示),0最高,4最低。而Linux下,只是使用了CPU的兩種級別:0、3。CPU的狀態屬于程序狀態字PSW的一位,系統模式(0),用戶模式(1),CPU交替執行操作系統程序和用戶程序。0級對應CPU的內核態(特權態、管態、系統態),而3級對應用戶態(普通態或目態),這其實是對內核的一種保護機制。例如,在執行printf函數的時候,其本身是在用戶空間執行,然后發生系統調用,調用系統函數write將用戶空間的數據寫入到內核空間,最后把內核的數據刷到(fsync)磁盤上,在這個過程中,CPU的狀態發生了變化,從0級(用戶態)到3級(內核態)。
綜上,MMU只是在讀內存和寫內存完成地址變換,以及更改CPU的訪問級別。