Hat Linux-Kernel Referenzzählwert Kernel-Objekte?
Frage
2 Wenn Datei-Deskriptoren in derselben Datei dupped wurden (d.h. 506
und STDOUT
) wird Aufruf close(506)
cleanup des Objekts durch beide zugeordneten und rendern STDOUT
unbrauchbar? Oder hat Kernel Referenzzählung für seine Dateien zu implementieren?
Lösung
Die Kernel implementiert Referenzzählung, so dass das Kernel-Objekt nicht, bis alle Dateihandles geschlossen auf sie zeigen geschlossen sind.
Andere Tipps
Referenzzähler sind weit verbreitet im Kernel verwendet, um Race Conditions aufgrund der gleichzeitigen Zuteilung und Freigabe einer Ressource zu vermeiden. Ein Referenzzähler ist nur ein atomic_t Zähler mit einem bestimmten Betriebsmittel zugeordnet, wie beispielsweise eine Speicherseite, ein Modul oder eine Datei. Der Zähler wird atomar erhöht, wenn ein Kernel-Steuerpfad beginnt die Ressource verwendet wird, und es verringert wird, wenn ein Kernel-Steuerpfad beendet die Ressource verwenden. Wenn der Referenzzähler Null wird, wird die Ressource nicht verwendet wird, und es kann bei Bedarf freigegeben werden.
Sie können kümmern, das zu sehen, wenn Sie einen href schauen durch <= „http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2007/n2167.pdf“ rel = "noreferrer"> diese für einen Überblick über Linux Kernel Referenzzählung Umsetzung.