2012-01-17 108 views
0

我對用戶空間和內核空間有點困惑。 Linux或內核空間中a.out的4 GB虛擬內存中包含的內核空間是不同的,並且不包含在該4 GB內存空間中。另外,爲操作系統保留的4 GB虛擬內存的一部分包括內核或內核空間。請你糾正我,如果我的所有上述概念是錯誤的a.out內核空間

+0

我最近讀了關於Linux中的內存管理,發現這個博客http://duartes.org/gustavo/blog/post/anatomy-of-a-program-in-memory非常有幫助 – 2012-01-17 14:05:51

+0

我不確定「a。 「與」有什麼關係? – 2012-01-17 16:20:52

回答

2

這一切都取決於操作系統。

大多數操作系統劃分了4GB的空間像2/2或3/1,因爲它可以更容易從用戶模式切換到內核模式,不需要頁表切換時被重新映射。

但是,Linux甚至允許4GB用戶空間和4GB內核空間。但是,正如你可以想象的那樣,每次需要切換到內核模式時都需要重新映射完整的內存,這會產生一些開銷。

雖然它在你的內存空間,OS不允許從用戶模式代碼訪問內核空間。這種訪問控制是可能的,因爲頁表中的特權位。

所有這些都需要從用戶空間到內核實際上是一個int 80h通話。該調用將調用轉移到內核的中斷處理程序,並使內核和用戶空間都可訪問。

+0

+1。但是,自從Pentium Pro發佈以來,Linux也支持PAE,其中內核可以處理高達64千兆字節的內存。 – 2012-01-17 16:20:12

+1

不,PAE內核不直接尋址超過4Gb。它只是管理地圖,以便使用64Gb。 – 2012-01-17 16:29:04

3

32位Linux使用1 GB爲內核,和3 GB的標準存儲模式,爲用戶空間。

這總計爲總的可用4 GB的內存空間,所以「是」,內核空間包括在地址空間。

This article有一些圖表,顯示了分裂。

+0

好的,這意味着是的,內核空間包含在4GB的可尋址虛擬內存中。我爲這個答案+1了,雖然它沒有觸及有關操作系統內存空間問題的部分...... – Romain 2012-01-17 13:57:15