オペレーティングシステム 其の十二 20170712
ファイルシステム
2次記憶:データをためておくための装置
メモリ→小容量高速
2次記憶→大容量低速
トレードオフの関係になっている
ハードディスクの仕組み
区画がそれぞれ分かれていて読み書きができる
→1区画512B~4KBくらいの大きさ(現在の技術力で区画をこれ以上小さくできないため、この容量になっている)
例)1TBのハードディスクにブロックサイズ512Bのブロックは何個あるか
2^40/512=2^31=2GB
ファイルシステム
ファイルとはそもそも、システムが扱うデータの一塊のこと
ファイルシステムはファイルの中身はせず気にせず、単なるデータ列として扱っていく.
OSも実行可能ファイル→ファイルシステムにお世話になっている
ファイルの操作はシステムコールを介して行う
ディレクトリ
基本構造はファイルと同じ、というかファイル名が記憶されたファイルという考え方.
ファイル管理情報
ls -alでファイルの管理情報を見ることができる.
先頭にrwxとかが書いてあるが、これを数字で表すこともできる.
例)rwxr-xr-x→755
644→rw-r--r--
こんな感じ.
ここからが本題のファイルシステム
ファイルの形にするには、メタデータ(iノード)を利用する.
→メタデータとはファイル管理情報とかブロック番号とか
iノードには
・iノード番号
→ファイルのユニークID
→ファイルの真の名前
・データの実態を探すための情報
→論理ブロックアドレスなど
・保護情報、所有者など
が含まれている.
ボリュームの区分け
ボリュームとは記憶メディアのこと
大きく区分けされていて、iノードを格納する区画やデータを格納する区画が分かれている.
ファイルサイズが大きすぎるとき、ブロックをまたぐ可能性がある.
→どのような方式を用いて解決しようか??
連続方式→先頭から連続にブロックを割り当てる
→mallocの時と同じように断片化などの問題が出てくる.
→拡張しようとしたときに隣と干渉してしまう可能性がある.
連結リスト
とびとびのファイルのデータをリストでつなげていくことで、断片化や拡張時の問題を解消することができる.
→もちっと改良して、このデータのインデックスを連結したテーブルをiノードに記録しておけば便利.
→このテーブルが大きすぎたら多段テーブルを用いて解決したらいい.