linux内核引用是否计算内核对象?

时间:2010-02-26 20:45:21

标签: c linux

如果2个文件描述符被重复到同一个文件(即506STDOUT),是否会调用close(506)清除两者关联的对象并使STDOUT无法使用?或者内核是否为其文件实现引用计数?

2 个答案:

答案 0 :(得分:8)

内核实现引用计数,因此在指向它的所有文件句柄都关闭之前,内核对象不会关闭。

答案 1 :(得分:5)

内核中广泛使用引用计数器,以避免由于并发分配和释放资源而导致的竞争条件。引用计数器只是与特定资源(例如存储器页面,模块或文件)相关联的atomic_t计数器。当内核控制路径开始使用资源时,计数器会原子地增加,当内核控制路径完成使用资源时,计数器会减少。当引用计数器变为零时,资源未被使用,并且可以在必要时释放它。

如果您想通过this查看Linux内核引用计数实现的概述,您可能会看到这一点。