歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux內存管理之分段分頁機制

Linux內存管理之分段分頁機制

日期:2017/2/25 10:37:21   编辑:Linux教程

  內存管理之分段機制

  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。

Copyright © Linux教程網 All Rights Reserved