开发者

Does linux kernel reference count kernel objects?

开发者 https://www.devze.com 2022-12-21 04:42 出处:网络
If 2 file descriptors were dupped to the same file (i.e. 506 and STDOUT), will inv开发者_JS百科oking close(506) cleanup the object associated by both and render STDOUT unusable? Or does kernel impleme

If 2 file descriptors were dupped to the same file (i.e. 506 and STDOUT), will inv开发者_JS百科oking close(506) cleanup the object associated by both and render STDOUT unusable? Or does kernel implement reference counting for its files?


The kernel implements reference counting, so the kernel object is not closed until all the file handles pointing to it are closed.


Reference counters are widely used inside the kernel to avoid race conditions due to the concurrent allocation and releasing of a resource. A reference counter is just an atomic_t counter associated with a specific resource such as a memory page, a module, or a file. The counter is atomically increased when a kernel control path starts using the resource, and it is decreased when a kernel control path finishes using the resource. When the reference counter becomes zero, the resource is not being used, and it can be released if necessary.

You might care to see this if you want to look through this for an overview of Linux Kernel reference counting implementation.

0

精彩评论

暂无评论...
验证码 换一张
取 消