虚拟存储管理+地址变换+软考系统架构设计师
2011年系統架構設計師真題7題
7.虛擬存儲器發生頁面失效時,需要進行外部地址變換,即實現( )的變換。
A.虛地址到主存地址
B.主存地址到 Cache 地址
C.主存地址到輔存物理地址
D.虛地址到輔存物理地址
這個題比較坑,答案是D, 我們一步步分析:(如果僅僅了解頁式存儲管理,那么這題很容易就選A了)
虛擬存儲器中,如果頁面失效,會發生缺頁中斷,即訪問的數據不在內存中,需要將磁盤中的數據加載到內存。這個過程中磁盤中的數據加載到內存,到底發生了什么?
有個大前提,缺頁中斷了,也就是我們要訪問的數據不在內存中(不在“頁表”中),如果內存已經滿了,那么需要進行頁面淘汰,并將所要訪問的數據加載到淘汰頁面的位置,如果內存沒有滿,那么就將所要訪問的數據加載到內存的空閑位置。
1. 所要訪問的數據加載到淘汰頁面的位置
要淘汰內存中的頁面,需要頁面置換算法, 比如FIFO、LRU等,淘汰是直接清理掉嗎?并非如此。要淘汰的時候,需要判斷該頁面的數據是否已經被修改了,如果被修改了,需要寫回到磁盤。試想一下,如果不回寫到磁盤,那么我們修改的數據是不是就永久的丟失了?
所以,內存中的頁面被置換的時候,如果修改位為“1”,那么就要將數據回寫。如何回寫呢? 那是不是要找到該頁面當時是如何從磁盤加載到內存的?
這時候就需要“外頁表”了,它記錄了操作系統中內存的虛擬地址與磁盤物理地址的映射關系,通過虛擬地址找到該頁在磁盤中的準確位置(磁盤機號、柱面號、磁頭號和扇區),然后寫回。
到此位置,上面題的答案就出來了, 外部地址變換,需要通過虛擬地址找到磁盤的物理地址,然后將被置換的頁面寫回到磁盤。
2. 所要訪問的數據加載到內存的空閑位置
要訪問的數據,從磁盤加載到內存的空閑位置,需要記錄以下從磁盤哪個具體位置加載到內存的,這時候也需要維護以下“外頁表”,即為虛擬內存的虛擬地址到磁盤物理地址的映射。
綜上,無論內存是否滿,從磁盤加載數據到內存時,都要訪問“外頁表”,也就是虛擬地址與磁盤物理地址的映射。
那么我們經常說的頁表,其實是內頁表,是內部地址轉換的時候用的,也就是通過虛擬地址定位到內存的物理地址。我們我們寫的Java、C++代碼, 聲明了一個變量a,這個a的地址是虛擬地址,我們要改a的值,就需要通過“頁表”找到實際的物理地址,然后更改物理地址上保存的內容。
總的來說,“外頁表”是虛擬地址與磁盤物理地址的映射關系表,“頁表”是虛擬地址與內存物理地址的映射關系表。
關于操作系統的存儲管理可以參考以下兩篇文章:
http://www.ylaihui.com/blog/article/9280?rootCategoryId=16
http://www.ylaihui.com/blog/article/9276?rootCategoryId=16
文章最后附上操作系統的地址變換流程圖:
總結
以上是生活随笔為你收集整理的虚拟存储管理+地址变换+软考系统架构设计师的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Power BI 企业邮箱账户注册
- 下一篇: 一文看懂推荐系统:排序11:Deep