При изучении Понимание ядра Linux я наткнулся счетчика ссылок в Kobject
структуре и контейнера. Итак, как это помогает сопоставить эти структуры?
Ниже представлен прагр из 3-го издания ULK.Что такое счетчик ссылок в отношении модели драйверов устройств?
Поле kref является структурой типа
k_ref
, состоящей из одного поля refcount. Как следует из названия, это поле является ссылочным счетчиком для kobject, но оно может действовать также как контрольный счетчик для контейнера kobject. Функцииkobject_get()
иkobject_put()
увеличивают и уменьшают соответственно контрольный счетчик; если счетчик достигает нулевого значения, ресурсы, используемые kobject, освобождаются, и выполняется способ освобождения объектаkobj_type
объектаkobject
. Этот метод, который обычно определяется только в том случае, если контейнер kobject был распределен динамически, освобождает сам контейнер.
Аналогичным образом в другом контексте использовался эта контрольная счетчик. Я хочу знать практическое отображение эталонного счетчика.
Читали [ kref documentation] (https://www.kernel.org/doc/Documentation/kref.txt)? Это выглядит хорошо для введения в счетчик ссылок, используемый в ядре. – Tsyvarev
Спасибо, я новичок в Linux, я просто переживаю это. –