Upload
others
View
0
Download
0
Embed Size (px)
Citation preview
3 ファイルシステム
1
ファイルの概念
ファイルとは? 情報を格納する論理的単位
プログラム: ソースプログラム,オブジェクト形式,実行形式 データ
ファイルの定義 OSが規定する. OSによって異なる. (例) UNIX: バイト列(単純)
ファイルの型 ファイルの型は作成者によって定義される. 型の例
プログラム:ソース(原始),オブジェクト,実行形式 その他: テキスト
2
ファイルへのサポート ーOSがどこまでサポート(支援)すべきか?(1/2)ー
1)細かく支援する. 利点
サポートされた型については,ユーザにとって便利 (例) ソースプログラムを修正して実行する場合 実行形式プログラムを実行させるだけでよい.
– OSが,対応するソースプログラムを見つけて,コンパイル,リンクを自動的に行う.
欠点 OSがサポートしていない型については,ユーザが不便 (例) OSがサポートする型: テキストファイル,実行形式 ユーザ: テキストファイルを暗号化したファイルを作る. (暗号ファイル: ランダムなビット列) ↓
適当な型がない.
3
ファイルへのサポート ーOSがどこまでサポート(支援)すべきか?(2/2)ー
2)大まかに支援する.
利点
融通性がある.(型の定義がユーザレベルでできる.)
欠点
面倒くさい
定義するプログラムを書かなければならない.
4
テープを基盤としたシステム
準備中
5
図3.1 ファイルシステムにおけるファイルの大きさ(準備中)
ディスクを基盤としたシステム
構造 トラックは,複数のセクタからなる.
セクタ: ハードウェアの読み書きの最小単位
6
トラック
シリンダ
読書きヘッド
セクタ
腕(アーム)
回転
図3.2 移動ヘッドディスク機構
例 セクタ:32B~4KB トラック:4~32セクタ 面:75~500トラック
セクタへのアクセス
3つの要素で規定 (トラック(シリンダ),面,セクタ)
OSの管理単位
ディスクブロック (トラック(シリンダ),面,セクタ)を1次元管理
ブロック番号の付け方(右図)
7
②
ディスク装置の利点 1)ブロック単位での再書込み可能 2)ヘッドの移動が(テープよりも)速い.
①
③
ブロック化
情報の管理単位
ハードウェア (物理)ブロック,物理レコード(=セクタ)
ソフトウェア(OS) 論理レコード: ファイルを構成する最小単位
大きさ
通常,物理ブロック≧論理レコード
1つの論理レコード → 1つの物理ブロックに格納
パック(pack),アンパック(unpack)
パッキング: 複数の論理レコードを1つにまとめる(物理ブロックの大きさに)
アンパッキング: 上記と逆
メモリ → ディスクへの格納:パッキング
ディスク → メモリへのロード: アンパッキング
8
ファイルの支援機能(1/2) ファイルの操作
生成
書き出し
読み込み
巻き戻し
削除
上記の操作は,システムコール
OSは,何をやらなければならないか?
生成
ディスクの中に生成のための領域を確保
ファイル情報を追加(ディレクトリへ)
書き出し
システムコールを用いる. 引数:ファイル名,書き出す内容
OSは,下記を行う. ファイル名から,そのファイルが実際にどこにあるかを調べる(ディレクトリを用いる)
ファイルの終端ポインタの変更
9
ファイルの支援機能(2/2) 読み込み
システムコールの引数:ファイル名,読出し先(メモリ上)
ポインタ移動
読込み用ポインタ,書き出し用ポインタ
↓
1つのポインタで代用(current file position pointer : 現在ファイル位置)
巻き戻し
ポインタをファイルの先頭へ移動
削除
ファイル領域の解放
ディレクトリ項目(エントリ)の解放
操作の分類
以下の2種類を分離
1)操作開始,終了(今からファイルを使用/終了)
2)実際の操作(読書き,巻き戻し)
ファイルのオープン(ファイルを開く)
今からファイルを使用ディレクトリエントリのキャッシング
ファイルのクローズ(ファイルを閉じる)
ファイル使用の終了
オープン,クローズを明示的に行わないOSもある.
10
装置ディレクトリ
情報の種類(OSによって異なる)
ファイル名
ファイルの型
ファイルの物理的位置
大きさ
現在の参照位置
保護: 読み込み,書き出し,実行
現在使用しているプロセス数
時刻,日付,プロセス識別子:聖性,最新の更新,
最新の使用
11
割当技法
ディスクの空き領域をどのように管理するか?(空き
領域管理)
ファイルをどのようにディスクへ格納するか?
割当て技法の種類
連続(continuous)割当て
鎖状(linked)割当て
索引付き(indexed)割当て
12
空き領域管理(1/2)
空き領域リスト(空き領域を集めたrスト)で管理
実現方法
1)ビットマップで管理
1ビットを1ブロックの空き/使用情報に使う.
例
ディスク:8ブロックで構成
0:空き,1:使用中
例:
ブロック1,2,5,6,7:使用中
ブロック0,3,4:空き
とすると,ビットマップは,下記となる.
ビットマップ:01100111
13
空き領域管理(2/2)
2)リンクされたリストで管理
問題点
空きブロック検索に時
間がかかる.
修正版
複数の空きブロック情
報を1ブロックに格納
3)空きブロックの先頭と連
続空きブロック数を格納
14
3
7
11
15
19
23
0
4
8
12
16
20
1
5
9
13
17
21
2
6
10
14
18
22
図3.8 ディスク上の連結された空き領域リスト
空き領域リストの先頭位置
割当て技法(1/6):連続割当て
1)連続割当
1つのファイルを連続した領域に割当てる.
15
3
7
11
15
19
23
0
4
8
12
16
20
1
5
9
13
17
21
2
6
10
14
18
22
図3.9 連続割当て
ファイル 開始位置 長さ
count 0 2
Tr 5 3
Mail 12 4
count
Tr
ディレクトリ
割当て技法(2/6):連続割当て
問題点
どのようにして空き領域を見つけるか?
十分な空き領域(ホール,hole)が複数あったときに,どれにファイルを格納するか?
空き領域への割当て方策
1)First-fit(初適合割当て)
最初に見つけた十分な空き領域を選ぶ.
2)Best-fit(最適適合割当て)
必要最小限の大きさの空き領域を選ぶ.
3)Worst-fit(最悪適合割当て)
最大の空き領域を選ぶ.
16
割当て技法(3/6):連続割当て
詰め直し(compaction)
外部断片化(external fragmentation)への対処
散在している小さなホールを集めて大きな
ホールを作り直す.
連続割当の問題点
ファイルの大きさに関する柔軟性に欠ける.
ファイルが大きくなった時,どうするか?
17
割当て技法(4/6):鎖状割当て 2)鎖状割当て(linked allocation)
ファイルを固定長に分割してブロック単位に格納,ブロックをリンクする.
利点
外部断片化が生じない.
ファイルの大きさに柔軟に対処できる(詰め直し不要)
欠点
アクセスに時間がかかる(ポインタをたどる必要あり),障害に弱い(ポインタの消滅).
18 18
3
7
11
15
19
23
0
4
8
12
16
20
1
5
9
13
17
21
2
6
10
14
18
22
図3.10 ディスク上の鎖状割当て
ファイル 始点 終点
Jeep 11 16
ディレクトリ
割当て技法(5/6):索引付き割当て 3)索引付き割当て
ポインタを一か所に集める.
ポインタが分散化する問題を解決
問題点
1つのファイルに1つの索引ブロック
索引ブロックを浪費する可能性あり(小さなファイルに対して)
19 19
3
7
11
15
19
23
0
4
8
12
16
20
1
5
9
13
17
21
2
6
10
14
18
22
図3.11 ディスク領域の索引付き割当て
ファイル 索引ブロック
Jeep 19
ディレクトリ
11
1 14 16 -1
-1
割当て技法(6/6):性能の比較
アクセス速度
連続割当て: ○
鎖状割当て: ×
索引付き割当て: △
領域の効率
連続割当て: △?
鎖状割当て: ○
索引付き割当て: △?
20 20
ディレクトリシステム
ファイル情報の管理
2つのディレクトリ
1)装置ディレクトリ:
ファイルの物理的性質に関する情報を格納: ファイルの物理的位置,大きさ,...
2)ファイルディレクトリ:
ファイルの論理的情報を格納ファイル名,型,所有者,課金情報,保護情報,...
ディレクトリをどのような構造にするか?
ディレクトリへの操作
検索(search):ファイル名から対応するファイル情報を検索
ファイルの生成:ディレクトリエントリの生成
ファイルの削除:ディレクトリエントリの削除
ディレクトリの表示
21 21
ディレクトリシステム: 単一レベル(single level)ディレクトリ
最も単純な方法
利点
簡単
問題点
数が多くなったらどうするか?
異なるプログラムが同じ名前を持てない. 複数ユーザの場合,発生
22 22
名前 ファイル型 割当て法 位置 大きさ 保護 ・・・
・・・
図3.12 単一レベルディレクトリ
ディレクトリシステム: 2レベルディレクトリ
単一レベルの問題点
ユーザ間でのファイル名の混乱
ユーザ空間ごとに異なるディレクトリを持つ.
共通に使うファイルをどこに置くか?
共通ファイル
システムファイル: コンパイラ,アセンブラ,ローダ,...
1)各ディレクトリごとにコピーして持つ.
メモリ領域の浪費
2)特別なディレクトリを用意して一括管理(よく採用される方法)
23 23
利用者1 利用者2 利用者3 利用者4
図3.13 2レベルディレクトリ構造
cat bo a test X data a a test a data
基本 ファイル ディレクトリ
利用者 ファイル ディレクトリ
ファイル
ディレクトリシステム: 木構造ディレクトリ
2レベルディレクトリの拡張
例:UNIXのファイルシステム
ファイルの指定方法
パス名で指定
パスの指定方法
1)完全(絶対,complete)パス名: ルートからのパス名で指定
2)相対パス名: カレント(現在)ディレクトリからのパス名で指定
24 24 図3.14 木構造ディレクトリ
list obj spell last first all
spell bin programs
stat mail dist find count hex reorder p e mail
prog copy prt exp reorder clist find hex count
Root,ルート
以上
25