分頁存儲管理和分段存儲管理


1.采用相聯存儲器后地址轉換過程,用圖表示出來

2.詳述分段管理和分頁管理的區別。 

3.P249 習題11

1.采用相聯存儲器后地址轉換過程,用圖表示出來CPU對存儲器的訪問,通常是一次讀寫一個字單元。當CPU訪Cache不命中時,需將存儲在主存中的字單元連同 其后若干個字一同調入Cache中,之所以這樣做,是為了使其后的訪存能在Cache中命中。因此,主存和Cache之間一次交換的數據單位應該是一個數 據塊。數據塊的大小是固定的,由若干個字組成,且主存和Cache的數據塊大小是相同的。

 從Cache-主存層次實現的目標看,一方面既要使CPU的訪存速度接近於訪Cache的速度,另一方面為用戶程 序提供的運行空間應保持為主存容量大小的存儲空間。在采用Cache-主存層次的系統中,Cache對用戶程序而言是透明的,也就是說,用戶程序可以不需 要知道Cache的存在。因此,CPU每次訪存時,依然和未使用Cache的情況一樣,給出的是一個主存地址。但在Cache-主存層次中,CPU首先訪 問的是Cache,並不是主存。為此,需要一種機制將CPU的訪主存地址轉換成訪Cache地址。而主存地址與Cache地址之間的轉換是與主存塊與 Cache塊之間的映射關系緊密聯系的,也就是說,當CPU訪Cache未命中時,需要將欲訪問的字所在主存中的塊調入Cache中,按什么樣的策略調 入,直接影響到主存地址與Cache地址的對應關系,這也就是本小節要解決的主存與Cache的地址映射問題。

 主要有三種地址映射方式,分別為全相聯映射、直接相聯映射和組相聯映射。

 1. 全相聯映射

 全相聯映射是指主存中任一塊都可以映射到Cache中任一塊的方式,也就是說,當主存中的一塊需調入Cache時,可根據當時Cache的塊占用或分配情況,選擇一個塊給主存塊存儲,所選的Cache塊可以是Cache中的任意一塊。例如,設Cache共有2C塊,主存共有2M塊,當主存的某一塊j需調進Cache中時,它可以存入Cache的塊0、塊1、…、塊i、… 或塊2C -1的任意一塊上。如圖4-28所示。

主存與Cache的地址映射 - zjfzjf - zjfzjf

  

圖4-28全相聯映射方式

 在全相聯映射方式下,CPU的訪主存地址為如下形式:

主存與Cache的地址映射 - zjfzjf - zjfzjf

  

 其中,M為主存的塊號,W為塊內的字號。而CPU訪Cache的地址形式為:

主存與Cache的地址映射 - zjfzjf - zjfzjf

  

 其中,C為Cache的塊號,W為塊內的字號。

 主存地址到Cache地址的轉換是通過查找一個由相聯存儲器實現的塊表來完成的,其形成過程如圖4-29示。

 

主存與Cache的地址映射 - zjfzjf - zjfzjf

 

圖4-29全相聯映射的地址轉換

 當 一個主存塊調入Cache中時,會同時在一個存儲主存塊號和Cache塊號映射表的相聯存儲器中進行登記。CPU訪存時,首先,根據主存地址中的主存塊號 M在相聯存儲器中查找Cache塊號,若找到,則本次訪Cache命中,於是將對應的Cache塊號取出,並送訪Cache地址的塊號C字段;緊接着將主 存地址的塊內字號W直接送Cache地址的塊內字號W字段,從而形成一個訪Cache的地址;最后根據該地址完成對Cache單元的訪問.

 全相聯映射方式的優點是Cache的空間利用率高,但缺點是相聯存儲器龐大,比較電路復雜,因此只適合於小容量的Cache之用。 

2.詳述分段管理和分頁管理的區別。

分頁系統的缺點
  缺點的改進:
①頁表太大?這個缺點用多級頁表來克服了。
②多級頁表速度慢?這個問題用TLB解決了大部分。頁面的來回更換?這個問題用頁面更換算法解決了。

 
缺點③:共享困難,雖然理論上我們可以按頁面進行共享,似乎可以!但是呢這根本就是不現實的,因為一個頁面的內容很可能存在代碼和數據,即很難使得一個頁面里面只包含可共享的內容 或者 不可共享的內容缺點④:一個進程只能占用一個虛擬地址空間,這也是分頁系統無法克服的。所以一個程序的大小最大只能和虛擬地址空間的大小一樣,其所有的內容都必須在這個虛擬地址空間中分布。

但是很多人覺得一個程序不必要分配多個虛擬地址空間!


那么我們來看一個例子:編譯器的工作過程。我們知道在編譯器工作時需要保持多個數據結構:詞法分析樹,常數表,代碼段,符合表 ,調用棧。使用保持多個數據結構並沒有任何問題,
問題出現在:這些數據結構可以獨立的增長和縮小,從而造成了該數據結構所需的內存空間的變化。


那么我們來想怎么實現在一個虛擬地址空間內,實現各個數據段的空間的增加和減少???


解決方法:那一個程序占用一個虛擬空間不能解決我們各個數據結構段增長的需求!那么就使用多個虛擬地址空間來解決。

 

分段管理系統
  定義:分段管理是將一個程序按照邏輯單元分成多個程序段,每個段使用自己單獨的虛擬地址空間。
5個段占用5個虛擬地址空間。這樣一個段占用一個虛擬地址空間,就不會發生空間增長時碰撞到另一個段的問題。

 

 

 
分段原理:一個程序占據多個虛擬地址空間,那么不通過的段有可能有同樣的虛擬地址空間。在分段情況下,一個虛擬地址空間又段號和段內偏差。段號找相應的段地址空間!

  實現手段:由於分段內存管理 和 基本內存管理有着類似之處,所以分段也是使用 基址---極限管理模式。
不過這里使用的是一組 基址—極限對。而對每一對基址極限用於其中一段的管理。

 

分段管理的一個重要數據結構就是段表。該表存放的是虛擬的段號到該段所在內存基址的映射。如果一個段不存在,則段號對應的基址將不存在。


分段的優缺點
 
優點:

1.每個邏輯單元可以獨占一個虛擬地址空間,這樣所寫程序的空間大為增長。


2.共享性強。


3.相比於分頁,當對於空間稀疏的程序,分頁仍然需要分配虛擬頁面。而分段不給他分配任何的虛擬空間。


缺點:既然是分段,就存在前面基本內存管理的缺點-----外部碎片化 和 一個段必須全部加載到內存上。

3.P249 習題11

  答:(1)649

  (2)1727

  (3)2301

  (4)140

  (5)1956

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM