Fa riferimento kernel Linux oggetti del kernel conteggio?
Domanda
Se 2 descrittori di file sono stati dupped allo stesso file (cioè 506
e STDOUT
), si invocando close(506)
pulitura dell'oggetto associato da entrambi e rendere inutilizzabile STDOUT
? O fa kernel implementare riferimento conteggio per i suoi file?
Soluzione
Il kernel implementa il conteggio dei riferimenti, quindi l'oggetto del kernel non è chiuso fino a quando tutti i file maniglie che punta ad esso sono chiusi.
Altri suggerimenti
contatori di riferimento sono ampiamente utilizzati all'interno del kernel per evitare condizioni di gara a causa della concomitante di assegnazione e rilascio di una risorsa. Un contatore di riferimento è solo un contatore atomic_t associato a una risorsa specifica come ad esempio una pagina di memoria, un modulo o un file. Il contatore viene incrementato atomicamente quando un percorso di controllo kernel inizia utilizzando la risorsa, e diminuisce quando un percorso di controllo kernel termina utilizzando la risorsa. Quando il contatore di riferimento diventa zero, non viene utilizzata la risorsa, e può essere eventualmente diseccitato.
Si potrebbe prendersi cura di vedere questo se si vuole guardare attraverso questo per una panoramica di implementazione conteggio dei riferimenti Linux kernel.