計算機システム概論

計算機システム概論・5回目
本日のトピック:ファイルシステムについて
ユーザの視点からみたファイル,ファイルシステム
ファイル,ファイルシステムとは
ファイルシステムの提供する機能
OSの視点からみたファイル,ファイルシステム
ファイルシステムの実現法
1
ファイルとファイルシステム
ファイル:
情報を記録するもの
電源を切っても消えない(不揮発性)
新しく作ったり,消したり,読んだり,書き換えたりできる
ファイルシステム:
ファイルを整理・収納するための仕組み
木構造ファイルシステムが一般的
2
ハードディスクの仕組み
ヘッド ディスク0
ヘッド0
ヘッド1
横から見た図
トラック(1周分)
ディスク
両面に磁性体塗布
セクタ
読出,書込の
最小単位
上から見た図
3
ハードディスクにおけるデータ格納
データの読み出し・書き込みはセクタ単位で行われる
1セクタ=数百~数キロバイト:読み書き時の1ブロック
ブロックのアドレス=(ヘッド番号,トラック番号,セクタ番号)
平均すると,どのブロックもアクセスにかかる時間は同じ...
連続したセクタの内容を読み込むのは,比較的早い
違うトラックの内容を読み込むには,ヘッドの移動が必要
⇒時間がかかる
ファイルシステムの格納を念頭においたものではない
4
OSの役割
OSの仕事:
ユーザに対しては,論理的なファイルシステムのビューを提供
外部記憶装置へは,単なるバイト列を格納
OS
3F 2A 82 FE
91 0A BA 5D
2E 1A 00 F3
E3 05 08 18
バイト列
ファイルシステム
5
OSの役割:ユーザ向け
OSの任務(ユーザ向け):
論理的で使い易いファイルシステムのビューを提供すること
木構造ファイルシステム
木構造システムの拡張
ファイルシステムを操作するための機能を提供すること
ファイルの作成や削除,編集等
ファイルへのアクセス権設定と権限管理
6
木構造ファイルシステム
木構造ファイルシステムの概要
「ディレクトリ(フォルダ)」と呼ばれる特殊なファイルが存在
複数のファイルを格納する「容器」
ディレクトリの中には,他のファイルやディレクトリが存在
ファイルの構成は,全体として巨大な木構造になる
ルートディレクトリ:
根に相当するディレクトリ
dir1
dir2
dir4
file1
file3
file2
dir3
file4
(プロセスの)カレントディレクトリ:
プロセスが,現在作業
を行っているディレクトリ
7
木構造ファイルシステムの拡張(1)
木構造ファイルシステムを更に使いやすくするための機能
リンク(ショートカット)
木構造の他の部分を,自分の子のようにみなす機能
実体は一個だけ.参照のための道筋が複数ある
dir1
dir2
dir1
dir3
dir2
dir3
file1 file2 dir4 file3
file1 file1 file2 dir4 dir4 file3
リンク:仮想的な親子関係
ユーザからのビュー
8
木構造ファイルシステムの拡張(2)
マウント
複数のファイルシステムを,接いでひとつにする
ファイルシステム1
ひとつの大きな
ファイルシステム
マウント
ファイルシステム2
NFSマウント:
ネットワーク上にある他のマシンの
ファイルシステムをマウントすること
9
ディスクマウントの例
1台のディスク内に,複数の論理的ファイルシステムを構成
マウントして,一つのファイルシステムに「見せかける」
⇒ 運用上の利便性確保
/usr にマウント
/data にマウント
スワップ領域として確保
/tmp にマウント
ルートファイルシステムに使用 /var にマウント
個々の分割単位:ボリューム,パーティション
10
ユーザに提供する操作
ファイルシステム:様々な操作をユーザに提供する
個々のファイルに対する操作
ファイルの中身を読む,書き換える
ファイルのアクセス権を設定する
ファイルの存在に対する操作
ファイル(含ディレクトリ)を作る,消す
ファイルを他の場所に移動する,名前を変える
ファイルをコピーする,リンクを作成する
カレントディレクトリを変更する
11
ファイル内容への参照方法について
ファイル内容をいかにして参照するか:2通りのサービス
順編成ファイル:柔軟性に欠けるが,負荷は小さい
ファイルの先頭から順番にしか,読み書きできない
1 2 3 4 5 …
直接編成ファイル:柔軟だが,負荷が小さい
ファイルの中のどこでも自由に読み書きできる
3
2 5 1
4
12
アクセス権について
ファイルは,ユーザ全員の共有資源:
基本的には,誰がどのファイルを読み書きしても良い
必要に応じてアクセス制御を行う
誰がそのファイルを読めるのか
誰がそのファイルに書き込めるのか
UNIXの場合:
ファイルごとにアクセス権設定可能
{所有者,同グループ,他人}×{読出,書込,実行}
rwx r-x ---
myfile
r w x
13
ファイルの存在に対する操作
ファイルの存在に対する操作
ファイルの作成,消去,移動,コピー...
⇒ ファイルシステムの実現と,密接に関係する
さきに,ファイルシステムの実現法について考える
ボリュームの全体設計
未使用ブロックの管理
ファイルの表現方法
ディレクトリの表現
14
ディスクボリュームの内部構成
ひとつのボリューム(パーティション)
データ領域...ファイルの中身を格納
インデックス領域...ファイルの索引情報を格納
スーパーブロック...ボリューム管理用情報を格納
(未使用ブロックに関する情報など)
未使用ブロック管理:いくつかの方法が知られている
ビットマップ法
連結リスト法
15
ビットマップ法
データ領域ブロックと一対一に対応させる形で,2進の
ビット系列(ビットマップ)を,スーパーブロックに準備する
ビットマップ中のデータで,ブロックが使用中か否か示す
未使用ブロックに対応するところは0
使用中ブロックに対応するところは1
データ領域...Bブロック
1 1 0 1 0 1 0 0 1 1
0 1
ビットマップ (Bビット)
16
連結リスト法
未使用ブロックを,連結リストの形で管理
(メモリ管理のときと同様の手法)
スーパーブロックには,リストの先頭要素を格納
17
ファイルの実現
インデックス
データ領域
ファイルは...
インデックス領域に管理情報を保持
データ領域に中身(実体)を保持
具体的な実現法:
連続割付
リンク割付
索引割付
18
連続割付
データ領域の連続したブロックに,実体を割り付ける
インデックス領域には,開始ブロックとサイズを記録
インデックス領域
name start size
A
2
3
B
6
2
C
8
4
D
12
3
データ領域
0
1
2
3
4
A A A
8
9
5
6
7
B B
10 11 12 13 14 15
C C C C D D D
ディスクの特性から,アクセスは効率的に行える
ファイルサイズを動的に変更できない
断片化の問題
19
リンク割付
非連続に配置されたファイルの実体を,ポインタで結ぶ
インデックス領域には,リストの先頭を記録
インデックス領域
name start
A
13
B
1
C
10
D
8
データ領域
0
1
2
D B
8
D
9
3
4
5
C A
6
7
B C
10 11 12 13 14 15
C
C A D A
ファイルサイズの動的変更が容易
基本的に,順編成ファイルしか提供できない
事故(ブロック破損)に対する耐性が低い
20
索引割付
非連続に配置された実体を,索引ブロックで取りまとめる
インデックス領域には,索引ブロックの位置を記録
インデックス領域
name index
A
5
B
1
C
10
D
8
13 4
15
データ領域
0
1
2
D B
8
D
9
3
4
5
6
C A
7
B C
10 11 12 13 14 15
C
A
A
柔軟なファイル操作を提供できる
事故の影響を最小限に封じ込める
索引ブロックのために,余分なブロックを消費
21
UNIXのファイル割付
索引割付の手法を拡張したもの
インデックス領域は,以下の15個のブロックの位置を保持:
a) 直接ブロック×12
b) 1次索引ブロック×1...「ブロック ×256個」を格納
c) 2次索引ブロック×1...「1次索引ブロック×256個」を格納
d) 3次索引ブロック×1...「2次索引ブロック×256個」を格納
インデックス領域…「15個のブロック位置を持つ構造体」の集合
name
b0 b2 … b11 i1 i2 i3
A
B
i ノード
C
22
i ノードの構造
3次索引
ブロック
i ノード
直接ブロック
2次索引
ブロック
12
1次索引
ブロック
256
間接ブロック
256
二重間接ブロック
256
三重間接ブロック
23
ファイルサイズの上限
1ブロック=4KBのとき,ファイルサイズが
4x12 = 48KB以下
...直接ブロックのみ使用
4x12+4x256 = 1072KB以下
...間接ブロックまで使用
4x12+4x256+4x(256)2 ≈ 256MB以下
...二重間接ブロックまで使用
4x12+4x256+4x(256)2 +4x(256)3 ≈ 64GB以下
...三重間接ブロックまで使用
24
ディレクトリの表現
ディレクトリ:
ファイルの一種
そのディレクトリに属するファイルの情報を含む
i ノード番号とファイル名からなるテキスト形式の表
i ノード
i ノード番号
1118
16609
87886
9363
ファイル名
. (自ディレクトリ)
..(親ディレクトリ)
.cshrc
work
25
ファイルへのアクセス
/home/is/kaji/abcにアクセスするには...
ルートディレクトリの
i ノード(固定)
995
:
995 home
:
:
12211 is
:
12211
:
96302 abc
:
34165
96302
Hello!
:
34165 kaji
:
26
ファイルの作成と消去
ファイルの作成:
新しい i ノードを確保
未使用ブロックを持ってきて,実体を格納する
i ノードがファイルの実体を指すようにする
親ディレクトリに i ノード番号と名前を登録する
ファイルの消去:
親ディレクトリから登録を抹消する
使用していたブロックを未使用ブロックとして登録する
i ノードを解放する
(データ部分が消去されるわけではないことに注意)
27
本日のまとめ
ファイル管理について
OSが提供するファイルシステムとその機能
ディスク装置について
未使用ブロックとファイル割付
次回:ユーザ管理について
実験課題(提出不要):UNIX上でmountコマンドを実行し,
どのようなファイルシステムがマウントされているか確認せよ
28