Linux Kernel(2.6)の実装に関するメモ書き

WriteBack処理


Rev.3を表示中。最新版はこちら

1. 概要

プロセスがファイルへの書き込みを行うと、カーネルは通常はページキャッシュ(ディスクキャッシュ)に書き込むだけで一旦処理を完了する(ディスクヘの書き込みは行わない)。このデータが書き込まれたページキャッシュは、ディスク上のデータと内容が不一致になっていることを示すためDirty状態になる。Dirty状態のページキャッシュはカーネルスレッドpdflushによって、遅延してディスクに書き込まれる。この処理をWriteBack処理と呼ぶ。

2. WriteBack処理の動作

2.1 WriteBack処理の起動

WriteBack処理はカーネルスレッドpdflushによって実行される。カーネルスレッドpdflushを起動するには、wakeup_pdflush()、balance_dirty_pages_ratelimited()が使われる(図1)。

wakeup_pdflush()はtry_to_free_pages()でメモリを解放しようとする際に、Dirtyページを書き出して解放可能なメモリを増やそうとして呼ばれる。

balance_dirty_pages_ratelimitd()は



図1 pdlushの起動

2.2 WriteBack処理




図2 WriteBack処理の流れ




図3 do_writepages()


関連ページ


最終更新 2007/10/05 16:31:20 - kztomita
(2007/10/05 16:21:32 作成)
添付ファイル
invoke_pdflush.png - kztomita
writeback.png - kztomita
do_writepages.png - kztomita


リンク
最近更新したページ
検索