1
我的一個朋友叫Raj,告訴我只有一個內核進程的全局頁表,並且他們沒有使用vm_area_struct
那裏的內存。 vm_area_struct
僅用於跟蹤用戶進程而不是內核進程的內存。是否有內核進程的vm_area_struct指針?
所以我想知道什麼是真實的故事?有人可以闡明vm_area_struct指向用戶或內核的內存嗎?
我的一個朋友叫Raj,告訴我只有一個內核進程的全局頁表,並且他們沒有使用vm_area_struct
那裏的內存。 vm_area_struct
僅用於跟蹤用戶進程而不是內核進程的內存。是否有內核進程的vm_area_struct指針?
所以我想知道什麼是真實的故事?有人可以闡明vm_area_struct指向用戶或內核的內存嗎?
拿起一本關於操作系統的書,如「UNIX內部:新的邊界」。
你確定你不是指mm_struct,這實際上是描述地址空間的東西嗎?
總之,所有內核線程都會看到相同的內存。此外,給定進程的整個內核內存和用戶空間內存都映射在一個巨大的地址空間中。它的權限設置在映射上,防止用戶空間進程對內核頁面進行任何操作。
因此,當內核在任務之間切換時,它也會更改正在使用的mm_struct。但有一個黑客。因爲所有映射都包含整個內核,所以如果新調度的內核線程是內核線程,則不需要切換mm。