成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

CPU是如何訪問內存的?

商務辦公
內存管理可以說是一個比較難學的模塊,之所以比較難學。一是內存管理涉及到硬件的實現原理和軟件的復雜算法,二是網上關于內存管理的解釋有太多錯誤的解釋。

[[251701]]

內存管理可以說是一個比較難學的模塊,之所以比較難學。一是內存管理涉及到硬件的實現原理和軟件的復雜算法,二是網上關于內存管理的解釋有太多錯誤的解釋。希望可以做個內存管理的系列,從硬件實現到底層內存分配算法,再從內核分配算法到應用程序內存劃分,一直到內存和硬盤如何交互等,徹底理解內存管理的整個脈絡框架。本節主要講解硬件原理和分頁管理。

CPU通過MMU訪問內存

我們先來看一張圖:

 

從圖中可以清晰地看出,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):

 

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

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

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

 

 


責任編輯:武曉燕 來源: 人人都是極客
相關推薦

2019-07-10 05:08:05

CPU內存分頁管理

2021-05-10 08:20:32

CPU 符號整數

2020-07-28 08:10:33

Linux內存虛擬

2024-09-09 09:41:03

內存溢出golang開發者

2021-07-28 07:53:20

CPU 線程切換

2019-10-16 00:06:08

CPU內存存儲

2021-04-08 09:32:17

鴻蒙HarmonyOS應用

2019-02-28 14:04:28

內存固定分配存儲

2023-03-05 22:30:25

JavaCPU

2020-11-10 08:41:51

CPU執行任務內存

2021-11-10 09:15:00

CPU01 二進制Linux

2018-08-16 11:30:12

JavaCPU緩存

2019-08-16 14:18:38

CPU故障

2009-02-16 18:08:01

linux硬件信息cpu

2019-08-19 08:01:50

Flink數據管理內存

2023-10-17 00:01:34

Linux操作系統

2020-08-11 09:41:27

CPU硬盤操作系統

2021-09-14 10:21:13

CPU高性能服務器

2021-08-13 07:56:13

CPU寄存器數據

2017-05-08 14:29:11

vCSA6.5CPU內存
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 天天操网 | 欧洲精品视频一区 | 亚洲欧洲综合av | 国产精品亚洲成在人线 | 日本不卡一区二区三区 | 最近日韩中文字幕 | 国产精品久久久久久久一区探花 | a级网站| 99精品视频免费观看 | 国产一区精品 | 成人在线免费电影 | 中文字幕视频在线看5 | 日本免费一区二区三区四区 | 在线 丝袜 欧美 日韩 制服 | 午夜免费av| 久久久久久国产 | 免费看国产片在线观看 | 亚洲福利网 | 福利社午夜影院 | 欧美精品在线播放 | 亚洲三级av | 国产黄色大片在线免费观看 | 久久一起草 | 51ⅴ精品国产91久久久久久 | 久久久久国产精品一区 | 激情网五月天 | 九色国产 | 久久综合国产 | 亚洲久草 | 99精品视频一区二区三区 | 在线观看亚洲 | 精精国产xxxx视频在线播放7 | 日韩精品一区二区三区中文在线 | 欧美一区二区三区在线看 | 亚洲v区| 日韩在线视频播放 | 中文字幕在线播放不卡 | 亚洲欧美一区二区三区视频 | 天堂成人国产精品一区 | 天天色综网 | 大学生a级毛片免费视频 |