Lions本読書会#11
Lions 本読書会開始しました。よろしくお願いします。 ( #readLions live at http://t.co/BwCmOd3v)
2011-09-18 13:08:46参加してます RT @kotrit: Lions 本読書会開始しました。よろしくお願いします。 ( #readLions live at http://t.co/ZABYBwed)
2011-09-18 13:11:06遅れて参戦します。“@magoroku15: 参加してます RT @kotrit: Lions 本読書会開始しました。よろしくお願いします。 ( #readLions live at http://t.co/1cTiGXbC)”
2011-09-18 13:14:47お待ちしてます。 RT @oraccha 遅れて参戦します。“@magoroku15: 参加してます RT @kotrit: Lions 本読書会開始しました。よろしくお願いします。 ( #readLions live at ustre.am/zaFV)”
2011-09-18 13:16:58Ustreamの「Lions' Commentary on UNIX 読書会」にチェックイン! http://t.co/BF0a7HPC
2011-09-18 13:23:01ひさびさに参加っ。ここは安定のWin率ですねw ( #readLions live at http://t.co/BF0a7HPC)
2011-09-18 13:23:56bufferはb-listとav-listの二つのリンクで管理されている。これは前回解説した #readLions
2011-09-18 13:33:17processなど、いろんなものがただの配列で管理されている中、なぜbufferだけリンク構造を持っているのかという疑問。av-listをLRUで管理したいためと推測。詳しくは私の読書メモへ #readLions
2011-09-18 13:35:13getblk( )はb-listから該当ブロックを取ってくる。b-listになければav-listから取ってくる。そのブロックが遅延書き込み状態だったら、このタイミングでデバイスに書き込み処理を行う #readLions
2011-09-18 13:38:41brelese( )はbufferの解放。BUSYフラグをリセットし、av-listに突っ込む #readLions
2011-09-18 13:41:55binit( )はbufferの初期化。起動時にmain( )から一度だけ呼ばれる。buf[ ](buffer header)とbuffers[ ](bufferデータ格納場所)を関連付ける。b-listのヘッダも初期化。 #readLions
2011-09-18 13:44:47bread( )はブロックデバイスからデータを読み込んで、データの入ったbufferを返す。キャッシュが残っていたら(B_DONEフラグが立っていたら)デバイスまで読みにはいかない #readLions
2011-09-18 13:46:41iowait( )はブロックデバイスの処理待ちを行う。終わるまで寝る。 rkstrategy( ) -> iodone( )で、iodone( )から起こされる #readLions
2011-09-18 13:48:29breada( )は通常読み込みと平行して、先行読み込みも平行して実行する。breada( )が呼ばれうるのはreadi( )から。 #readLions
2011-09-18 13:52:41bwrite( )はブロックデバイスへの書き込み。B_ASYNCフラグが立ってたら、デバイスの処理完了を待たない(非同期書き込み) #readLions
2011-09-18 13:55:01bawrite( )は非同期書き込み。B_ASYNCフラグを立ててからbwrite( )を呼ぶだけ #readLions
2011-09-18 13:56:32bdwrite( )は遅延書き込みを行う。B_DELWRIとB_DONEフラグを立ててbrelse( )で解放。実際の書き込みはupdate( )が呼ばれたときか、getblk( )でav-listから割り当てが行われるときに行われる #readLions
2011-09-18 13:57:46bflush( )はbufferのflush. 遅延書き込みで、まだ書き込まれていないやつを書き込む。bflush( )は定期的に実行されるupdate( )から呼ばれる #readLions
2011-09-18 13:59:40