狠狠撸

狠狠撸Share a Scribd company logo
12章 仮想ファイルシステム
この章では、Linux において他のシステム(Windows など)と共存するために必要不可欠
である仮想ファイルシステム(VFS:Virtual File System)について述べられている。
12.1:VFS の役割
VFS は、仮想ファイルシステムスイッチともいわれるカーネル上のソフトウェア(レイ
ヤ)、である。要は、カーネル上にある便利な自動翻訳ソフトのようなもの。
?対応するファイルシステム
- ディスクベースのファイルシステム(Ext2 以外にも)
- ネットワークファイルシステム(ネット上のファイル)
- 特殊ファイルシステム(カーネルを見るとき)
12.1.1:VFS の中身
共通ファイルモデル=UNIX のファイルモデルを反映
一方で、UNIX 系ファイルでないと再構成される。(特に、FAT→ディレクトリが多い)
*オブジェクト=データ+メソッド(操作)と定義するとオブジェクト指向型であると考
えられる。C++は効率的でない。
?構成要素
- スーパーブロックオブジェクト(一個のファイルシステムに対して1つ)
それぞれのファイルシステムのメタデータを示す。ファイルシステムに対する情報が格納
される。
- i ノードオブジェクト
ファイルの位置やディスクの情報などを含む。
- ファイルオブジェクト
ファイルとメモリ間のやりとりした情報を保存。
- d エントリオブジェクト
?仕組み
(一例)
プロセス→ファイルオブジェクト→d エントリオブジェクト→i ノードオブジェクト→スーパ
ブロックオブジェクト+i ノード→ディスクファイル
15 章 通常ファイルへのアクセス
15.1  read()と write()を用いた通常ファイルへアクセスする方法
15.2 メモリマッピング
15.1
?通常ファイルの読み取りは、ページを基本として行われる。
→カーネルでは常に一度にページのデータ全体を転送
15.2 メモリマッピング
メモリマッピング=先頭リニアアドレス、サイズ、アクセス権を示すメモリリージョンの 
         ページ内のバイトへのアクセスが、通常ファイルの対応するバイトで
         の操作に変換されること(カーネル)
” ” ” ”          共有 と プライベート の 2 種類の方法がある。
共有:メモリリージョンが行う全ての操作は、ディス上のファイルを変更。
プライベート:読み取り専用ファイルで適応される。
?メモリマッピングのデータ構造
=ファイルの i ノード+メモリマッピング用ディスクリプタ+メモリリージョンに割り当
てられた各ページのページディスクリプタ+ファイルオブジェクト
?メモリマッピング
メモリの構造は、
17章 Ext2 ファイルシステム
主に、i ノードブロックのディスク領域の確保とデータブロックのディスク領域の確保につ
いてのお話。
17.1 Ext2 の紹介
17.2 ディスク上に保存されるデータ構造(by Ext2)
17.3 17.2 で示された構造がどのようにしてメモリ内にコピーされるのか。
17.4 Ext2 をディスクパーティション内に作成する方法。
17.1 Ext2 の紹介
歴史:Minix ファイルシステム→Ext FS→Ext2(→Ext3)
主な効率化の要因?特色
?ファイルの長さに応じたブロックサイズの選択
ディスクブロック内の使用率の問題が解決。
→たとえファイルサイズが 1 バイトでも、1 ブロック分を消費するので小さいファイルがた
くさんあるときはブロックサイズを小さくすればディスクの容量を効率的に使用できる。
+ブロックのフラグメント化(他のファイルに割り当てる)
【フラグメント:本来連続した情報であるファイル?空ブロックがディスク内で分断され
た状態。現在はディスクが情報を探す時間の延長を引き起こす原因の一つ】
?1 つのディスクブロック内にあるファイルに短時間でアクセス可能
ディスクブロック?複数のグループ と分割されている。
(グループ=スーパブロック+グループディスクリプタ+??+i ノード+データブロッ
ク:データと i ノードが隣接)
?ファイルの断片化の防止
ファイルサイズが増加しても、先行割り当て(先行予約)によって、ファイルの隣接した位
置のブロックを予約することになっているので問題ない。
?不変ファイルと追記専用ファイルの実装
スーパーユーザーも従わせる。
???etc
17.2 ディスク上に保存されるデータ構造(by Ext2)
Ext2 パーティションはブートブロックと、いくつものブロックグループによって構成され
ている。同じファイルに属すデータブロックは、できるだけ同じブロックグループ内に入れ
るようにカーネルがはたらくので、ファイルの断片化はおこりにくくなる。
【ブロックグループの構成】
スーパブロック(コピー)←管理情報
ブロックグループディスクリプタ(コピー)←グループ内の要約(目次)
データブロックビットマップ←データブロックが使用中(1)or 空き(0)を示す
i ノードビットマップ←i ノードが使用中(1)or 空き(0)を示す
一個以上の i ノードの集合(テーブル)
データブロック
<ファイルの種類>
?通常ファイル
 ほとんどが該当する普通のファイル。
 作成時は空であり、データブロックは必要としない。
?ディレクトリ
 ☆Ext2 では、ディレクトリもファイル(ディレクトリエントリ)として扱われる。
 構成は ディレクトリエントリ=
i ノード番号+ディレクトリエントリ自身の長さ+ファイル名の長さ+ファイルの種類
+ファイル名(常に 4 の倍数になるよう null 文字/0 で調節)
*ディレクトリを消す動作の内訳
1.i ノード番号が 1→0
2.ひとつ前のディレクトリエントリの中のディレクトリエントリ自身の長さに  
      消すディレクトリエントリの長さを加算。
?シンボリックリンク
パス名が 60 バイト以内→データブロック不必要(i ノードに記載されている)
パス名が 60 バイト超え→1 つデータブロック必要
?データファイルを要求しないファイル(デバイスファイル?パイプ?ソケット)
→i ノードに記載
    
17.3 17.2 で示された構造がどのようにしてメモリ内にコピーされるのか。
ほとんどの情報は、ファイルシステムのマウント時に RAM へとコピーされる。
非常に頻繁に更新されるデータ(スーパブロックやグループディスクリプタ)はバッファ
キャッシュ内にある。
キャッシュのモードとしては、常にキャッシュ?一定量キャッシュ?動的にキャッシュ?
キャッシュされない、がある。(一定量:特定の数のみ、動的:メモリが不足すると順次開
放、キャッシュされない:空きブロック)
17.4 Ext2 をディスクパーティション内に作成する方法。
ディスクパーティションやディスクのフォーマットファイルシステム
≠ファイルシステムの作成
フォーマット=ブロックの読み書きができるようになる
ファイルシステムの作成=以前説明されたデータ構造を準備
17.5 Ext2 関数(VFS メソッドに対応した)
Ext2 スーパブロック操作
Ext2 i ノード操作
Ext2 ファイル操作
17.6 ディスク領域の管理
ファイルシステムはアクセス時間を向上させるために、ブロックをなるべく連続して保存
しようと試みるが、ブロックはディスクのいろいろなところに散在していることがある。
→ファイルの断片化の防止
?i ノードの作成【ext2_new_inode()】
成功→i ノードオブジェクトのアドレス
失敗→null(/0)を出力
(i ノードの削減は ext2_free_inode())
17.4 Ext2 をディスクパーティション内に作成する方法。
ディスクパーティションやディスクのフォーマットファイルシステム
≠ファイルシステムの作成
フォーマット=ブロックの読み書きができるようになる
ファイルシステムの作成=以前説明されたデータ構造を準備
17.5 Ext2 関数(VFS メソッドに対応した)
Ext2 スーパブロック操作
Ext2 i ノード操作
Ext2 ファイル操作
17.6 ディスク領域の管理
ファイルシステムはアクセス時間を向上させるために、ブロックをなるべく連続して保存
しようと試みるが、ブロックはディスクのいろいろなところに散在していることがある。
→ファイルの断片化の防止
?i ノードの作成【ext2_new_inode()】
成功→i ノードオブジェクトのアドレス
失敗→null(/0)を出力
(i ノードの削減は ext2_free_inode())

More Related Content

What's hot (8)

詳解UNIXプログラミング 第4章 ファイルとディレクトリ
詳解UNIXプログラミング 第4章 ファイルとディレクトリ詳解UNIXプログラミング 第4章 ファイルとディレクトリ
詳解UNIXプログラミング 第4章 ファイルとディレクトリ
Takaya Kotohata
?
20031030 「読み込み専用マウントによる改ざん防止Linuxサーバの構築」
20031030 「読み込み専用マウントによる改ざん防止Linuxサーバの構築」20031030 「読み込み専用マウントによる改ざん防止Linuxサーバの構築」
20031030 「読み込み専用マウントによる改ざん防止Linuxサーバの構築」
Toshiharu Harada, Ph.D
?
尝颈苍耻虫の基本コマンド
尝颈苍耻虫の基本コマンド尝颈苍耻虫の基本コマンド
尝颈苍耻虫の基本コマンド
晋 小沼
?
Oftec Lightning Talk 第7回 最近触ったLinuxディストリビューションの紹介
Oftec Lightning Talk 第7回 最近触ったLinuxディストリビューションの紹介Oftec Lightning Talk 第7回 最近触ったLinuxディストリビューションの紹介
Oftec Lightning Talk 第7回 最近触ったLinuxディストリビューションの紹介
Yu Nobara
?
pkgsrcに関する何か - 何かって何?
pkgsrcに関する何か - 何かって何?pkgsrcに関する何か - 何かって何?
pkgsrcに関する何か - 何かって何?
Akio OBATA
?
尝颈苍耻虫とファイル
尝颈苍耻虫とファイル尝颈苍耻虫とファイル
尝颈苍耻虫とファイル
Jun Ishitsuka
?
Next-L Enju 開発ワークショップ #50
Next-L Enju 開発ワークショップ #50Next-L Enju 開発ワークショップ #50
Next-L Enju 開発ワークショップ #50
Kosuke Tanabe
?
勉強会資料 LT会 zfsて?遊んて?みた_公開版
勉強会資料 LT会 zfsて?遊んて?みた_公開版勉強会資料 LT会 zfsて?遊んて?みた_公開版
勉強会資料 LT会 zfsて?遊んて?みた_公開版
Ryoma Fujiwara
?
詳解UNIXプログラミング 第4章 ファイルとディレクトリ
詳解UNIXプログラミング 第4章 ファイルとディレクトリ詳解UNIXプログラミング 第4章 ファイルとディレクトリ
詳解UNIXプログラミング 第4章 ファイルとディレクトリ
Takaya Kotohata
?
20031030 「読み込み専用マウントによる改ざん防止Linuxサーバの構築」
20031030 「読み込み専用マウントによる改ざん防止Linuxサーバの構築」20031030 「読み込み専用マウントによる改ざん防止Linuxサーバの構築」
20031030 「読み込み専用マウントによる改ざん防止Linuxサーバの構築」
Toshiharu Harada, Ph.D
?
尝颈苍耻虫の基本コマンド
尝颈苍耻虫の基本コマンド尝颈苍耻虫の基本コマンド
尝颈苍耻虫の基本コマンド
晋 小沼
?
Oftec Lightning Talk 第7回 最近触ったLinuxディストリビューションの紹介
Oftec Lightning Talk 第7回 最近触ったLinuxディストリビューションの紹介Oftec Lightning Talk 第7回 最近触ったLinuxディストリビューションの紹介
Oftec Lightning Talk 第7回 最近触ったLinuxディストリビューションの紹介
Yu Nobara
?
pkgsrcに関する何か - 何かって何?
pkgsrcに関する何か - 何かって何?pkgsrcに関する何か - 何かって何?
pkgsrcに関する何か - 何かって何?
Akio OBATA
?
尝颈苍耻虫とファイル
尝颈苍耻虫とファイル尝颈苍耻虫とファイル
尝颈苍耻虫とファイル
Jun Ishitsuka
?
Next-L Enju 開発ワークショップ #50
Next-L Enju 開発ワークショップ #50Next-L Enju 開発ワークショップ #50
Next-L Enju 開発ワークショップ #50
Kosuke Tanabe
?
勉強会資料 LT会 zfsて?遊んて?みた_公開版
勉強会資料 LT会 zfsて?遊んて?みた_公開版勉強会資料 LT会 zfsて?遊んて?みた_公開版
勉強会資料 LT会 zfsて?遊んて?みた_公開版
Ryoma Fujiwara
?

Viewers also liked (16)

05 後期勉強会一年の部【菅原】
05 後期勉強会一年の部【菅原】05 後期勉強会一年の部【菅原】
05 後期勉強会一年の部【菅原】
yu-Linux
?
01 後期勉強会一年の部【前泽】
01 後期勉強会一年の部【前泽】01 後期勉強会一年の部【前泽】
01 後期勉強会一年の部【前泽】
yu-Linux
?
03 後期勉強会一年の部【川合】
03 後期勉強会一年の部【川合】03 後期勉強会一年の部【川合】
03 後期勉強会一年の部【川合】
yu-Linux
?
Dauerbrenner Frozen wieder zurück auf Platz 1Dauerbrenner Frozen wieder zurück auf Platz 1
Dauerbrenner Frozen wieder zurück auf Platz 1
SchimmelMartina
?
Christmas in spain
Christmas in spainChristmas in spain
Christmas in spain
Teresa Hoz Cobo
?
程式教育的本质
程式教育的本质程式教育的本质
程式教育的本质
NCTU
?
Ezekiel 2 commentary
Ezekiel 2 commentaryEzekiel 2 commentary
Ezekiel 2 commentary
GLENN PEASE
?
Precedent study sep 2016
Precedent study sep 2016Precedent study sep 2016
Precedent study sep 2016
jerryycc
?
骋耻í补+辫补谤补..骋耻í补+辫补谤补..
骋耻í补+辫补谤补..
MaryVG
?
Papa franciscoPapa francisco
Papa francisco
enmy verneiulle
?
Jayers_Portfolio
Jayers_PortfolioJayers_Portfolio
Jayers_Portfolio
Jim Ayers
?
História da ?frica e Afro-Brasileira - Capítulo 9História da ?frica e Afro-Brasileira - Capítulo 9
História da ?frica e Afro-Brasileira - Capítulo 9
NaniFulber
?
використання личинок озерно? жаби Rana ridibunda
використання личинок озерно? жаби Rana ridibunda використання личинок озерно? жаби Rana ridibunda
використання личинок озерно? жаби Rana ridibunda
school67dp
?
Ativ1 4 anailzamxfAtiv1 4 anailzamxf
Ativ1 4 anailzamxf
anailzamxf
?
Las tic’sLas tic’s
Las tic’s
tanyavelasquezlml
?
05 後期勉強会一年の部【菅原】
05 後期勉強会一年の部【菅原】05 後期勉強会一年の部【菅原】
05 後期勉強会一年の部【菅原】
yu-Linux
?
01 後期勉強会一年の部【前泽】
01 後期勉強会一年の部【前泽】01 後期勉強会一年の部【前泽】
01 後期勉強会一年の部【前泽】
yu-Linux
?
03 後期勉強会一年の部【川合】
03 後期勉強会一年の部【川合】03 後期勉強会一年の部【川合】
03 後期勉強会一年の部【川合】
yu-Linux
?
Dauerbrenner Frozen wieder zurück auf Platz 1Dauerbrenner Frozen wieder zurück auf Platz 1
Dauerbrenner Frozen wieder zurück auf Platz 1
SchimmelMartina
?
程式教育的本质
程式教育的本质程式教育的本质
程式教育的本质
NCTU
?
Ezekiel 2 commentary
Ezekiel 2 commentaryEzekiel 2 commentary
Ezekiel 2 commentary
GLENN PEASE
?
Precedent study sep 2016
Precedent study sep 2016Precedent study sep 2016
Precedent study sep 2016
jerryycc
?
骋耻í补+辫补谤补..骋耻í补+辫补谤补..
骋耻í补+辫补谤补..
MaryVG
?
Papa franciscoPapa francisco
Papa francisco
enmy verneiulle
?
Jayers_Portfolio
Jayers_PortfolioJayers_Portfolio
Jayers_Portfolio
Jim Ayers
?
História da ?frica e Afro-Brasileira - Capítulo 9História da ?frica e Afro-Brasileira - Capítulo 9
História da ?frica e Afro-Brasileira - Capítulo 9
NaniFulber
?
використання личинок озерно? жаби Rana ridibunda
використання личинок озерно? жаби Rana ridibunda використання личинок озерно? жаби Rana ridibunda
використання личинок озерно? жаби Rana ridibunda
school67dp
?
Ativ1 4 anailzamxfAtiv1 4 anailzamxf
Ativ1 4 anailzamxf
anailzamxf
?
Las tic’sLas tic’s
Las tic’s
tanyavelasquezlml
?

06 後期勉強会一年の部【加藤】

  • 1. 12章 仮想ファイルシステム この章では、Linux において他のシステム(Windows など)と共存するために必要不可欠 である仮想ファイルシステム(VFS:Virtual File System)について述べられている。 12.1:VFS の役割 VFS は、仮想ファイルシステムスイッチともいわれるカーネル上のソフトウェア(レイ ヤ)、である。要は、カーネル上にある便利な自動翻訳ソフトのようなもの。 ?対応するファイルシステム - ディスクベースのファイルシステム(Ext2 以外にも) - ネットワークファイルシステム(ネット上のファイル) - 特殊ファイルシステム(カーネルを見るとき) 12.1.1:VFS の中身 共通ファイルモデル=UNIX のファイルモデルを反映 一方で、UNIX 系ファイルでないと再構成される。(特に、FAT→ディレクトリが多い) *オブジェクト=データ+メソッド(操作)と定義するとオブジェクト指向型であると考 えられる。C++は効率的でない。 ?構成要素 - スーパーブロックオブジェクト(一個のファイルシステムに対して1つ) それぞれのファイルシステムのメタデータを示す。ファイルシステムに対する情報が格納 される。 - i ノードオブジェクト ファイルの位置やディスクの情報などを含む。 - ファイルオブジェクト ファイルとメモリ間のやりとりした情報を保存。 - d エントリオブジェクト ?仕組み (一例) プロセス→ファイルオブジェクト→d エントリオブジェクト→i ノードオブジェクト→スーパ ブロックオブジェクト+i ノード→ディスクファイル
  • 2. 15 章 通常ファイルへのアクセス 15.1  read()と write()を用いた通常ファイルへアクセスする方法 15.2 メモリマッピング 15.1 ?通常ファイルの読み取りは、ページを基本として行われる。 →カーネルでは常に一度にページのデータ全体を転送 15.2 メモリマッピング メモリマッピング=先頭リニアアドレス、サイズ、アクセス権を示すメモリリージョンの           ページ内のバイトへのアクセスが、通常ファイルの対応するバイトで          の操作に変換されること(カーネル) ” ” ” ”          共有 と プライベート の 2 種類の方法がある。 共有:メモリリージョンが行う全ての操作は、ディス上のファイルを変更。 プライベート:読み取り専用ファイルで適応される。 ?メモリマッピングのデータ構造 =ファイルの i ノード+メモリマッピング用ディスクリプタ+メモリリージョンに割り当 てられた各ページのページディスクリプタ+ファイルオブジェクト ?メモリマッピング メモリの構造は、
  • 3. 17章 Ext2 ファイルシステム 主に、i ノードブロックのディスク領域の確保とデータブロックのディスク領域の確保につ いてのお話。 17.1 Ext2 の紹介 17.2 ディスク上に保存されるデータ構造(by Ext2) 17.3 17.2 で示された構造がどのようにしてメモリ内にコピーされるのか。 17.4 Ext2 をディスクパーティション内に作成する方法。 17.1 Ext2 の紹介 歴史:Minix ファイルシステム→Ext FS→Ext2(→Ext3) 主な効率化の要因?特色 ?ファイルの長さに応じたブロックサイズの選択 ディスクブロック内の使用率の問題が解決。 →たとえファイルサイズが 1 バイトでも、1 ブロック分を消費するので小さいファイルがた くさんあるときはブロックサイズを小さくすればディスクの容量を効率的に使用できる。 +ブロックのフラグメント化(他のファイルに割り当てる) 【フラグメント:本来連続した情報であるファイル?空ブロックがディスク内で分断され た状態。現在はディスクが情報を探す時間の延長を引き起こす原因の一つ】 ?1 つのディスクブロック内にあるファイルに短時間でアクセス可能 ディスクブロック?複数のグループ と分割されている。 (グループ=スーパブロック+グループディスクリプタ+??+i ノード+データブロッ ク:データと i ノードが隣接) ?ファイルの断片化の防止 ファイルサイズが増加しても、先行割り当て(先行予約)によって、ファイルの隣接した位 置のブロックを予約することになっているので問題ない。 ?不変ファイルと追記専用ファイルの実装 スーパーユーザーも従わせる。 ???etc 17.2 ディスク上に保存されるデータ構造(by Ext2) Ext2 パーティションはブートブロックと、いくつものブロックグループによって構成され ている。同じファイルに属すデータブロックは、できるだけ同じブロックグループ内に入れ るようにカーネルがはたらくので、ファイルの断片化はおこりにくくなる。 【ブロックグループの構成】 スーパブロック(コピー)←管理情報 ブロックグループディスクリプタ(コピー)←グループ内の要約(目次)
  • 4. データブロックビットマップ←データブロックが使用中(1)or 空き(0)を示す i ノードビットマップ←i ノードが使用中(1)or 空き(0)を示す 一個以上の i ノードの集合(テーブル) データブロック <ファイルの種類> ?通常ファイル  ほとんどが該当する普通のファイル。  作成時は空であり、データブロックは必要としない。 ?ディレクトリ  ☆Ext2 では、ディレクトリもファイル(ディレクトリエントリ)として扱われる。  構成は ディレクトリエントリ= i ノード番号+ディレクトリエントリ自身の長さ+ファイル名の長さ+ファイルの種類 +ファイル名(常に 4 の倍数になるよう null 文字/0 で調節) *ディレクトリを消す動作の内訳 1.i ノード番号が 1→0 2.ひとつ前のディレクトリエントリの中のディレクトリエントリ自身の長さに         消すディレクトリエントリの長さを加算。 ?シンボリックリンク パス名が 60 バイト以内→データブロック不必要(i ノードに記載されている) パス名が 60 バイト超え→1 つデータブロック必要 ?データファイルを要求しないファイル(デバイスファイル?パイプ?ソケット) →i ノードに記載      17.3 17.2 で示された構造がどのようにしてメモリ内にコピーされるのか。 ほとんどの情報は、ファイルシステムのマウント時に RAM へとコピーされる。 非常に頻繁に更新されるデータ(スーパブロックやグループディスクリプタ)はバッファ キャッシュ内にある。 キャッシュのモードとしては、常にキャッシュ?一定量キャッシュ?動的にキャッシュ? キャッシュされない、がある。(一定量:特定の数のみ、動的:メモリが不足すると順次開 放、キャッシュされない:空きブロック)
  • 5. 17.4 Ext2 をディスクパーティション内に作成する方法。 ディスクパーティションやディスクのフォーマットファイルシステム ≠ファイルシステムの作成 フォーマット=ブロックの読み書きができるようになる ファイルシステムの作成=以前説明されたデータ構造を準備 17.5 Ext2 関数(VFS メソッドに対応した) Ext2 スーパブロック操作 Ext2 i ノード操作 Ext2 ファイル操作 17.6 ディスク領域の管理 ファイルシステムはアクセス時間を向上させるために、ブロックをなるべく連続して保存 しようと試みるが、ブロックはディスクのいろいろなところに散在していることがある。 →ファイルの断片化の防止 ?i ノードの作成【ext2_new_inode()】 成功→i ノードオブジェクトのアドレス 失敗→null(/0)を出力 (i ノードの削減は ext2_free_inode())
  • 6. 17.4 Ext2 をディスクパーティション内に作成する方法。 ディスクパーティションやディスクのフォーマットファイルシステム ≠ファイルシステムの作成 フォーマット=ブロックの読み書きができるようになる ファイルシステムの作成=以前説明されたデータ構造を準備 17.5 Ext2 関数(VFS メソッドに対応した) Ext2 スーパブロック操作 Ext2 i ノード操作 Ext2 ファイル操作 17.6 ディスク領域の管理 ファイルシステムはアクセス時間を向上させるために、ブロックをなるべく連続して保存 しようと試みるが、ブロックはディスクのいろいろなところに散在していることがある。 →ファイルの断片化の防止 ?i ノードの作成【ext2_new_inode()】 成功→i ノードオブジェクトのアドレス 失敗→null(/0)を出力 (i ノードの削減は ext2_free_inode())