內存管理之分段機制
1. 一些基本的概念:邏輯地址,線性地址,物理地址,實地址模式,保護模式,段寄存器,段基址寄存器,段選擇子寄存器,段描述符,全局描述表GDT,局部描述表LDT,GDTR,LDTR,CPL,RPL,DPL,權限檢查的標准(max(CPL,RPL)<=DPL)。
2. 在head.s中的有全局描述符表的聲明,其中包括內核代碼段、內核數據段、用戶代碼段、用戶數據段各在哪個地址,cpu_gdt_table即為表基址。
3. 激活分段機制的兩個步驟:一是設置全局描述符表GDT,也就是通過head.s中的一段程序把內核代碼段、內核數據段、用戶代碼段、用戶數據段的地址賦予給特定的寄存器。二是使能保護機制,即設置處理器控制寄存器cr0中的保護模式標記位即可。
內存管理之分頁機制:
1. 基本概念:頁框(page frame)、頁(page)、頁表(page table)、頁目錄基址寄存器CR3
2. 基於二級頁表的線性地址到物理地址的轉換過程?
3. 頁表項的結構?
4. 為什麼二級頁表比一級頁表節省空間?
解釋:
需要知道一個知識:每個進程都對應一個頁表。
比如對於4G的空間,4K每頁
如果是一級頁表映射,那需要2^20 =1M個頁表項(無論用不用都需要,系統不知道哪個地址是否會被訪問)
1M * 4 == 4M
每個進程都需要4M的頁表
而如果是2級頁表映射就只需要一個頁目錄 + 1個頁表項(比如進程只使用4M內存的情況)就足夠了,1個頁目錄占4K,一個頁表項占4個字節,但另起了一頁,每個進程總體占8K。