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?

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top