[作業系統]訪問一個邏輯地址發生了什麼

Duancf發表於2024-08-24

當CPU想要訪問一個邏輯地址的時候,我們需要做兩個步驟,地址轉換和記憶體訪問

地址轉換

邏輯地址是程式內部使用的地址,並非真正的實體地址。

從邏輯地址到實體地址的對映,由頁表來完成,頁表的內容包括,邏輯頁號,物理頁號,有效位,有效位表示這一頁是否在記憶體中。

頁表存放在記憶體中,如果需要頻繁訪問頁表,需要花上一些時間,所以我們為頁表做了快取,也就是快表,TLB
TLB中存放最近使用的頁表項,TLB的速度比頁表要快,當我們需要查頁表的時候,同時去查詢快表和慢表,快表中查詢到可以取消慢表中的查詢。

如果快錶慢表中都沒有命中,那麼發生缺頁中斷,交給作業系統去載入這一頁到記憶體中,並修改慢表,然後重新去查詢頁表這次就會命中了。

這樣我們得到了程式的物理頁號。

image

訪問記憶體

得到物理頁號之後,加上頁內偏移,就可以得到實體地址。
那我們去直接訪問這個實體地址嗎?並不是

我們設定了cache快取來加快訪問實體地址的過程,
也就是說,cache中存放了最近訪問過的物理塊中的資訊,如果發現cache中有我們想要的資訊就直接從cache中去取,否則再去記憶體中取,這樣就加快了訪存的速度

image

相關文章