マエカワの備忘録的な何か

思い立ったが吉日

オペレーティングシステム 其の十二 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ノードに記録しておけば便利
   →このテーブルが大きすぎたら多段テーブルを用いて解決したらいい.