/proc/iomem-創(chuàng)新互聯(lián)

前言

引用:《內(nèi)核珠璣:/proc/iomem的作用》

創(chuàng)新互聯(lián)建站主營凌河網(wǎng)站建設的網(wǎng)絡公司,主營網(wǎng)站建設方案,app開發(fā)定制,凌河h5成都小程序開發(fā)搭建,凌河網(wǎng)站營銷推廣歡迎凌河等地區(qū)企業(yè)咨詢

“大師,今天天氣真好,公園里的花也紅了,樹也綠了?!?br />“人也多?!?br />“大師,咱們畢竟是第一次來,先去看看導覽圖吧?”
“路過個街心公園要什么導覽圖?”
“好吧。。其實人家想去廁所?!?br />“先忍一會,既然你提到導覽圖,為師就考考你,知道 /proc/iomem 的作用么?”
“知道,/proc/iomem 提供了系統(tǒng)的物理布局概覽?!?br />“這個概覽有什么用呢?”
“當然有用,/proc/iomem 提示了系統(tǒng)中設備的物理布局,比如網(wǎng)卡占據(jù)了總線的物理地址 0x1000 - 0x2000,就需要通過申請資源來表明這塊物理地址區(qū)間是網(wǎng)卡使用,如果想要與網(wǎng)卡交互,就要來訪問這塊地址哦。”
“覺不覺得很像公園導覽圖的作用?”
“的確,所以 /proc/iomem 很有用啦。”
“那么你想想看,如果沒有它,會出什么問題呢?”
“那我就找不到廁所在哪里了。?!?br />“再想想?”
“唔。。甚至我會走錯地方,本來想去廁所,結(jié)果闖進了冷飲店。。”
“再想想呢?!?br />“大師,我想到了更可怕的事,我不敢說。”
“無妨?!?br />“誤入女廁所。?!?br />“不錯,那么 iomem 下面提供了哪些有用信息呢?!?br />“剛才我就說了,提示了設備占用的物理地址。”
“還有呢?”
“還有 System RAM,這表明對應的是 DDR 物理內(nèi)存?!?br />“System RAM 下面還有什么呢?”
“系統(tǒng)會使用其中一部分自用,放置 text,data 和 bss,所以這些部分會作為 System RAM 的子節(jié)點存在,提示這些物理內(nèi)存已經(jīng)被使用了?!?br />“還算不錯,所以 iomem 中的信息必須準確,如果不小心寫錯,或者被惡意篡改,后果會很嚴重?!?br />“是啊,搞不好就誤入女廁所了?!?br />“甚至還可能走進冷飲店,但買到的卻是坨坨。”
“大師,別說冷飲了,我。?!?br />“快去快去,看你表現(xiàn)不錯,為師買 2 個甜筒等你。”
“( ?? ω ?? )y”

地址空間

有必要解釋“地址空間(address space)”這一概念:地址空間就是能看到得存儲器范圍。地址空間的大小不由具體存儲器的容量決定,而是指 CPU 或其它控制器能訪問到的存儲單元的范圍,由電路的“位”來決定。例如 32 位的 CPU 的地址空間(不論虛擬的地址空間還是物理的地址空間)通常情況下就是 0~4G(2^32),即使內(nèi)存只有 1G。如果為 32 位 CPU 配上 8G 的內(nèi)存條,超出了地址空間的 4G 存儲單元就無法被 CPU 直接訪問。

虛擬內(nèi)存地址空間:
64 位系統(tǒng)的地址空間,不是 2^32,也不是 2^64,而一般是 2^48。
物理內(nèi)存地址空間:
64 位系統(tǒng)的地址空間,一般有 2^40 ,2^46 ,2^48 幾種情況

實例 1,Ubuntu 20.04 虛擬機
48 bits physical, 48 bits virtual

$ cat /proc/cpuinfo 
processor	: 0
vendor_id	: AuthenticAMD
cpu family	: 23
model		: 96
model name	: AMD Ryzen 7 4800H with Radeon Graphics
stepping	: 1
microcode	: 0x6000626
cpu MHz		: 2894.558
cache size	: 512 KB
physical id	: 0
siblings	: 4
core id		: 0
cpu cores	: 4
apicid		: 0
initial apicid	: 0
fpu		: yes
fpu_exception	: yes
cpuid level	: 16
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt rdtscp lm constant_tsc rep_good nopl nonstop_tsc cpuid extd_apicid tsc_known_freq pni pclmulqdq ssse3 cx16 sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx rdrand hypervisor lahf_lm cmp_legacy cr8_legacy abm sse4a misalignsse 3dnowprefetch ssbd vmmcall fsgsbase avx2 rdseed clflushopt arat
bugs		: fxsave_leak sysret_ss_attrs null_seg spectre_v1 spectre_v2 spec_store_bypass retbleed
bogomips	: 5789.11
TLB size	: 3072 4K pages
clflush size	: 64
cache_alignment	: 64
address sizes	: 48 bits physical, 48 bits virtual
power management:

實例 2,CentOS 7.5.1804 云服務器
46 bits physical, 48 bits virtual

# cat /proc/cpuinfo 
processor	: 0
vendor_id	: GenuineIntel
cpu family	: 6
model		: 94
model name	: Intel(R) Xeon(R) Gold 6133 CPU @ 2.50GHz
stepping	: 3
microcode	: 0x1
cpu MHz		: 2499.998
cache size	: 28160 KB
physical id	: 0
siblings	: 2
core id		: 0
cpu cores	: 2
apicid		: 0
initial apicid	: 0
fpu		: yes
fpu_exception	: yes
cpuid level	: 13
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl eagerfpu pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid_single fsgsbase bmi1 hle avx2 smep bmi2 erms invpcid rtm mpx rdseed adx smap clflushopt xsaveopt xsavec xgetbv1 arat
bogomips	: 4999.99
clflush size	: 64
cache_alignment	: 64
address sizes	: 46 bits physical, 48 bits virtual
power management:

processor	: 1
vendor_id	: GenuineIntel
cpu family	: 6
model		: 94
model name	: Intel(R) Xeon(R) Gold 6133 CPU @ 2.50GHz
stepping	: 3
microcode	: 0x1
cpu MHz		: 2499.998
cache size	: 28160 KB
physical id	: 0
siblings	: 2
core id		: 1
cpu cores	: 2
apicid		: 1
initial apicid	: 1
fpu		: yes
fpu_exception	: yes
cpuid level	: 13
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl eagerfpu pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid_single fsgsbase bmi1 hle avx2 smep bmi2 erms invpcid rtm mpx rdseed adx smap clflushopt xsaveopt xsavec xgetbv1 arat
bogomips	: 4999.99
clflush size	: 64
cache_alignment	: 64
address sizes	: 46 bits physical, 48 bits virtual
power management:

為什么不用 2^64 大小呢?因為在可預見的時間內(nèi),都用不到大那么大的空間。

/proc/iomem

環(huán)境:Ubuntu 20.04 虛擬機,內(nèi)存 14G

$ sudo cat /proc/iomem
00000000-00000fff : Reserved
00001000-0009fbff : System RAM
0009fc00-0009ffff : Reserved
000a0000-000bffff : PCI Bus 0000:00
000c0000-000c7fff : Video ROM
000e2000-000e2fff : Adapter ROM
000f0000-000fffff : Reserved
  000f0000-000fffff : System ROM
00100000-dffeffff : System RAM
dfff0000-dfffffff : ACPI Tables
e0000000-fdffffff : PCI Bus 0000:00
  e0000000-e3ffffff : 0000:00:02.0
    e0000000-e3ffffff : vmwgfx probe
  f0000000-f01fffff : 0000:00:02.0
    f0000000-f01fffff : vmwgfx probe
  f0200000-f021ffff : 0000:00:03.0
    f0200000-f021ffff : my_pci_driver
  f0400000-f07fffff : 0000:00:04.0
    f0400000-f07fffff : vboxguest
  f0800000-f0803fff : 0000:00:04.0
  f0810000-f081ffff : 0000:00:0c.0
    f0810000-f081ffff : xhci-hcd
  f0820000-f0821fff : 0000:00:0d.0
    f0820000-f0821fff : ahci
fec00000-fec00fff : Reserved
  fec00000-fec003ff : IOAPIC 0
fee00000-fee00fff : Local APIC
  fee00000-fee00fff : Reserved
fffc0000-ffffffff : Reserved
100000000-38cafffff : System RAM
  20ee00000-20fe025c7 : Kernel code
  210000000-210a87fff : Kernel rodata
  210c00000-2110455ff : Kernel data
  211393000-2119fffff : Kernel bss
38cb00000-38fffffff : RAM buffer

這個列表把物理地址空間的分布暴露得一絲不掛。
System RAM 代表 DDR 物理內(nèi)存,內(nèi)存條。
從中可以窺探如下幾點信息:

  • DDR 物理內(nèi)存,在物理地址空間上,并不是連續(xù)分布的
  • DDR 物理內(nèi)存,不一定位于物理地址空間的開頭
  • 物理地址空間,除了 DDR 物理內(nèi)存,還存在其它如 PCI Bus、System ROM 這些 I/O 內(nèi)存區(qū)域

你是否還在尋找穩(wěn)定的海外服務器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調(diào)度確保服務器高可用性,企業(yè)級服務器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧

分享標題:/proc/iomem-創(chuàng)新互聯(lián)
網(wǎng)頁地址:http://muchs.cn/article22/cdojjc.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營銷推廣、網(wǎng)站設計公司App設計、ChatGPT虛擬主機、移動網(wǎng)站建設

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設