2012-10-19 44 views
1

在內核的研究,我有兩個問題的過程:內核哎呀消息 - 地址

1)我想知道,如果顯示在內核地址哎呀消息是虛擬的還是物理? (我認爲這些應該是虛擬的,只要CPU操作虛擬地址空間和MMU重新映射?)

2)我的平臺是基於ARM的,它支持MMU,但是當我查找地址時,內核模塊加載,我看到:

# cat /sys/module/mydrv/sections/.data 
0xbf00b4f4 
# cat /sys/module/mydrv/sections/.text 
0xbf006000 

不宜這些地址是像0xffffffffa0110000,0xffffffffa011b948?我的意思是根據我的理解,虛擬內存地址應該更大,從而提供更大的虛擬地址空間?再次我是新手,當然不完全理解VM和MMU :)

感謝您的意見,謝謝。

馬克

回答

2

1)我想知道,如果顯示在內核地址哎呀消息是虛擬的還是物理? (我認爲這些應該是虛擬的,只要CPU與虛擬地址空間中運行,並不會MMU重新映射?)

中顯示的地址OOPS /恐慌堆棧跟蹤都是虛擬

2)如果沒有這些地址是像0xffffffffa0110000,0xffffffffa011b948?我的意思是根據我的理解,虛擬內存地址應該更大,從而提供更大的虛擬地址空間?再次,我是新手,當然不完全理解虛擬機和MMU :)

不,你應該只看到32位地址,除非你使用新的64位armv8架構:-)所以答案是取決於您正在使用的架構以及您是否使用3G/1G與2G/2G內核拆分。 [大多數linux機器被配置爲使內核佔用4G地址空間的上1G(0xc0000000-0xffffffff),並且進程使用較低的3G(0x00000000-0xbfffffff)。但是,某些機器配置爲2G/2G分割,內核佔用上方的2G(0x80000000 - 0xffffffff),並使用較低的2G(0x00000000 - 0x7fffffff)進行處理。我認爲內核配置VMSPLIT_3G/VMSPLIT_2G設置此]。

+0

Band,,非常感謝。內核啓用了CONFIG_VMSPLIT_3G,即1G用於內核內存空間,3G用於用戶內存空間 - 就像您所描述的那樣。不過,我不明白爲什麼內核模塊加載用戶空間地址(看看我原來的消息/ sys/module/mydrv/sections/output)。 – Mark

+0

我不確定。我希望你已經啓用了2G分裂,這將解釋爲什麼你看到內核模塊地址低於0xc0000000 – Bandicoot

相關問題