[[PageNavi(internal22-navi)]]
{{{ comment
h2w-title:カーネルロック関数の動作詳細
}}}
= カーネルロック関数の動作詳細 = #SECTION06470000000000000000
* kernel_flag
* Linuxカーネルのロックのためのフラグ
* task_struct中のメンバlock_depth
* Linuxカーネルロックのネスト数
* lock_kernel()関数
* システムコール、ページフォルト処理の開始前にカーネル資源をロックする。
{{{
if(current->lock_depth++ >= 0) spin_lock(&kernel_flag);
}}}
* unlock_kernel()関数
* システムコール、ページフォルト処理の終了時にカーネル資源のロックを 解除する。
{{{
if(--current->lock_depth <= 0) spin_unlock(&kernel_flag);
}}}
* release_kernel_lock()関数
* スケジューラを呼び出しCPUを放棄する時に、 一時的にカーネルロックを解除する。
{{{
if(current->lock_depth >= 0) spin_unlock(&kernel_flag);
}}}
* reacquire_kernel_lock()関数
* 再スケジューリング後、再びカーネルロックを行い、システムコール 処理、ページフォルト処理を継続する。
{{{
if(current->lock_depth >= 0) spin_lock(&kernel_flag);
}}}
----
''(NIS)HirokazuTakahashi [[BR]]2000年06月11日 (日) 22時29分57秒 JST''1
[[PageNavi(internal22-navi)]]