web-dev-qa-db-ja.com

カーネルの現在の作業ディレクトリとiノード情報の配置

UNIXに関するドキュメントを読んでいますが、2つのことを理解していません。

  • カーネルが実行中のプロセスの現在の作業ディレクトリを知ることが重要なのはなぜですか?
  • Iノード情報をディレクトリに保存してみませんか?
1
Anth

システムはすべてのプロセスの現在のディレクトリを追跡する必要があります。そうしないと、プロセスは相対パスを何にも使用できません(たとえば、ファイルのオープンや統計、ディレクトリの変更など、chdir("..")はどういう意味ですかプロセスは現在のところ追跡されていませんか?).

その情報を追跡しないと、カーネルがプロセスが特定のマウントポイント内にあるかどうかを確認できないという問題もあります。そのため、プロセスの下から誤ってファイルシステムをアンマウントし、一貫性のない状態につながる可能性があります。

2番目の質問:ハードリンクについて考えてください。 iノードデータがディレクトリ「構造」自体にある場合、正しく安全に実装するのははるかに困難です。ディレクトリ構造内にiノードへのポインタを本質的に持つことがはるかに簡単になり、特定のiノードへのリンクの追加または削除が非常に簡単になります。

1
Mat