UNIXに関するいくつかのドキュメントを読んでいますが、次の2つを理解していません。
- カーネルが実行されているプロセスの現在の作業ディレクトリを知ることがなぜ重要ですか?
- inode情報をディレクトリに保存しないのはなぜですか?
答え1
システムはすべてのプロセスの現在のディレクトリを追跡する必要があります。そうしないと、プロセスは何か(ファイルを開くか統計、ディレクトリを変更するなど)に相対パスを使用できないためです。chdir("..")
現在のプロセスを追跡しない場合、これはどういう意味ですか?座席?)。
また、この情報を追跡しないと、カーネルがプロセスが指定されたマウントポイント内にあるかどうかを確認できないという問題もあります。そのため、誤ってプロセスからファイルシステムをアンマウントすると、一貫性のない状態が発生する可能性があります。
2番目の質問は、ハードリンクについて考えてみましょう。 inodeデータがディレクトリ「構造」自体にある場合は、正確かつ安全に実装するのが難しくなります。ディレクトリ構造にinodeへのポインタを持つ方がはるかに簡単なので、与えられたinodeへのリンクを非常に簡単に追加または削除できます。