←講義のツボメニューへ
←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ノードもファイルも無くなる
×ファイルまでたどり着くのに、オーバーヘッドが必要
ブロックサイズ
大きな単位で格納すると、無駄なディスクが増える
小さな単位で格納すると、読み書きが遅くなる
→ディスクの読み書き時間の大半は、シークと回転待ち