V7リターンず を視聴したメモです。
・ディスクの空き領域管理は最初リストだったがBSDでビットマップに。
・UNIXではファイルを最初に作る時点で領域を確保しないという思想であり、その時点ではサイズが分からないのでどこに割り当てるのがベストか分からないので仮に割り当てる。実際に書き出すのは少し後なのでその時点でサイズを見てremap機能により連続領域をなるべくとるように後に改良された。
・ファイルシステムは、数(ファイル名文字数等?)の拡大と、長期間使用してフラグメント化が進み速度低下することへの対策がずっととられていく。当初のファイルシステムは速度低下が激しく、バックアップ→newfs→リストアが必要だった。
・BSDのinodeには、初期UNIXからの機能がi_commonに残る。inodeがさす対象がfileだけでなくsocketにも拡大。
・nameiは元は線形サーチでnameが一致したらinodeを返すだけだったが、名前が可変長になり実装が複雑化。可変長は、inode+長さ+名前の文字列で表現。
・BSDではアクセス速度を上げるためシリンダーグループ内にできるだけ1つのファイルを割り当てる。
・V7のファイルシステムとMINIXFS、BSDとext2は近い感じ。
・ディレクトリは自分と親ディレクトリ2つからリンクされてるのでディスクに2度書かれる。片方だけ書いた時に落ちると矛盾が発生する脆弱性あり。そのため初期UNIXではboot時に必ずfsckをかけていた。
・ジャーナルとはディスク処理のトランザクションの記録。上記脆弱性への対策。ext3から。データは失われてもファイルシステムに矛盾は起きない。
・アプリは1バイトで読み書きしたいがディスクIOは512バイト単位。結局一旦は512バイト読むしかなくバッファに入る。そこが変化しなければclean、変化すればdirty、ファイルが削除されればn。それらの状態管理をする。
・ディスクの空き領域管理は最初リストだったがBSDでビットマップに。
・UNIXではファイルを最初に作る時点で領域を確保しないという思想であり、その時点ではサイズが分からないのでどこに割り当てるのがベストか分からないので仮に割り当てる。実際に書き出すのは少し後なのでその時点でサイズを見てremap機能により連続領域をなるべくとるように後に改良された。
・ファイルシステムは、数(ファイル名文字数等?)の拡大と、長期間使用してフラグメント化が進み速度低下することへの対策がずっととられていく。当初のファイルシステムは速度低下が激しく、バックアップ→newfs→リストアが必要だった。
・BSDのinodeには、初期UNIXからの機能がi_commonに残る。inodeがさす対象がfileだけでなくsocketにも拡大。
・nameiは元は線形サーチでnameが一致したらinodeを返すだけだったが、名前が可変長になり実装が複雑化。可変長は、inode+長さ+名前の文字列で表現。
・BSDではアクセス速度を上げるためシリンダーグループ内にできるだけ1つのファイルを割り当てる。
・V7のファイルシステムとMINIXFS、BSDとext2は近い感じ。
・ディレクトリは自分と親ディレクトリ2つからリンクされてるのでディスクに2度書かれる。片方だけ書いた時に落ちると矛盾が発生する脆弱性あり。そのため初期UNIXではboot時に必ずfsckをかけていた。
・ジャーナルとはディスク処理のトランザクションの記録。上記脆弱性への対策。ext3から。データは失われてもファイルシステムに矛盾は起きない。
・アプリは1バイトで読み書きしたいがディスクIOは512バイト単位。結局一旦は512バイト読むしかなくバッファに入る。そこが変化しなければclean、変化すればdirty、ファイルが削除されればn。それらの状態管理をする。