真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

CPU是如何訪問內(nèi)存的

這期內(nèi)容當(dāng)中小編將會給大家?guī)碛嘘P(guān)CPU是如何訪問內(nèi)存的,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比社旗網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式社旗網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋社旗地區(qū)。費用合理售后完善,十年實體公司更值得信賴。

內(nèi)存管理可以說是一個比較難學(xué)的模塊,之所以比較難學(xué)。一是內(nèi)存管理涉及到硬件的實現(xiàn)原理和軟件的復(fù)雜算法,二是網(wǎng)上關(guān)于內(nèi)存管理的解釋有太多錯誤的解釋。希望可以做個內(nèi)存管理的系列,從硬件實現(xiàn)到底層內(nèi)存分配算法,再從內(nèi)核分配算法到應(yīng)用程序內(nèi)存劃分,一直到內(nèi)存和硬盤如何交互等,徹底理解內(nèi)存管理的整個脈絡(luò)框架。下面主要講解硬件原理和分頁管理。

CPU通過MMU訪問內(nèi)存

我們先來看一張圖:

CPU是如何訪問內(nèi)存的

從圖中可以清晰地看出,CPU、MMU、DDR 這三部分在硬件上是如何分布的。首先 CPU 在訪問內(nèi)存的時候都需要通過 MMU 把虛擬地址轉(zhuǎn)化為物理地址,然后通過總線訪問內(nèi)存。MMU 開啟后 CPU 看到的所有地址都是虛擬地址,CPU 把這個虛擬地址發(fā)給 MMU 后,MMU 會通過頁表在頁表里查出這個虛擬地址對應(yīng)的物理地址是什么,從而去訪問外面的 DDR(內(nèi)存條)。

所以搞懂了 MMU 如何把虛擬地址轉(zhuǎn)化為物理地址也就明白了 CPU 是如何通過 MMU 來訪問內(nèi)存的。

MMU 是通過頁表把虛擬地址轉(zhuǎn)換成物理地址,頁表是一種特殊的數(shù)據(jù)結(jié)構(gòu),放在系統(tǒng)空間的頁表區(qū)存放邏輯頁與物理頁幀的對應(yīng)關(guān)系,每一個進(jìn)程都有一個自己的頁表。

CPU 訪問的虛擬地址可以分為:p(頁號),用來作為頁表的索引;d(頁偏移),該頁內(nèi)的地址偏移?,F(xiàn)在我們假設(shè)每一頁的大小是 4KB,而且頁表只有一級,那么頁表長成下面這個樣子(頁表的每一行是32個 bit,前20 bit 表示頁號 p,后面12 bit 表示頁偏移 d):

CPU是如何訪問內(nèi)存的

CPU,虛擬地址,頁表和物理地址的關(guān)系如下圖:

CPU是如何訪問內(nèi)存的

頁表包含每頁所在物理內(nèi)存的基地址,這些基地址與頁偏移的組合形成物理地址,就可送交物理單元。

上面我們發(fā)現(xiàn),如果采用一級頁表的話,每個進(jìn)程都需要1個4MB的頁表(假如虛擬地址空間為32位(即4GB)、每個頁面映射4KB以及每條頁表項占4B,則進(jìn)程需要1M個頁表項(4GB / 4KB = 1M),即頁表(每個進(jìn)程都有一個頁表)占用4MB(1M * 4B = 4MB)的內(nèi)存空間)。然而對于大多數(shù)程序來說,其使用到的空間遠(yuǎn)未達(dá)到4GB,何必去映射不可能用到的空間呢?也就是說,一級頁表覆蓋了整個4GB虛擬地址空間,但如果某個一級頁表的頁表項沒有被用到,也就不需要創(chuàng)建這個頁表項對應(yīng)的二級頁表了,即可以在需要時才創(chuàng)建二級頁表。做個簡單的計算,假設(shè)只有20%的一級頁表項被用到了,那么頁表占用的內(nèi)存空間就只有0.804MB(1K * 4B + 0.2 * 1K * 1K * 4B = 0.804MB)。除了在需要的時候創(chuàng)建二級頁表外,還可以通過將此頁面從磁盤調(diào)入到內(nèi)存,只有一級頁表在內(nèi)存中,二級頁表僅有一個在內(nèi)存中,其余全在磁盤中(雖然這樣效率非常低),則此時頁表占用了8KB(1K * 4B + 1 * 1K * 4B = 8KB),對比上一步的0.804MB,占用空間又縮小了好多倍!總而言之,采用多級頁表可以節(jié)省內(nèi)存。

二級頁表就是將頁表再分頁。仍以之前的32位系統(tǒng)為例,一個邏輯地址被分為20位的頁碼和12位的頁偏移d。因為要對頁表進(jìn)行再分頁,該頁號可分為10位的頁碼p1和10位的頁偏移p2。其中p1用來訪問外部頁表的索引,而p2是是外部頁表的頁偏移。

CPU是如何訪問內(nèi)存的

CPU是如何訪問內(nèi)存的

上述就是小編為大家分享的CPU是如何訪問內(nèi)存的了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


本文題目:CPU是如何訪問內(nèi)存的
鏈接分享:http://weahome.cn/article/jedoec.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部