2015-06-01 26 views
0

我在讀這在page是:爲什麼我們在linux中有內存區域?

由於硬件限制的,內核不能把所有頁面的相同。由於其內存中的物理地址,某些頁面不能用於某些任務。由於這個限制,內核將頁面分成不同的區域。

我在想那些硬件限制。有人可以解釋我的硬件限制,並舉例說明。還有,intel是否有任何軟件指南解釋這一點?

此外,我讀了虛擬內存分爲1GB內核空間和3GB用戶空間兩部分。爲什麼我們在所有進程的虛擬空間中向內核提供1GB空間?它如何映射到實際的物理頁面?有人可以請我指出一個乾淨的文字解釋這一點?

在此先感謝。

回答

1

硬件限制主要涉及到舊有的設計。例如,您有ZONE_DMA,它是從0 - 16MB。這是例如需要舊的ISA設備,這些設備無法滿足16MB以上的限制。然後你有ZONE_NORMAL,其中大部分內核操作發生並永久地被加入內核地址空間。

1GB3GB拆分很簡單。你在這裏有虛擬地址,所以對於你的應用程序來說,內存地址總是從0x00000000開始,保留的是內核東西的第一個GB。爲什麼這麼做很簡單:你有內核模式和用戶模式。在內核模式下,您可以使用系統調用。如果你沒有將內核內存映射到你的虛擬地址空間,你將不得不做一次上下文切換來將你陷入內核模式(上下文切換:將當前上下文保存到內存,從內存中加載另一個上下文 - >耗時)。但是,由於內核模式操作可以在相同的虛擬地址空間中進行,因此您不需要切換上下文,例如分配新內存或執行任何其他系統調用。

+0

你能不能給我參考了「但作爲內核模式的操作可以在相同的虛擬尋址空間發生,你不需要切換的情況下,例如,分配新的內存或做任何其他系統調用「。謝謝你的回答。 –

+1

呃......我從我的操作系統教授那裏瞭解到大學。我猜源是他的介紹:P – Nidhoegger

1

你對在用戶空間1GB內核映射處理器

內核映射當然時間通過不具有開關節能的第二個問題。 1 GB用於內核功能,因此如果內核爲其功能映射新內存,則內核可以執行此操作。任何一本書在Unix上可以給你詳細介紹

相關問題