[[PageNavi(internal22-navi)]]
{{{ comment
h2w-title:プロセスとfileの関係
}}}
= プロセスとfileの関係 = #SECTION03600000000000000000
プロセスが一つファイルをオープンすると以下のようなデータ構造が作られる。
file構造体は、プロセスが行っているファイル操作の情報を管理する。(openモード、ファイルポインタなど)
dentry構造体はファイルの名前とディレクトリやファイルの相互の参照関係を管理する。
inodeはファイル実体を管理する。ファイルのデータブロックの場所、ファイルのオーナやモードなどを管理している。
file構造体はプロセスに依存したデータであり、別のプロセスが同じファイルをopenすると、別途そのプロセス用にfile構造体が用意される。二つあるfile構造体は同じdentry構造体を指す。
linuxでは様々な種類のファイルシステムをサポートしているため、ファイルシステム毎に適切な方法でファイル(inode)をアクセスしなければならない。これらアクセス方法は各種ファイルシステム内に関数テーブルという形で用意されており、各inodeはそのinodeが属するファイルシステム内の関数テーブルを指している。
[[Embed(internal22-images:img31.gif)]]
各file構造体は下図のように各プロセスが保有するファイルディスクリプタテーブルに登録されている。ファイルディスクリプタはこのテーブルのindexである。
[[Embed(internal22-images:img32.gif)]]
各プロセスはファイルシステムに関する情報、カレントディレクトリやumaskを持っているが、一般に同じshellから生まれたコマンドプロセスはこのデータを共有している。
----
{{{ html
<A NAME="CHILD_LINKS"> </A>
}}}
* [internal22-96-ファイル構造体の確保と解放#SECTION03610000000000000000 ファイル構造体の確保と解放]
* [internal22-98-その他、主なファイル構造体操作関数群#SECTION03620000000000000000 その他、主なファイル構造体操作関数群]
* [internal22-99-ファイル構造体の監視#SECTION03630000000000000000 ファイル構造体の監視]
----
''(NIS)HirokazuTakahashi [[BR]]2000年06月11日 (日) 22時29分57秒 JST''1
[[PageNavi(internal22-navi)]]