OS / CPU是如何访问内存的?
我們先來看一張圖:
從圖中可以清晰地看出,CPU、MMU、DDR 這三部分在硬件上是如何分布的。首先 CPU 在訪問內存的時候都需要通過 MMU 把虛擬地址轉化為物理地址,然后通過總線訪問內存。MMU 開啟后 CPU 看到的所有地址都是虛擬地址,CPU 把這個虛擬地址發給 MMU 后,MMU 會通過頁表在頁表里查出這個虛擬地址對應的物理地址是什么,從而去訪問外面的 DDR(內存條)。
所以搞懂了 MMU 如何把虛擬地址轉化為物理地址也就明白了 CPU 是如何通過 MMU 來訪問內存的。
MMU 是通過頁表把虛擬地址轉換成物理地址,頁表是一種特殊的數據結構,放在系統空間的頁表區存放邏輯頁與物理頁幀的對應關系,每一個進程都有一個自己的頁表。
CPU 訪問的虛擬地址可以分為:p(頁號),用來作為頁表的索引;d(頁偏移),該頁內的地址偏移。現在我們假設每一頁的大小是 4KB,而且頁表只有一級,那么頁表長成下面這個樣子(頁表的每一行是32個 bit,前20 bit 表示頁號 p,后面12 bit 表示頁偏移 d):
CPU,虛擬地址,頁表和物理地址的關系如下圖:
頁表包含每頁所在物理內存的基地址,這些基地址與頁偏移的組合形成物理地址,就可送交物理單元。
?
轉自于:公眾號《人人都是極客》
https://mp.weixin.qq.com/s?__biz=MzIxMjE1MzU4OA==&mid=2648917864&idx=1&sn=faef63ed9f60ac7edc5e3b524b3c2e88&chksm=8f5d82f3b82a0be5bc9680310928dc304dd8857e0b2dd17efe3c577f898307947747b70997a5&scene=21#wechat_redirect
(若侵則刪)
?
(SAW:Game Over!)
總結
以上是生活随笔為你收集整理的OS / CPU是如何访问内存的?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Qt / QMainWindow、QDi
- 下一篇: OS / Linux / 文件描述符以及