2016-03-20 4 views
0

ウィキは言うあたりのプロセスによって維持ファイルディスクリプタ・テーブル・自己であるカーネルによって維持プロセスごとのファイル記述子テーブルへの伝統的なUnixの実装、ファイルディスクリプタインデックスで

、そのターンの指標でへファイルテーブルと呼ばれる、すべてのプロセスによって開かれたファイルのシステム全体のテーブル。

あなたではなく、プロセスごとのオープンシステムコールを行う場合、またはカーネルだけ、それはまた、呼び出し先プロセスのためのFDテーブルのようなものを作成する FDを返却していますか?

システム全体でfdは一意ですか?ファイルを開いたり書き込んだりすると、何が起こるのだろうかと私は本当に不思議です。

+0

Linuxはオープンソースです。見に行ってください。 –

+1

私はその質問を理解していません。 – user3344003

答えて

0

これを理解するには、ファイル、パイプ、またはデバイスファイルを開くときに、それらにすべて異なるドライバが関連付けられていると考えることができます。最終的にアクセスされたファイルを更新するためにiノードをリンクするために、カーネルはすべてのファイルに関連するデータ構造を作成します。

また、他のバックグラウンドプロセスが実行されている可能性があります。これらのファイルを管理するために、カーネルはそれらのデータ構造のテーブルを作成し、そのデータ構造行のインデックス番号をテーブルに返します。これをファイル記述子と呼びます。

あなたの質問ごとに、私たちが開いたときに呼び出されるたびに1つの行が作成されます。これは単一プロセスで複数回でも、異なるプロセスでもかまいません。