作業系統(九) -- 多級頁表與快表
單級頁表的缺點
前面說了為了提高記憶體的利用率,記憶體是分頁管理的,並且有一個頁表用來儲存頁號與頁框的對應關係。這個思想理論上是沒有問題的,但是實際使用的時候就不行了,為什麼?
為了更好的提高記憶體的利用率,每一頁就應該做得足夠小,但是每一頁都要在頁表裡面有一項與頁框對應,也就是說頁數越多頁表也就會越大,頁表如果很大的話就會對記憶體造成浪費,因為存放頁表的這部分你記憶體是不能給程式使用的,並且一直存放在該程式的PCB裡面。那麼究竟會造成多大的浪費?假設頁面尺寸為4K,地址是32位,那麼就有220個頁面,頁表裡面就有220個頁表項,如果每個頁表項是4個位元組,2^20個就是4M;系統併發十個程式,需要40M記憶體。如果併發一百個就是400M記憶體,這無疑是一個很大的開銷。
但是實際上大部分的邏輯地址根本不會用到。為什麼?如果你跑一個小程式,可能只需要幾M或者幾十M,也就是說頁表裡面用到的項只佔2^20的很小一部分,那麼能不能把不需要的那些項給遮蔽掉呢,也就是不儲存那些項。
多級頁表的提出
第一種嘗試:頁表裡面只存放用到的頁
比如一個程式用到了第1,3,5,6頁,那麼頁表裡面只需要儲存這四頁對應的頁框號,但是這樣的話頁表裡面的項就不連續了,這樣找某一頁對應的頁框就不能直接使用偏移量的形式了。比較好的方法是折半查詢(因為頁號是有順序的)。但是即便使用折半查詢耗費的時間也會比使用偏移量大很多倍。比如如果一個表項有210個,時間複雜度log(210)=10,也就是需要10次,而如果使用偏移量就只需要一次就好了。所以頁表裡面的頁號必須是連續的。
第二種嘗試:多級頁表,頁目錄表+頁表
一個邏輯地址用10bits的頁目錄號+10bits的頁號+12bits的偏移組成。頁目錄表的每一項對應一個頁表,然後再根據頁表找到對應的頁。這種思想就類似與書本,目錄的地方有一個章目錄(頁目錄表)和節目錄(頁表),如果要查詢某一節的內容首先找到這一章的地方,然後再查具體的某一節。我如果要找第五章的第4節,那麼前面四章都不用看,直接找第五章就行了,這樣除了第五章之外的頁號對應的頁框號的就不用存了。能節省大量記憶體;並且保證了章目錄和節目錄都是連續的,這就意味著可以使用偏移量的形式查詢對應的章節。如下圖:
多級頁表的缺點
但是這種方式也存在一個問題,每一次訪問的時候都要根據章目錄找到頁目錄再找到具體的頁。也就是需要訪問三次記憶體;cpu每一條指令執行的時間其實大部分都是浪費在訪問記憶體上,cpu的執行速度是非常快的,比如訪問記憶體的時間幾乎可以忽略了;換言之,兩級頁表的形式雖然提高了控制元件效率,但是在時間上其實是變成了原來的3倍的;這還只是兩級頁表,如果是4級或者5級的,因為電腦不是32位的啊,現在基本上都是64位的了。
相連快速儲存TLB(快表)
在CPU與記憶體訪問之間加一層TLB,TLB是一組暫存器,用來存放最近使用過的頁對應的頁框號;這樣如果CPU需要訪問某一頁首先在TLB裡面找,如果TLB裡面有就不用訪問記憶體了,因為TLB是暫存器,cpu訪問暫存器的速度遠大於對記憶體的訪問速度。這樣就可以提升時間效能了。可以看到提升時間效能最主要的因素就是可以在TLB裡面直接找到該頁對應的頁框號。那麼如何提升命中率的,首先TLB肯定是越大越好,但是TLB材料很貴,不會做得很大。TLB的大小大概是[64,1024]。為什麼TLB裡面存放這麼少的項就能實現“近似訪存1次”?因為程式的區域性性原理。程式的區域性性原理在使用者程式裡面對應的就是迴圈。TLB也被稱為快表。
小結
總結一下:為了提高記憶體的空間效能,提出了多級頁表的概念;但是提到空間效能是以浪費時間效能為基礎的,因此為了補充損失的時間效能,提出了快表(即TLB)的概念,快表利用的是程式的區域性性原理。
參考資料
哈工大李志軍作業系統
相關文章
- 【作業系統】頁表對映作業系統
- Lec 07 作業系統管理頁表對映作業系統
- 讀懂作業系統之虛擬記憶體頁表(五)作業系統記憶體
- 作業系統記憶體管理:頁、頁表項和頁框之間的關係作業系統記憶體
- 作業系統(八) -- 記憶體的分段與分頁作業系統記憶體
- 作業系統與Linux作業系統Linux
- 作業系統:多執行緒作業系統執行緒
- 談談作業系統的多程式作業系統
- 作業系統(1)——作業系統概述作業系統
- 作業系統(一):作業系統概述作業系統
- 按六多從由縣表命九此sqlSQL
- 《作業系統》分析與總結作業系統
- 【作業系統2】作業系統啟動過程與異常/中斷,系統呼叫作業系統
- 在同一頁面顯示多個JavaScript統計圖表JavaScript
- 作業系統(二):作業系統結構作業系統
- 讀懂作業系統之快取原理(cache)(三)作業系統快取
- 簡單介紹Linux作業系統的九大特點!Linux作業系統
- iNeuOS工業互聯作業系統,圖表與資料點組合成新元件,進行專案複用作業系統元件
- 作業系統 作業5作業系統
- 【作業系統】程式與執行緒作業系統執行緒
- 作業系統2—作業系統概論(下)作業系統
- 作業系統1—作業系統概論(上)作業系統
- Linux作業系統執行級別介紹Linux作業系統
- 中興新支點作業系統獲得國家安全作業系統四級認證作業系統
- Alluxio在多級分散式快取系統中的應用UX分散式快取
- 【作業系統】磁碟的四種基本排程演算法(圖表說明)作業系統演算法
- 《作業系統》作業系統
- [作業系統]作業系統
- 作業系統作業系統
- 作業系統綜合題之“分頁儲存系統,頁號和頁內偏移的位數 和 頁表最大多少 和 給一個邏輯地址計算偏移量和實體地址”作業系統
- 億萬級分庫分表後如何進行跨表分頁查詢
- 多個報表匯出到一個 excel 的多 sheet 頁Excel
- 計算機作業系統|作業系統引論計算機作業系統
- 作業系統: Unix作業系統演進簡史作業系統
- day06列表作業
- 作業系統3——程式的描述與控制作業系統
- java與作業系統相關的操作Java作業系統
- Ubuntu作業系統的基本配置與使用Ubuntu作業系統