基本介紹
- 中文名:外頁表
- 外文名:external page table
- 學科:計算機
- 定義:虛頁號與磁碟實地址的對應表
- 目的:實現地址轉換
- 領域:計算機系統
簡介,虛擬存儲器,頁面,頁面和物理塊,頁面大小,頁表機制,缺頁中斷機構,地址變換機構,
簡介
外頁表是指虛頁號與磁碟實地址的對應表。外頁表主要作用是實現虛地址到輔存實地址的轉換。與之相反,虛頁號和記憶體實地址的對應表稱為內頁表。外頁表的內容是在將程式裝入輔存時填寫的,其中M是裝入位。M=1時,表示該扇區中的頁已從海量存儲器裝入磁碟,通常將外頁表放於輔存中,當發生缺頁中斷需要查用時才將它調入記憶體,從虛頁表找外頁表可由軟體實現。
虛擬存儲器
當代計算機系統的主存主要由半導體存儲器組成,由於工藝和成本的原因,主存的容量受到限制。然而,計算機系統軟體和套用軟體的功能不斷增強,程式規模迅速擴大,要求主存的容量越大越好,這就產生了矛盾。為了給大的程式提供方便,使它們擺脫主存容量的限制,可以由作業系統把主存和輔存這兩級存儲系統管理起來,實現自動覆蓋。也就是說,一個大作業在執行時,其一部分地址空間在主存,另一部分在輔存,當所訪問的信息不在主存時,則由作業系統而不是程式設計師來安排I/O指令,把信息從輔存調入主存。從效果上來看,好像為用戶提供了一個存儲容量比實際主存大得多的存儲器,用戶無需考慮所編程式在主存中是否放得下或放在什麼位置等問題。我們稱這種存儲器為虛擬存儲器。
虛擬存儲器只是一個容量非常大的存儲器的邏輯模型,不是任何實際的物理存儲器。它藉助於磁碟等輔助存儲器來擴大主存容量,使之為更大或更多的程式所使用。虛擬存儲器指的是主存-外存層次,它以透明的方式為用戶提供了一個比實際主存空間大得多的程式地址空間。
物理地址是實際的主存單元地址,由CPU地址引腳送出,是用於訪問主存的。設CPU地址匯流排的寬度為m位,則物理地址空間的大小就是2。
虛擬地址是用戶編程時使用的地址,由編譯程式生成,是程式的邏輯地址,其地址空間的大小受到輔助存儲器容量的限制。顯然,虛擬地址要比實際地址大得多。程式的邏輯地址空間稱為虛擬地址空間。
程式運行時,CPU以虛擬地址來訪問主存,由輔助硬體找出虛擬地址和實際地址之間的對應關係,並判斷這個虛擬地址指示的存儲單元內容是否已裝入主存。如果已在主存中,則通過地址變換,CPU可直接訪問主存的實際單元;如果不在主存中,則把包含這個字的一個存儲塊調入主存後再由CPU訪問。如果主存已滿,則由替換算法從主存中將暫不運行的一塊調回外存,再從外存調入新的一塊到主存。
從原理角度看,虛擬存儲器和Cache-主存層次有不少相同之處。事實上,前面提到的各種控制方法是先套用於虛擬存儲器中,後來才發展到Cache-主存層次中去的。不過,Cache-主存層次的控制完全由硬體實現,所以對各類程式設計師是透明的;而虛擬存儲器的控制是軟硬體相結合的,對於設計存儲管理軟體的系統程式設計師來說是不透明的,對於應用程式員來說是透明的。
主存-外存層次和Cache-主存層次所使用的地址變換及映射方法和替換策略,從原理上看是相同的,都基於程式局部性原理。它們遵循的原則是:
(1)把程式中最近常用的部分駐留在高速的存儲器中;
(2)一旦這部分變得不常用了,把它們送回到低速的存儲器中;
(3)這種換入換出是由硬體或作業系統完成的,對用戶是透明的;
(4)力圖使存儲系統的性能接近高速存儲器,價格接近低速存儲器。
兩種存儲系統的主要區別在於:在虛擬存儲器中未命中的性能損失,要遠大於Cache系統中未命中的損失。
頁面
頁面和物理塊
分頁存儲管理是將一個進程的邏輯地址空間分成若干個大小相等的片,稱為頁面或頁,並為各頁加以編號,從 0 開始,如第 0 頁、第 1 頁等。相應地,也把記憶體空間分成與頁面相同大小的若干個存儲塊,稱為(物理)塊或頁框(frame),也同樣為它們加以編號,如 0 # 塊、1 # 塊等等。 在為進程分配記憶體時, 以塊為單位將進程中的若干個頁分別裝入到多個可以不相鄰接的物理塊中。由於進程的最後一頁經常裝不滿一塊而形成了不可利用的碎片,稱之為“頁內碎片” 。
頁面大小
在分頁系統中的頁面其大小應適中。頁面若太小,一方面雖然可使記憶體碎片減小,從而減少了記憶體碎片的總空間,有利於提高記憶體利用率,但另一方面也會使每個進程占用較多的頁面,從而導致進程的頁表過長,占用大量記憶體;此外,還會降低頁面換進換出的效率。然而,如果選擇的頁面較大,雖然可以減少頁表的長度,提高頁面換進換出的速度,但卻又會使頁內碎片增大。因此,頁面的大小應選擇適中,且頁面大小應是 2 的冪,通常為 512 B~8 KB。
頁表機制
在請求分頁系統中所需要的主要數據結構是頁表。其基本作用仍然是將用戶地址空間中的邏輯地址變換為記憶體空間中的物理地址。由於只將應用程式的一部分調入記憶體,還有一部分仍在盤上,故須在頁表中再增加若干項,供程式(數據)在換進、換出時參考。在請求分頁系統中的每個頁表項如下所示:
現對其中各欄位說明如下:
(1) 狀態位 P:用於指示該頁是否已調入記憶體,供程式訪問時參考。
(2) 訪問欄位 A:用於記錄本頁在一段時間內被訪問的次數,或記錄本頁最近已有多長時間未被訪問,供選擇換出頁面時參考。
(3) 修改位 M:表示該頁在調入記憶體後是否被修改過。由於記憶體中的每一頁都在外存上保留一份副本,因此,若未被修改,在置換該頁時就不需再將該頁寫回到外存上,以減少系統的開銷和啟動磁碟的次數;若已被修改,則必須將該頁重寫到外存上,以保證外存中所保留的始終是最新副本。簡言之,M 位供置換頁面時參考。
(4) 外存地址:用於指出該頁在外存上的地址,通常是物理塊號,供調入該頁時參考。
缺頁中斷機構
在請求分頁系統中,每當所要訪問的頁面不在記憶體時,便產生一缺頁中斷,請求 OS 將所缺之頁調入記憶體。缺頁中斷作為中斷,它們同樣需要經歷諸如保護 CPU 環境、分析中斷原因、轉入缺頁中斷處理程式進行處理、恢復 CPU 環境等幾個步驟。但缺頁中斷又是一種特殊的中斷,它與一般的中斷相比,有著明顯的區別,主要表現在下面兩個方面:
(1) 在指令執行期間產生和處理中斷信號。通常,CPU 都是在一條指令執行完後,才檢查是否有中斷請求到達。若有,便去回響,否則,繼續執行下一條指令。然而,缺頁中斷是在指令執行期間,發現所要訪問的指令或數據不在記憶體時所產生和處理的。
(2) 一條指令在執行期間,可能產生多次缺頁中斷。在圖 4-24 中示出了一個例子。如在執行一條指令 COPY A TO B 時, 可能要產生 6 次缺頁中斷, 其中指令本身跨了兩個頁面,A 和 B 又分別各是一個數據塊,也都跨了兩個頁面。基於這些特徵,系統中的硬體機構應能保存多次中斷時的狀態,並保證最後能返回到中斷前產生缺頁中斷的指令處繼續執行。
地址變換機構
請求分頁系統中的地址變換機構,是在分頁系統地址變換機構的基礎上,再為實現虛擬存儲器而增加了某些功能而形成的,如產生和處理缺頁中斷,以及從記憶體中換出一頁的功能等等。圖 4-25 示出了請求分頁系統中的地址變換過程。在進行地址變換時,首先去檢索快表,試圖從中找出所要訪問的頁。若找到,便修改頁表項中的訪問位。對於寫指令,還須將修改位置成“1” ,然後利用頁表項中給出的物理塊號和頁內地址形成物理地址。地址變換過程到此結束。
如果在快表中未找到該頁的頁表項時,應到記憶體中去查找頁表,再從找到的頁表項中的狀態位 P,來了解該頁是否已調入記憶體。若該頁已調入記憶體,這時應將此頁的頁表項寫入快表,當快表已滿時,應先調出按某種算法所確定的頁的頁表項,然後再寫入該頁的頁表項;若該頁尚未調入記憶體,這時應產生缺頁中斷,請求 OS 從外存把該頁調入記憶體。