←OS論シラバスへ
←講義のツボメニューへ

ファイル

【2001.11.19,11.23】【第15、16回】

 ファイル・システム

 情報をディスクへ記憶し、あとでそれを読み出す方法を提供する
 ファイル抽象化
 情報がどのように記憶され、ディスクが実際にどう動くかは、ユーザから見えないように隠蔽する

 ファイル名

 命令規則は、OSによって異なる。
 大文字、小文字を区別する(UNIX)/区別しない(MS−DOS)

 ファイル拡張子(file extention)  prog.c "."以下の部分(例として pl, ps, c, など)

 MS−DOS:ファイル名に1〜8文字、拡張子に1から3文字
 UNIX  :文字数は任意
             2つ以上の拡張子も可能(例 prog.c.z)
 ファイル拡張子を、慣用として命令法を強制しない場合(例 file.txt)
 特定のファイル拡張子を要求する場合
(例 file.c Cコンパイラからの要求)

   ファイルの型

 通常ファイル(regular file)
 ディレクトリ(directory)
      ファイル・システムの構造を維持するためのファイル
 文字型特殊ファイル(charactor special file)
 ブロック型特殊ファイル(block special file)
   通常ファイル

 ASCIIファイル・・・テキスト行からなる
      行ごとに
      キャリッジ・リターン(復帰改行)文字
      ライン・フィード(行送り)文字
      で終了することがある。(まれに両方必要な場合もある)

 バイナリ・ファイル
  非テキスト。通常、何らかの内部構造をもつ。

   ファイルのアクセス

   逐次アクセス(sequential access)
  最初から順にしか、読み書きできない
  初期のOSは、これしかなかった
  テープ装置を想定したread/write
 ランダムアクセス(random access)
  どんな順序でも読み書きできる
  ディスクを想定したread/write

 読み取り開始位置の指定方法
  −READ操作ごとに位置を指定する
  −SEEK操作で位置を動かした後、逐次的に読み書きする

 ディレクトリの操作

 ・CREATE・・・.(現在いるフォルダ)と..(一つ上の階層のフォルダ)は自動的に作られる
 ・DELETE・・・(.と..を除き)空のディレクトリを消去
 ・OPENDIR・・・ディレクトリ内のすべてのファイル情報を取る
 ・CLOSEDIR
 ・READEIR・・・ディレクトリ中のエントリを読む
 ・RENAME
 ・LINK・・・一つの同じフォルダを別のディレクトリにあるように見せる
 ・UNLINK

 iノード

  ファイルごとにiノードという小さな表を用意する
  ・小さなファイルならiノード+データだけで済む
  ・大きなファイルなら、間接ブロックを使う

 シンボリック・リンク(symbolic link)

  ○正しい所有者だけが、iノードを指す
   リンクは、単にパス名を保持するだけ
   所有者が消去する時に、iノードもファイルも無くなる
  ×ファイルまでたどり着くのに、オーバーヘッドが必要

 ブロックサイズ

  大きな単位で格納すると、無駄なディスクが増える
  小さな単位で格納すると、読み書きが遅くなる
    ディスクの読み書き時間の大半は、シークと回転待ち