25
3 ファイルシステム 1

3 ファイルシステムファイルの支援機能(1/2) ファイルの操作 生成 書き出し 読み込み 巻き戻し 削除 上記の操作は,システムコール

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 3 ファイルシステムファイルの支援機能(1/2) ファイルの操作 生成 書き出し 読み込み 巻き戻し 削除 上記の操作は,システムコール

3 ファイルシステム

1

Page 2: 3 ファイルシステムファイルの支援機能(1/2) ファイルの操作 生成 書き出し 読み込み 巻き戻し 削除 上記の操作は,システムコール

ファイルの概念

ファイルとは? 情報を格納する論理的単位

プログラム: ソースプログラム,オブジェクト形式,実行形式 データ

ファイルの定義 OSが規定する. OSによって異なる. (例) UNIX: バイト列(単純)

ファイルの型 ファイルの型は作成者によって定義される. 型の例

プログラム:ソース(原始),オブジェクト,実行形式 その他: テキスト

2

Page 3: 3 ファイルシステムファイルの支援機能(1/2) ファイルの操作 生成 書き出し 読み込み 巻き戻し 削除 上記の操作は,システムコール

ファイルへのサポート ーOSがどこまでサポート(支援)すべきか?(1/2)ー

1)細かく支援する. 利点

サポートされた型については,ユーザにとって便利 (例) ソースプログラムを修正して実行する場合 実行形式プログラムを実行させるだけでよい.

– OSが,対応するソースプログラムを見つけて,コンパイル,リンクを自動的に行う.

欠点 OSがサポートしていない型については,ユーザが不便 (例) OSがサポートする型: テキストファイル,実行形式 ユーザ: テキストファイルを暗号化したファイルを作る. (暗号ファイル: ランダムなビット列) ↓

適当な型がない.

3

Page 4: 3 ファイルシステムファイルの支援機能(1/2) ファイルの操作 生成 書き出し 読み込み 巻き戻し 削除 上記の操作は,システムコール

ファイルへのサポート ーOSがどこまでサポート(支援)すべきか?(2/2)ー

2)大まかに支援する.

利点

融通性がある.(型の定義がユーザレベルでできる.)

欠点

面倒くさい

定義するプログラムを書かなければならない.

4

Page 5: 3 ファイルシステムファイルの支援機能(1/2) ファイルの操作 生成 書き出し 読み込み 巻き戻し 削除 上記の操作は,システムコール

テープを基盤としたシステム

準備中

5

図3.1 ファイルシステムにおけるファイルの大きさ(準備中)

Page 6: 3 ファイルシステムファイルの支援機能(1/2) ファイルの操作 生成 書き出し 読み込み 巻き戻し 削除 上記の操作は,システムコール

ディスクを基盤としたシステム

構造 トラックは,複数のセクタからなる.

セクタ: ハードウェアの読み書きの最小単位

6

トラック

シリンダ

読書きヘッド

セクタ

腕(アーム)

回転

図3.2 移動ヘッドディスク機構

例 セクタ:32B~4KB トラック:4~32セクタ 面:75~500トラック

セクタへのアクセス

3つの要素で規定 (トラック(シリンダ),面,セクタ)

Page 7: 3 ファイルシステムファイルの支援機能(1/2) ファイルの操作 生成 書き出し 読み込み 巻き戻し 削除 上記の操作は,システムコール

OSの管理単位

ディスクブロック (トラック(シリンダ),面,セクタ)を1次元管理

ブロック番号の付け方(右図)

7

ディスク装置の利点 1)ブロック単位での再書込み可能 2)ヘッドの移動が(テープよりも)速い.

Page 8: 3 ファイルシステムファイルの支援機能(1/2) ファイルの操作 生成 書き出し 読み込み 巻き戻し 削除 上記の操作は,システムコール

ブロック化

情報の管理単位

ハードウェア (物理)ブロック,物理レコード(=セクタ)

ソフトウェア(OS) 論理レコード: ファイルを構成する最小単位

大きさ

通常,物理ブロック≧論理レコード

1つの論理レコード → 1つの物理ブロックに格納

パック(pack),アンパック(unpack)

パッキング: 複数の論理レコードを1つにまとめる(物理ブロックの大きさに)

アンパッキング: 上記と逆

メモリ → ディスクへの格納:パッキング

ディスク → メモリへのロード: アンパッキング

8

Page 9: 3 ファイルシステムファイルの支援機能(1/2) ファイルの操作 生成 書き出し 読み込み 巻き戻し 削除 上記の操作は,システムコール

ファイルの支援機能(1/2) ファイルの操作

生成

書き出し

読み込み

巻き戻し

削除

上記の操作は,システムコール

OSは,何をやらなければならないか?

生成

ディスクの中に生成のための領域を確保

ファイル情報を追加(ディレクトリへ)

書き出し

システムコールを用いる. 引数:ファイル名,書き出す内容

OSは,下記を行う. ファイル名から,そのファイルが実際にどこにあるかを調べる(ディレクトリを用いる)

ファイルの終端ポインタの変更

9

Page 10: 3 ファイルシステムファイルの支援機能(1/2) ファイルの操作 生成 書き出し 読み込み 巻き戻し 削除 上記の操作は,システムコール

ファイルの支援機能(2/2) 読み込み

システムコールの引数:ファイル名,読出し先(メモリ上)

ポインタ移動

読込み用ポインタ,書き出し用ポインタ

1つのポインタで代用(current file position pointer : 現在ファイル位置)

巻き戻し

ポインタをファイルの先頭へ移動

削除

ファイル領域の解放

ディレクトリ項目(エントリ)の解放

操作の分類

以下の2種類を分離

1)操作開始,終了(今からファイルを使用/終了)

2)実際の操作(読書き,巻き戻し)

ファイルのオープン(ファイルを開く)

今からファイルを使用ディレクトリエントリのキャッシング

ファイルのクローズ(ファイルを閉じる)

ファイル使用の終了

オープン,クローズを明示的に行わないOSもある.

10

Page 11: 3 ファイルシステムファイルの支援機能(1/2) ファイルの操作 生成 書き出し 読み込み 巻き戻し 削除 上記の操作は,システムコール

装置ディレクトリ

情報の種類(OSによって異なる)

ファイル名

ファイルの型

ファイルの物理的位置

大きさ

現在の参照位置

保護: 読み込み,書き出し,実行

現在使用しているプロセス数

時刻,日付,プロセス識別子:聖性,最新の更新,

最新の使用

11

Page 12: 3 ファイルシステムファイルの支援機能(1/2) ファイルの操作 生成 書き出し 読み込み 巻き戻し 削除 上記の操作は,システムコール

割当技法

ディスクの空き領域をどのように管理するか?(空き

領域管理)

ファイルをどのようにディスクへ格納するか?

割当て技法の種類

連続(continuous)割当て

鎖状(linked)割当て

索引付き(indexed)割当て

12

Page 13: 3 ファイルシステムファイルの支援機能(1/2) ファイルの操作 生成 書き出し 読み込み 巻き戻し 削除 上記の操作は,システムコール

空き領域管理(1/2)

空き領域リスト(空き領域を集めたrスト)で管理

実現方法

1)ビットマップで管理

1ビットを1ブロックの空き/使用情報に使う.

ディスク:8ブロックで構成

0:空き,1:使用中

例:

ブロック1,2,5,6,7:使用中

ブロック0,3,4:空き

とすると,ビットマップは,下記となる.

ビットマップ:01100111

13

Page 14: 3 ファイルシステムファイルの支援機能(1/2) ファイルの操作 生成 書き出し 読み込み 巻き戻し 削除 上記の操作は,システムコール

空き領域管理(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 ディスク上の連結された空き領域リスト

空き領域リストの先頭位置

Page 15: 3 ファイルシステムファイルの支援機能(1/2) ファイルの操作 生成 書き出し 読み込み 巻き戻し 削除 上記の操作は,システムコール

割当て技法(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

Mail

ディレクトリ

Page 16: 3 ファイルシステムファイルの支援機能(1/2) ファイルの操作 生成 書き出し 読み込み 巻き戻し 削除 上記の操作は,システムコール

割当て技法(2/6):連続割当て

問題点

どのようにして空き領域を見つけるか?

十分な空き領域(ホール,hole)が複数あったときに,どれにファイルを格納するか?

空き領域への割当て方策

1)First-fit(初適合割当て)

最初に見つけた十分な空き領域を選ぶ.

2)Best-fit(最適適合割当て)

必要最小限の大きさの空き領域を選ぶ.

3)Worst-fit(最悪適合割当て)

最大の空き領域を選ぶ.

16

Page 17: 3 ファイルシステムファイルの支援機能(1/2) ファイルの操作 生成 書き出し 読み込み 巻き戻し 削除 上記の操作は,システムコール

割当て技法(3/6):連続割当て

詰め直し(compaction)

外部断片化(external fragmentation)への対処

散在している小さなホールを集めて大きな

ホールを作り直す.

連続割当の問題点

ファイルの大きさに関する柔軟性に欠ける.

ファイルが大きくなった時,どうするか?

17

Page 18: 3 ファイルシステムファイルの支援機能(1/2) ファイルの操作 生成 書き出し 読み込み 巻き戻し 削除 上記の操作は,システムコール

割当て技法(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

ディレクトリ

Page 19: 3 ファイルシステムファイルの支援機能(1/2) ファイルの操作 生成 書き出し 読み込み 巻き戻し 削除 上記の操作は,システムコール

割当て技法(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

Page 20: 3 ファイルシステムファイルの支援機能(1/2) ファイルの操作 生成 書き出し 読み込み 巻き戻し 削除 上記の操作は,システムコール

割当て技法(6/6):性能の比較

アクセス速度

連続割当て: ○

鎖状割当て: ×

索引付き割当て: △

領域の効率

連続割当て: △?

鎖状割当て: ○

索引付き割当て: △?

20 20

Page 21: 3 ファイルシステムファイルの支援機能(1/2) ファイルの操作 生成 書き出し 読み込み 巻き戻し 削除 上記の操作は,システムコール

ディレクトリシステム

ファイル情報の管理

2つのディレクトリ

1)装置ディレクトリ:

ファイルの物理的性質に関する情報を格納: ファイルの物理的位置,大きさ,...

2)ファイルディレクトリ:

ファイルの論理的情報を格納ファイル名,型,所有者,課金情報,保護情報,...

ディレクトリをどのような構造にするか?

ディレクトリへの操作

検索(search):ファイル名から対応するファイル情報を検索

ファイルの生成:ディレクトリエントリの生成

ファイルの削除:ディレクトリエントリの削除

ディレクトリの表示

21 21

Page 22: 3 ファイルシステムファイルの支援機能(1/2) ファイルの操作 生成 書き出し 読み込み 巻き戻し 削除 上記の操作は,システムコール

ディレクトリシステム: 単一レベル(single level)ディレクトリ

最も単純な方法

利点

簡単

問題点

数が多くなったらどうするか?

異なるプログラムが同じ名前を持てない. 複数ユーザの場合,発生

22 22

名前 ファイル型 割当て法 位置 大きさ 保護 ・・・

・・・

図3.12 単一レベルディレクトリ

Page 23: 3 ファイルシステムファイルの支援機能(1/2) ファイルの操作 生成 書き出し 読み込み 巻き戻し 削除 上記の操作は,システムコール

ディレクトリシステム: 2レベルディレクトリ

単一レベルの問題点

ユーザ間でのファイル名の混乱

ユーザ空間ごとに異なるディレクトリを持つ.

共通に使うファイルをどこに置くか?

共通ファイル

システムファイル: コンパイラ,アセンブラ,ローダ,...

1)各ディレクトリごとにコピーして持つ.

メモリ領域の浪費

2)特別なディレクトリを用意して一括管理(よく採用される方法)

23 23

利用者1 利用者2 利用者3 利用者4

図3.13 2レベルディレクトリ構造

cat bo a test X data a a test a data

基本 ファイル ディレクトリ

利用者 ファイル ディレクトリ

ファイル

Page 24: 3 ファイルシステムファイルの支援機能(1/2) ファイルの操作 生成 書き出し 読み込み 巻き戻し 削除 上記の操作は,システムコール

ディレクトリシステム: 木構造ディレクトリ

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,ルート

Page 25: 3 ファイルシステムファイルの支援機能(1/2) ファイルの操作 生成 書き出し 読み込み 巻き戻し 削除 上記の操作は,システムコール

以上

25