天天看點

作業系統--存儲管理2

------非連續存儲配置設定-------

概念:将程序存儲在非連續的記憶體空間-->進而需要将程序劃分成小的部分

根據劃分粒度的大小可以分為:段式/頁式記憶體配置設定方式

1.頁式存儲管理--前提(程序并不要求邏輯位址必須連續)

注意:其實程序被分為許多片段,零散的分布在記憶體中不存在确定的順序

* 頁式存儲管理具體操作

# 将實體空間等分為固定長度的資料塊--稱為頁幀(frames)-f

# 将邏輯空間等分為長度固定的資料塊--稱為頁面(pages)--p

注意:頁面和頁幀的大小保持一緻;通常頁面大小是2的幂

大小在512B--8192B之間

# 頁表:是一個數組:下标是:頁号;元素是:頁幀。

# 将邏輯位址翻譯成實體位址的過程

1.将邏輯位址空間2^m 頁面長度2^n,總頁面個數2^(m-n);後n位對應的

2^ n為該頁面偏移量d

2.頁号:邏輯位址的前(m-n)位,通過頁号查找頁表,找到該頁面

對應的頁幀f。

3.實體位址= 頁幀值*頁面大小+頁面偏移量 realadd = f*2^(2^n) + d;

2.頁式記憶體管理中OS所起的作用、負責的是什麼

* OS負責監控所有的空閑頁幀

若程序需要n個邏輯頁面,OS配置設定n個空閑頁幀給程序,使得程序

 可以将資料和代碼裝進記憶體

* OS配置設定頁表所需要的實體空間,布置好頁表定義映射函數;

注意:頁式配置設定存在内部碎片

3.如何實作頁表?

* 頁表必須常駐記憶體(寄存器大小有限)數組實作

* 頁表的基位址寄存器--必須指向頁表的首位址

* 頁表的長度寄存器表示頁面占的記憶體空間大小

4.如何提高頁式存儲配置設定的速度?

* 按照頁表在記憶體中,位址轉化需要通路兩次記憶體;解決兩次記憶體通路

TLBs:translation look-aside buffers

借助TLBs快表實作對頁表部分内容的緩存;減少一次通路記憶體(空間局部)

TLB本質是一個硬體裝置---是關聯存儲器(該結構支援并行搜尋-速度超快)

TLB支援對位址(p,d)翻譯

命中:p在TLB裡面,直接擷取頁幀

不命中:p不再TLB裡面,在記憶體中的頁表找到頁幀号,并将該頁桢copy進tlb

5.頁式配置設定--記憶體保護

在頁面的每個頁表項中,為每個頁設定一個包含位代表--有效、保護

有效:表示該頁面在程序的邏輯位址範圍,是以是合法頁面可以通路

無效:表示該頁面在程序的邏輯位址範圍外,不可以進行通路

保護位:操作的類型限制;隻讀等。

6.共享頁面

共享代碼:隻讀的代碼(可重入)隻需要存儲一份,供若幹個程序共享

對于所有程序來說共享的代碼必須位于邏輯位址相同的位置

程序自有代碼資料:程序各自擁有一份,為自有的代碼資料配置設定的頁面

可以分布在邏輯位址空間的任意位置

7.對于頁表過大的處理

# 采用多級頁表

# 采用反向頁表

繼續閱讀