分頁儲存中的兩級頁表

2021-09-20 03:48:46 字數 1259 閱讀 7955

在分頁儲存的管理方式中,將程序的邏輯位址空間分為若干大小相等的片,稱為頁面或頁;相應地,將物理記憶體空間分為與頁面大小相等的塊,稱為物理塊或幀

現在已經將邏輯位址空間分為了若干個頁,將物理記憶體空間分為了若干個幀,那麼是如何將某一頁與某一幀對應起來的呢?這就是頁表所要完成的任務。頁表,又稱為頁面映像表,所要完成的任務就是將程序位址空間中的頁與物理記憶體中的幀對應起來,通過查詢這張表,我們就可以知道某一頁所對應的幀

考慮這樣一種情況,對於乙個32位邏輯位址空間的分頁系統,規定每一頁的大小為4kb即2

122^

212b,那麼一共會產生2322

12=220

=1\frac}}=2^=1

212232

​=22

0=1m個表項,每個表項占用1b,則這個頁表需要占用1mb的記憶體空間,而且這段空間必須連續。顯然這樣的要求對於寸土寸金的記憶體空間來說太奢侈了,那麼有沒有什麼好方法來解決這個問題呢?答案肯定是有的,兩級頁表與多級頁表的出現正是為了解決這個問題。

兩級頁表採用離散分配的方式,將頁表進行分頁,然後將各個頁面分別儲存在不同的物理塊中以解決連續儲存的問題。現在問題又來了,一級頁表被分成了若干個頁面分別儲存在不同的物理塊中,那麼我們怎麼知道哪個頁面是儲存在哪個物理塊中的呢?別急,都說了是兩級頁表,不是還有一級沒說嘛。另外一級頁表又叫做外層頁表,它是用來儲存剛剛所劃分的各個頁面的首位址,通過它我們就可以知道各個頁面所處的位置

以32位邏輯位址空間的分頁系統為例,如果採用一級頁表,那麼頁表所占用的記憶體空間是1mb,而且必須是連續的。現在我們將頁表等分成1024份,即產生了1024個頁面,並且每個頁面有1024個表項(每個表項1b,即每個頁面1kb),儲存的是頁號與物理塊號的對映關係;然後我們建立外層頁表,由於有1024個頁面,所以外層頁表有1024個表項(每個表項1b,外層頁表1kb),儲存的是各個頁面的首位址。這樣我們就實現了乙個兩級頁表,由於兩級頁表採用了離散分配的方式,外層頁表和每個表項所對應的頁面分別儲存在不同的物理塊中,解決了需要連續儲存的問題。

3 1 9 兩級頁表

單級頁表的幾個問題 1 因為頁表的特性,需要連續存放,當程序需要很多個頁面,就需要很大的頁表,就需要很大一塊連續的區域去存放頁表 2 根據區域性性原理,沒必要讓頁表常駐記憶體 因為頁表太大,需要連續一大片記憶體的解決方法是 重新建立起對一級頁表的頁表,頁目錄表 將邏輯位址程序拆分成一級頁號和二級頁號...

程序頁表兩級結構 頁目錄和頁表頁

程序頁表的基本結構僅適合於小程序位址空間,在大位址空間下,該結構發生了變化。大虛址空間下的記憶體程序頁表結構採用頁表頁和頁目錄。32位意味著虛址空間可達4gb 虛址空間計算方法 32位的編址為232,232 210 210 210 22 4gb 1k 1024b 1m 1024k 1g 1024m ...

mybatis的兩級快取

mybatis的快取有兩種,分為一級快取和二級快取,它們的作用域不同。一級快取我個人也叫session快取,它預設是開啟的,不可配置的。為啥叫session快取,是因為它的作用域是session範圍內的,也就是說同乙個session的情況才能使用到一級快取,目前我遇到的情況就是在乙個事務內查詢兩次資...