CS 學習筆記 - 關於頁式虛擬存儲器的地址映射的一些理解

虛擬存儲器映射圖解

在這裏插入圖片描述

圖解詳細解釋 😄


頁式虛擬存儲系統 ☁️

頁式虛擬存儲系統中 虛擬地址空間會被劃分爲 等長大小的頁,這個頁被稱爲 邏輯頁,
我的理解就是 假設它存在, 假設我們有這麼一塊虛擬的空間, 這些空間被劃分成一個個大小相同的頁,
關於這個頁, 就只是一個劃分的單位, 比如 我們可以說把一個 1G 的 虛擬存儲空間劃分爲 4頁, 那麼每一頁就是 256M , 我一開始很糾結這個頁 到底表示什麼, 嘗試去和現實的物體去對應, 但是最終我發現其實它就是一個單位, 我們甚至可以頁換成塊, 也是說的通的, 所以不必糾結.

關於邏輯頁和物理頁 ❤️

1️⃣ 在頁式虛擬存儲系統中, 無論是虛擬空間還是實際的主存空間, 這裏需要說明的是,
2️⃣ 虛擬空間是我們虛擬出來的, 就是假設有這麼一個空間, 而主存空間是是實實在在的存儲空間, 主存空間 我的理解是 就是我們的電腦內存空間, 比如 我自己的筆記本電腦是 8G 內存, 這個就是主存空間的大小

3️⃣ 虛地址空間被分成等長的頁稱爲邏輯頁, 而主存(內存)空間也被劃分爲同樣大小的頁, 稱爲物理頁 , 對應的 邏輯頁上的虛地址, 這個虛地址分爲兩個字段
第一個字段(或者稱爲高字段) 是邏輯頁號, 就是這個地址所在邏輯頁的邏輯頁號,

4️⃣ 這裏我舉一個例子 : 假設 一個100M 的虛擬存儲空間劃分爲 100個頁, 那麼對應的邏輯編號我們可以簡單地的劃分成 1 - 100 , 1號邏輯頁 .2號 … 以此類推 , 那麼假設 66 號 邏輯頁的中的 某一個 1k 大小的存儲空間的地址爲 0x1313a , 那麼對應的這塊 1k 大小的 空間的虛地址就是 66,0x1313a , 前面是邏輯頁號, 後面是對應的是頁內地址, 同樣的 實存地址也是一樣的, 分爲兩個部分 一個是 物理頁號, 另外一個是 頁內地址 , 虛地址和實存地址其實類似, 區別可能只是 虛地址是不存在的, 而實存地址是實際存在在 你的內存空間中的

5️⃣ 需要補充的一些東西 : 比如 有個東西叫偏移量, 這個也叫頁內地址, 其實都是一個東西, 還有就是 邏輯地址 = 虛地址 , 物理地址 = 實存地址 , 只是叫法不同

關於頁式虛存地址的映射 ⭐️⭐️⭐️


1️⃣ 在聊映射之前需要理解的一些東西 :

  • 在大多數系統中, 每一個進程都對應着一個頁表
    在這裏插入圖片描述
  • 頁表中對應每一個虛存頁面都有一個表項 , 表項的內容包含 :
    該虛擬存儲頁面所在主存頁面的地址, 實際上就是 這個虛擬頁面對應的在你物理內存中的頁的頁號, 標識 這個邏輯頁是否已經存在在內存中的標識, 比如用 0 標識存在, 1 標識不存在, 然後是 這個邏輯頁的頁號,作爲這個表項的索引, 當我們輸入對應的邏輯頁號 就可以獲取其在內存中的物理頁號 ,進而找到他對應的物理頁,
    在這裏插入圖片描述
  • 地址映射的過程其實就是 根據邏輯頁號從頁表中查找 其對應的物理頁號
  1. 判斷這個邏輯地址對應的存儲單元是否已經裝入內存中, 這個是用 有效位來標識的,
  2. 如果已經在內存(主存)中 ,可以直接根據邏輯地址查找到其對應的物理頁號,那麼CPU 可以直接訪問對應的物理頁
  3. 如果不存在 ,那麼就把這個包含這個字的一頁從 磁盤調入到主存中, 在由CPU 去訪問
  4. 注意 : 在實際的物理存儲中, 所有程序和數據都是在操作系統的管理下,先存儲在磁盤中, 然後操作系統將當前所需要的部分存入內存中, 供CPU 使用, 其餘暫時不運行的部分則留在磁盤中.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章