03計算機操作系統-非連續地址分配(分段,分頁)

前言

本文是非連續地址分配課程的總結。本文主要介紹非連續地址分配, 非連續地址分配主要有:分段和分頁機制。分段有段表,分頁有頁表,來建立邏輯地址(page)與物理地址(frame)的映射關係。爲了減少頁表的容量,討論了一下反向頁表。
非連續地址分配的好處有:一個程序的物理地址空間是非連續的,可以減少地址碎片的產生;更好的內存利用;允許共享代碼與數據;支持動態加載和動態鏈接。

分段

一個應用程序有堆區,棧區,程序數據和程序text段,分別對應不同的段。這些段在邏輯地址空間上是連續的,利用分段機制,在物理內存中這些段被劃分在不同的區域。

尋址

首先一個段可以劃分爲固定的大小區域(這個由計算機決定),邏輯地址是由段號+段內偏移組成。
因爲分段機制和分頁機制的尋址差不多,分段機制的尋址就不詳細的介紹了。大家可以通過分頁機制來同理得到。

分頁

分頁地址空間

分頁地址空間頁的大小是由計算機決定的,一般爲2的指數倍(一般爲512,1024,4k…)。Page表示邏輯頁,frame表示物理頁。
其中page由頁號+頁內偏移,frame由幀號+幀內偏移,其中頁號與幀號可以不相等,對應關係由頁表建立,偏移是一樣的,但是頁空間樂意比幀空間大。具體的對應關係如圖所示,圖中爲簡單的尋址關係。
尋址機制
頁空間和幀空間的對應關係

頁表

每一個應用程序都維護這一個頁表,頁表存儲的邏輯地址空間和物理地址空間,因此頁錶帶來的性能上的開銷是非常大的,每次取一個物理地址,需要訪問兩次內存兩次,以及空間的代價劃分很大。
頁表的結構爲dirty bit + resident bit + clock/reference bit + frame number

解決時間開銷

由於頁表很大的情況下,需要把維護的頁表放在內存中,這樣在訪問一個物理地址的時候需要訪問兩次內存,這個開銷同樣還是很大的。因此使用CPU中的快表(TLB)來實現常用的頁表。當訪問TLB出現訪問異常的時候,就會在內存中的頁表去尋找對應的關係。
程序應該具有一定的局部性
在這裏插入圖片描述

解決空間開銷

採用多級頁表的結構。對於單一頁表來說,其邏輯頁與物理幀的對應關係如果不存在但是任然需要在頁表中表示出來,但是對於多級頁表來說,如果在一級頁表中就發現了對應關係不存在,這樣後面的整個二級頁表都不需要表示了,這樣就節省了空間
在這裏插入圖片描述

反向頁表

一般邏輯地址空間會很大,如果使用反向頁表的話,就直接與物理地址有關,那這樣頁表就會小很多。
建立頁表的時候,我們是以幀號爲索引,但是頁表是通過頁號來尋找幀號的。這裏有一種方法叫關聯存儲器,關聯存儲器可以並行的查找幀號和頁號。但是在硬件上的開銷很大,只能做得很小。大的管理存儲器訪問速度還會下降。
第二種方法是使用hash table,其實這一塊講得有點模糊,我搞懂了再補充

文中ppt來源於視頻中的截圖

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章