天天看點

linux程序位址空間mm_struct結構體中mm_user和mm_count的疑問

在mm_struct結構體中有兩個用來技術的成員變量,mm_user和mm_count,它們代表不同的層次。

mm_user主要用來記錄共用此命名空間的線程數量,在linux建立線程時,會有如下操作,代碼中僅僅更新了mm_user的值,并使子程序和父程序共享mm_struct結構體(如果不是建立線程,則子程序會重新申請mm_struct結構體)

atomic_inc(&curent->mm->mm_users);

tsk->mm=current->mm;

mm_count則主要記錄對此mm_struct結構體的引用情況,比如在核心線程排程進來的時候,它會借用上一個程序的位址空間(雖然它不會對該位址空間操作),此時mm_count就會增加1。從另一個層面來了解的話,可以了解為mm_count是以程序為機關的,而mm_users則是以線程為機關的。

參考: http://blog.csdn.net/green_shine/article/details/7398902 

http://bbs.chinaunix.net/thread-1991118-1-1.html 

繼續閱讀