[英]How does kernel know about physical pages are shared by two different processes?
我們知道頁表用於從虛擬內存頁面地址獲取物理內存頁面地址。 但是,內核如何知道物理內存頁是否由不同的進程共享(例如在分叉進程及其父進程的情況下)。 這樣的名單在哪里保存?
內核是創建所有虛擬映射的實體。 所以它確切地知道什么是共享的,什么不是。 沒有內核的幫助,用戶空間進程無法創建共享映射。
當進程請求fork時,內核還負責復制映射。 它具有所需的所有信息。
頁面具有的映射數保存在表示該頁面的struct page
結構的字段中。 每次創建新映射時它都會遞增,而映射消失時會遞減。
如果您想深入了解這一點,可以訪問Linux-MM 。 特別是,在文檔部分閱讀Mel Gorman的了解Linux虛擬內存管理器一書(非常技術性)鏈接(免費提供的PDF)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.