2011-02-01 4 views
1

()システムコール http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=fs/exec.c#l177意味()はexecveのソースコード内のシステムコール

は、コードの一部のようにあります:

#ifdef SPLIT_RSS_COUNTING 
    add_mm_counter(mm, MM_ANONPAGES, diff); 
#else 
    spin_lock(&mm->page_table_lock); 
    add_mm_counter(mm, MM_ANONPAGES, diff); 
    spin_unlock(&mm->page_table_lock); 
#endif 

あなたは説明してください可能性がありその意味

答えて

2

SPLIT_RSS_COUNTINGの定義は、ユーザー制御の設定CONFIG_SPLIT_PTLOCK_CPUSが、設定CONFIG_NR_CPUSで定義されたCPUの物理数より大きい場合に定義されます。デリバリーが深すぎないと、カーネルがアカウンティングをロックするために必要なCPUの量をユーザーが制御できることを意味します。この構成は、ARM CPUおよびPARISC CPU固有のように見えます。 が定義されている場合、add_mm_counterは同時アクセスから保護される必要があるため、mm->page_table_lockロックを使用してスピンロックを使用して保護されます。

スピンロックは、複数のCPUを同期させる最も基本的な方法です。スピンロックが入力され、ロックがすでに別のCPUによって保持されている場合、現在のCPUはロックフラグの値をチェックしてループに入ります。フラグ値が非ロックに変わると、現在のCPUはロックを取り、spin_lock機能から戻ります。

関連する問題