自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

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

運(yùn)維 系統(tǒng)運(yùn)維
內(nèi)存管理是一個(gè)復(fù)雜的模塊,它涉及到硬件的交互和復(fù)雜的軟件算法。本片文章我們就來講解下硬件原理和分頁管理。

在之前的《Linux內(nèi)存管理》文章中,我們大致講解了Linux內(nèi)存管理的體系架構(gòu)和映射過程。當(dāng)然內(nèi)存管理是一個(gè)復(fù)雜的模塊。它涉及到硬件的交互和復(fù)雜的軟件算法。本片文章我們就來講解下硬件原理和分頁管理。

CPU如果訪問內(nèi)存?

答案很簡單,通過內(nèi)存管理單元(MMU),我們先看一張很簡單的CPU訪問內(nèi)存的流程圖:

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

TLB:轉(zhuǎn)換lookaside 緩存,有了它可以讓虛擬地址到物理地址轉(zhuǎn)換速度大增。

從上圖中我們可以清楚的知道了,CPU,DDR,MMU它們?nèi)咧g的關(guān)系。CPU在MMU開啟的情況下,訪問的都是虛擬地址。首先通過MMU將虛擬地址轉(zhuǎn)換為物理地址,然后再通過總線上去訪問內(nèi)存(我們都知道內(nèi)存是掛在總線上的)。

那MMU是怎么將虛擬地址轉(zhuǎn)換為物理地址呢?當(dāng)然之前的文章也講過了,是通過頁表的方式。MMU從頁表中查出虛擬地址對應(yīng)的物理地址是什么,然后就去訪問物理內(nèi)存了。

所以搞懂了上面的問題,也就解決了標(biāo)題的問題:《CPU如何訪問內(nèi)存的?》

頁表是什么?頁表就是一種特殊的數(shù)據(jù)結(jié)構(gòu),它保存的是邏輯頁和物理頁幀的映射關(guān)系,而且每一個(gè)進(jìn)程都各自擁有自己的頁表。

虛擬地址在我們看來是一個(gè)整體,其實(shí)不然,它是可以拆分的??梢苑譃椋?/p>

  • p(頁號),它可以存儲(chǔ)頁表的索引;
  • d(偏移),可以在頁內(nèi)進(jìn)行地址偏移

我們假設(shè)頁大小為4KB,而且頁表只有一級,也就是一級頁表。那虛擬地址的拆分后的樣子是這樣的:

下面我們來看下CPU,虛擬地址,頁表和物理地址之間的關(guān)系??聪聢D:

很簡單的吧,應(yīng)該看懂了吧。我們可以發(fā)現(xiàn)如果采用一級頁表的話,每個(gè)進(jìn)程需要維護(hù)一個(gè)4MB大小的頁表(我們可以算下,如果是32位平臺,地址空間大小為4GB,頁面大小為4KB,每個(gè)頁表項(xiàng)占用4字節(jié),所以4GB/4KB*4=4MB)。

因?yàn)槊總€(gè)進(jìn)程都有自己的頁表,所以在多進(jìn)程的情況下,內(nèi)存消耗簡直驚人。所以一級頁表是不合理的。那有沒有優(yōu)化的辦法呢?答案是有的,就是利用多級頁表,可以節(jié)省內(nèi)存。

二級頁表就是將頁表再次分頁。再次舉例,將邏輯地址分為10位頁碼p1+10位頁碼p2+12位頁偏移。我們直接看圖吧。

訪問過程如下圖:

責(zé)任編輯:趙寧寧 來源: 今日頭條
相關(guān)推薦

2018-12-06 12:58:50

CPU內(nèi)存模塊

2021-05-10 08:20:32

CPU 符號整數(shù)

2020-07-28 08:10:33

Linux內(nèi)存虛擬

2024-09-09 09:41:03

內(nèi)存溢出golang開發(fā)者

2019-10-16 00:06:08

CPU內(nèi)存存儲(chǔ)

2021-07-28 07:53:20

CPU 線程切換

2021-04-08 09:32:17

鴻蒙HarmonyOS應(yīng)用

2019-02-28 14:04:28

內(nèi)存固定分配存儲(chǔ)

2023-03-05 22:30:25

JavaCPU

2020-11-10 08:41:51

CPU執(zhí)行任務(wù)內(nèi)存

2021-11-10 09:15:00

CPU01 二進(jìn)制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數(shù)據(jù)管理內(nèi)存

2023-10-17 00:01:34

Linux操作系統(tǒng)

2020-08-11 09:41:27

CPU硬盤操作系統(tǒng)

2021-09-14 10:21:13

CPU高性能服務(wù)器

2021-08-13 07:56:13

CPU寄存器數(shù)據(jù)

2017-05-08 14:29:11

vCSA6.5CPU內(nèi)存
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號