計算機操作系統 - 頁表


計算機操作系統 - 頁表

〇、疑問

  1. 在計算頁表項的大小時,為何不考慮物理內存的大小?
  2. 頁表的項數與邏輯地址有關還是與物理地址有關?

一、釋疑

  1. 頁表用於實現邏輯地址和物理地址的映射,具體而言是實現邏輯地址所在的塊(頁)和物理地址所在的塊(頁框)的映射。因此容易想到在設計頁表項的大小時,其必須考慮物理內存的大小。但實際上,一般而言,操作系統的邏輯地址空間也作為其實際的物理地址尋址空間,也即對於32bit的操作系統,其物理地址也是32bit的,因此邏輯地址和物理地址的塊的數量一樣,因此直接按照邏輯地址計算即可。

eg1. 32bit邏輯地址空間,字節編址,頁面大小為4KB。計算合適的頁表項大小。
解:頁內地址為12bit,因此頁號地址為20bit,因此可選擇3B(24bit)。考慮整齊,可以取4B。
附:取4B,此時頁表大小為\(2^{20}\times 4\text{B} = 4\text{MB}\) 。也即一個進程需要4MB的連續內存給頁表使用,這顯然太大。

附加:在32bit操作系統上可以進行超過32bit的物理內存尋址,同樣在64bit位上可以進行低於64bit的物理地址尋址,因此邏輯地址長度和物理地址長度的相等關系其實是有點牽強的。

  1. 考慮一級頁表,頁表必須記錄整個邏輯地址空間的映射信息,因此頁表的項數(頁表長度)只與邏輯地址空間大小有關。

二、附加

  • 多級頁表
    使用一級頁表映射時,頁表太大(遠超過一個頁框的大小),如果需要在內存中維護這樣大的連續內存空間,則破壞了分頁的優勢。如果將頁表的大小限制在一個頁框大小,采用多級映射,則頁表的最大連續空間需求降低為一個頁框大小,能夠解決這個問題。

    假設邏輯地址和物理地址均為32bit,按字節尋址,進行二級映射,且要求一級映射只占用一個頁框。假設每頁的地址空間為p(bit),頁塊的地址空間剩余32-p,頁表項取4B(可對應32bit地址空間的頁塊,因此足夠了),此時一級映射共可存儲 \(\frac{2^p\text{B}} {4\text{B}}=2^{p-2}\) 個頁表項,也即映射 \(2^{p-2}\) 個二級頁,因此通過二級映射一共可以映射 \(2^{2p-4}\) 個頁框地址。需求的頁框地址數量為 \(2^{32-p}\) ,也即 \(2p-4 \ge 32-p\),得到 \(p\ge12\)。也即此時一定能夠構造一個二級映射表,滿足要求。

    例如,取頁大小為4KB(p=12),則一頁可存儲頁表項 \(\frac{\text{4KB}}{\text{4B}}=\text{1K}\) 個,取一級頁表填滿一頁(地址空間為10bit),則可得二級頁表地址空間為32-12-10=10bit,同樣填滿一頁。
    采用二級頁表時,地址結構為如下形式:

\[\text{一級頁地址 | 二級頁地址 | 二級頁內地址} \]

其中,一級頁地址為一級頁表的索引號,二級頁地址為二級頁表的索引號,頁內地址為對應物理頁框中的偏移量


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM