Подсчитывает ли ссылка на ядро ​​linux объекты ядра? - PullRequest
6 голосов
/ 26 февраля 2010

Если 2 файловых дескриптора были переданы в один и тот же файл (т.е. 506 и STDOUT), вызовет ли close(506) очистку объекта, связанного с обоими, и сделает STDOUT непригодным для использования? Или ядро ​​осуществляет подсчет ссылок для своих файлов?

Ответы [ 2 ]

7 голосов
/ 26 февраля 2010

В ядре реализован подсчет ссылок, поэтому объект ядра не закрывается, пока не будут закрыты все указатели файла, указывающие на него.

5 голосов
/ 26 февраля 2010

Счетчики ссылок широко используются в ядре, чтобы избежать состояния гонки из-за одновременного выделения и освобождения ресурса. Счетчик ссылок - это просто счетчик atomic_t, связанный с конкретным ресурсом, таким как страница памяти, модуль или файл. Счетчик атомарно увеличивается, когда путь управления ядром начинает использовать ресурс, и уменьшается, когда путь управления ядром завершает использование ресурса. Когда счетчик ссылок становится равным нулю, ресурс не используется, и его можно разблокировать при необходимости.

Возможно, вам захочется увидеть это, если вы хотите просмотреть this для обзора реализации подсчета ссылок в ядре Linux.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...