2013-03-29 41 views
0

AFAIK有一個進程內存分區,用於存儲內核相關數據並將其標記爲只讀。Linux進程內存方案

我無法找到事實解釋爲什麼發生這種情況,這個區域的目的是什麼,爲什麼要將它包含在每個進程內存空間中?

enter image description here

+0

做一個'cat/proc/self/maps'並閱讀更多關於它的輸出。 –

回答

2

就像用戶模式的內存空間,內核需要它自己的代碼部分(RX),數據段(R/RW),和堆棧的線程(RW)的幀。

我不會說它需要包含在進程內存空間中,而是說它是內核總是駐留的地方。與進程之間進行上下文切換時所取代的進程內存空間不同,內核空間(32位中的> = 0xC0000000和64位中的> = 0xFFFFFFFF80000000)完全不會被替換。

這是一個必要的要求,因爲系統上只有一個內核,並且它必須始終保持在內存中的同一位置(虛擬),以便處理系統調用,中斷和運行各種內核任務。