• 検索結果がありません。

ファイルの名前付け 3 ディレクトリ情報の管理

N/A
N/A
Protected

Academic year: 2021

シェア "ファイルの名前付け 3 ディレクトリ情報の管理"

Copied!
18
0
0

読み込み中.... (全文を見る)

全文

(1)

ファイルの名前付け

ディレクトリ情報の管理

名前を付ける

• ファイルに名前を付けて 名前でアクセスしたい

– 名前がないと︖

ディスク上のブロック番号でアクセスする︖

• 「2台目のディスクのブロック237をread」

ブロック番号を覚えるのはやっかい

そもそも1つのデータが1ブロックに収まらない ので複数ブロックを覚えておく必要がある︖

(2)

2

ディレクトリ情報の管理

• 案①︓表に並べて持つ ファイル名 実体への

ポインタ

usersの 実体 age 実体へのポインタ ageの実体 server 実体へのポインタ serverの

実体 users

ディレクトリ情報の管理

• 案①︓表に並べて持つ

ファイル名での検索は 先頭から順にスキャン

ファイル名

実体へのポインタ

usersの 実体 age 実体へのポインタ ageの実体 server 実体へのポインタ serverの

実体 users

(3)

4

ディレクトリ情報の管理

• 案①︓表に並べて持つ

ファイル名での検索は 先頭から順にスキャン

⇒ 後のものは時間かかる

ファイル名

実体へのポインタ

usersの 実体 age 実体へのポインタ ageの実体 server 実体へのポインタ serverの

実体 users

ディレクトリ情報の管理

• 案①︓表に並べて持つ

ファイル名での検索は 先頭から順にスキャン

⇒ 後のものは時間かかる

早い方法として

• 案②︓名前=アドレス にする

ファイル名

実体へのポインタ

usersの 実体 age 実体へのポインタ ageの実体 server 実体へのポインタ serverの

実体 users

server age

users

usersの 実体 ageの実体

serverの 実体

(4)

6

ディレクトリ情報の管理

• 案①︓表に並べて持つ

ファイル名での検索は 先頭から順にスキャン

⇒ 後のものは時間かかる

早い方法として

• 案②︓名前=アドレス にする

– 名前の文字コードを 表の⾏番号と対応する

ファイル名

実体へのポインタ

usersの 実体 age 実体へのポインタ ageの実体 server 実体へのポインタ serverの

実体 users

server age

users

usersの 実体 ageの実体

serverの 実体

ディレクトリ情報の管理

• 案①︓表に並べて持つ

ファイル名での検索は 先頭から順にスキャン

⇒ 後のものは時間かかる

早い方法として

• 案②︓名前=アドレス にする

– 名前の文字コードを 表の⾏番号と対応する

⇒名前から直接表が引ける

ファイル名

実体へのポインタ

usersの 実体 age 実体へのポインタ ageの実体 server 実体へのポインタ serverの

実体 users

server age

users

usersの 実体 ageの実体

serverの 実体

(5)

8

ディレクトリ情報の管理

• 案①︓表に並べて持つ

ファイル名での検索は 先頭から順にスキャン

⇒ 後のものは時間かかる

早い方法として

• 案②︓名前=アドレス にする

– 名前の文字コードを 表の⾏番号と対応する

⇒名前から直接表が引ける – すかすかになってしまう

ファイル名

実体へのポインタ

usersの 実体 age 実体へのポインタ ageの実体 server 実体へのポインタ serverの

実体 users

server age

users

usersの 実体 ageの実体

serverの 実体

名前をアドレス(⾏番号)にするには

users

ファイル名を 最大8文字に 限定したとする

8文字×8ビット

=64ビット

011011101…

(6)

10

名前をアドレス(⾏番号)にするには

users

ファイル名を 最大8文字に 限定したとする

8文字×8ビット

=64ビット

64通りの

パターンが 得られる

011011101…

名前をアドレス(⾏番号)にするには

users

ファイル名を 最大8文字に 限定したとする

8文字×8ビット

=64ビット

64通りの

パターンが 得られる

011011101…

0000…000 0000…001 0000…010

1111…111

64

エントリ

(7)

12

名前をアドレス(⾏番号)にするには

users

ファイル名を 最大8文字に 制限したとする

8文字×8ビット

=64ビット

64通りの

パターンが 得られる

011011101…

0000…000 0000…001 0000…010

1111…111

64

エントリ

2 64

はおよそ

16

×

10 18

だが 実際に使うのは数千個とか

名前をアドレス(⾏番号)にするには

users

ファイル名を 最大8文字に 制限したとする

8文字×8ビット

=64ビット

64通りの

パターンが 得られる

011011101…

0000…000 0000…001 0000…010

1111…111

64

エントリ

2 64

はおよそ

16

×

10 18

だが 実際に使うのは数千個とか

「すかすかになる」

(8)

14

で、ハッシュを使う

• ハッシュとは

で、ハッシュを使う

• ハッシュとは

広い空間(例︓2

64

)を

⼩さい空間(例︓2

16

)に マップ

64個の

名前空間 16個の 名前空間

(9)

16

で、ハッシュを使う

• ハッシュとは

広い空間(例︓2

64

)を

⼩さい空間(例︓2

16

)に マップ

– 適当な関数でマップ

64個の

名前空間 16個の 名前空間

で、ハッシュを使う

• ハッシュとは

広い空間(例︓2

64

)を

⼩さい空間(例︓2

16

)に マップ

– 適当な関数でマップ

• 結果が重なることもある

– コリジョン(衝突)

64個の

名前空間 16個の 名前空間

異なるエントリ 同じエントリ

コリジョン

(10)

18

で、ハッシュを使う

• ハッシュとは

広い空間(例︓2

64

)を

⼩さい空間(例︓2

16

)に マップ

– 適当な関数でマップ

• 結果が重なることもある

– コリジョン(衝突)

– 仕方ないので「次候補」

64個の

名前空間 16個の 名前空間

なるエントリ じエントリ

コリジョン

で、ハッシュを使う

• ハッシュとは

広い空間(例︓2

64

)を

⼩さい空間(例︓2

16

)に マップ

– 適当な関数でマップ

• 結果が重なることもある

– コリジョン(衝突)

– 仕方ないので「次候補」

• リンクによって繋ぐ

64個の

名前空間 16個の 名前空間

異なるエントリ 同じエントリ

コリジョン

(11)

20

で、ハッシュを使う

• ハッシュとは

広い空間(例︓2

64

)を

⼩さい空間(例︓2

16

)に マップ

– 適当な関数でマップ

• 結果が重なることもある

– コリジョン(衝突)

– 仕方ないので「次候補」

• リンクによって繋ぐ

• 次に並べる

64個の

名前空間 16個の 名前空間

なるエントリ じエントリ

コリジョン

衝突時の「次候補」

1. リンクで繋いで おく方法

age school

age school

(12)

22

school

衝突時の「次候補」

1. リンクで繋いで おく方法

2. 次のエントリに 書いておく方法

age school

age school

age school

age

ハッシュ関数の例

• ハッシュ関数の簡単な例を考えてみる

(13)

24

ハッシュ関数の例

• ⽂字列sに対して

– 各文字s[i](のコード値)を足し合わせて

– 和を97(これは素数)で割った剰余を答とする

(つまり、97エントリーに分類される)

unsigned int hash(char *s) { unsigned int h = 0;

for (i=0; i<length(s); i++) { h = h + s[i];

}

return h % 97; %は剰余演算子

}

ウィキペディア「ハッシュ関数」より改変

⼀般論としてハッシュは

(14)

26

⼀般論としてハッシュは

• 衝突が無ければ

– とにかくサーチがいらない

ハッシュの計算だけで(表の⾏が決まって)

アクセスできる

だから、アクセス時間は表の⻑さに依存しない

⼀般論としてハッシュは

• 衝突が無ければ

– とにかくサーチがいらない

ハッシュの計算だけで(表の⾏が決まって)

アクセスできる

だから、アクセス時間は表の⻑さに依存しない

• 空間を縮めるので、スカスカはなくなる

(15)

28

⼀般論としてハッシュは

• 衝突が無ければ

– とにかくサーチがいらない

ハッシュの計算だけで(表の⾏が決まって)

アクセスできる

だから、アクセス時間は表の⻑さに依存しない

• 空間を縮めるので、スカスカはなくなる

• 衝突が起きるときの始末が必要

⼀般論としてハッシュは

• 衝突が無ければ

– とにかくサーチがいらない

ハッシュの計算だけで(表の⾏が決まって)

アクセスできる

だから、アクセス時間は表の⻑さに依存しない

• 空間を縮めるので、スカスカはなくなる

• 衝突が起きるときの始末が必要

しかも、衝突時は余分な処理時間がかかる

(16)

30

⼀般論としてハッシュは

• 結構いろいろなところで使われる

– 表のアクセスの高速化

⼀般論としてハッシュは

• 結構いろいろなところで使われる

– 表のアクセスの高速化

• ハッシュ関数をさまざまな工夫

(17)

32

⼀般論としてハッシュは

• 結構いろいろなところで使われる

– 表のアクセスの高速化

• ハッシュ関数をさまざまな工夫

– 計算が簡単で

– うまく圧縮できて(結果側の集合が欲しい大きさで)

– 衝突が少ない

⼀般論としてハッシュは

• 結構いろいろなところで使われる

– 表のアクセスの高速化

• ハッシュ関数をさまざまな工夫

– 計算が簡単で

– うまく圧縮できて(結果側の集合が欲しい大きさで)

– 衝突が少ない

⼊り側の発⽣確率が⼀様でないこともあり、

(18)

34 34

ディレクトリ情報の 管理の考え方が 理解できましたか︖

次へ

〇 ×

参照

関連したドキュメント

②教育研究の質の向上③大学の自律性・主体 性の確保④組織運営体制の整備⑤第三者評価

( 「時の法令」第 1592 号 1999 年 4 月 30 日号、一部変更)として、 「インフォームド・コンセ ント」という概念が導入された。同時にまた第 1 章第

* Department of Mathematical Science, School of Fundamental Science and Engineering, Waseda University, 3‐4‐1 Okubo, Shinjuku, Tokyo 169‐8555, Japan... \mathrm{e}

 体育授業では,その球技特性からも,実践者である学生の反応が①「興味をもち,積極

先に述べたように、このような実体の概念の 捉え方、および物体の持つ第一次性質、第二次

目標 目標/ 目標 目標 / / /指標( 指標( 指標(KPI 指標( KPI KPI KPI)、実施スケジュール )、実施スケジュール )、実施スケジュール )、実施スケジュールの の の の設定

図 21 のように 3 種類の立体異性体が存在する。まずジアステレオマー(幾何異 性体)である cis 体と trans 体があるが、上下の cis

強化 若葉学園との体験交流:年間各自1~2 回実施 新規 並行通園児在籍園との連携:10園訪問実施 継続 保育園との体験交流:年4回実施.