为内核对象标准化引用计数
作者: klange创建于 2026年5月1日更新于 2026年5月1日
标签kernel
我们至少对以下对象采用某种引用计数方式: - `fs_node_t` ("open" 增加引用计数, "close" 减少引用计数) - 页目录 - 文件描述符表 (`->refs`) - 在 x86-64 上, CoW 的单个内存页。 只有文件节点才真正拥有管理引用计数的适当接口。 我们应该为这种类型的引用计数内核对象构建一个标准接口,并将其扩展到其他内核对象,特别是进程,它们通过非常懒散的释放,某种方式逃脱了任何类型的引用计数。 Linux 将对引用计数对象的操作称为 "get" 和 "put",这 ... 我不打算尝试用专业的语言来表达: 我认为 "put" 是一个愚蠢的名字,用来表示 "减少引用计数"。 由于我们的文件节点是唯一拥有真正接口的对象,因此我们可能应该围绕它进行标准化: 打开对这些对象的引用,然后在完成后关闭这些引用。 所有希望处理引用计数对象的操作,必须要么在一开始创建该对象,要么能够通过现有的打开引用以一种锁定安全的方式获取该对象。 进程和文件是一些较为棘手的情况,因为我们希望在没有其他用户时可以丢弃它们,但这些对象需要能够从不在现有引用上下文的外部发现,因此,针对基于查找的检索而对增量引用进行锁定管理必须非常谨慎地实现。
内容来源: klange/toaruos