我正在阅读一些有关 UNIX 的文档,但我不明白两件事:
- 为什么内核了解正在运行的进程的当前工作目录很重要?
- 为什么不将inode信息保留在目录中?
答案1
系统需要跟踪所有进程的当前目录,因为否则进程无法使用任何内容的相对路径(包括例如文件打开或统计,以及更改目录 -chdir("..")
如果您不跟踪当前进程,这意味着什么坐?)。
还有一个问题是,如果不跟踪该信息,内核将无法检查进程是否位于给定的安装点内。因此,您可能会意外地从进程下卸载文件系统,从而导致状态不一致。
对于第二个问题:考虑一下硬链接。如果索引节点数据位于目录“结构”本身中,那么正确且安全地实现它们会更加困难。在目录结构中拥有指向 inode 的指针要容易得多,这使得添加或删除到给定 inode 的链接变得非常简单。