Il concetto di vnode differisce in grado a seconda del sistema in cui ci si trova, ognuno ha semplicemente preso il nome e l'ha eseguito.
Sotto Linux e Unix, è possibile considerare l'astrazione come segue. Supponiamo che esiste
f.tmp
Volete f a restare mentre il programma è in esecuzione, in quanto si sta accedendo, ma se il programma termina o si blocca, si vuole essere sicuri che se ne va.
È possibile farlo aprendo f, e quindi unlink()
esso. Manterrai comunque un riferimento a f, anche se il suo inode ora ha 0 voci di directory, e quindi è stato contrassegnato come libero. Il sistema operativo conserva ancora il punto in cui il file è stato avviato e il suo stato di allocazione, fino alla fine del programma. Questa "virtualizzazione" dell'inode che non esiste più è un vnode.
Un'altra situazione comune per questo è quando stai leggendo una risorsa che scompare da sotto di te. Supponi di guardare un film mentre è in streaming su una posizione temporanea.Quando il film è completamente scaricato, verrà riposizionato su un altro volume per l'archiviazione. In qualche modo puoi continuare a guardare e sfogliare il film finché rimane aperto. In questo caso, anche se non ci sono ancora collegamenti, dato che esiste un vnode, questo inode non può ancora essere pulito.
Si prega di provare a trovare la risposta da soli nei codici sorgente di un sistema operativo utilizzando il termine 'inode', ad es. https://github.com/torvalds/linux. Altrimenti la tua domanda presenta uno sforzo di ricerca molto piccolo e sarà probabilmente downvoted perché non è una domanda pratica di codifica. Sembra più una domanda per i compiti di blah blah – xmojmr
Personalmente non sono d'accordo. Mentre sì, potrebbe avere senso eseguire tutte le ricerche e pori sulle pagine wikipedia e man devi anche rendersi conto che lo stackoverflow è una risorsa simile usata in modo che le stesse informazioni possano essere condensate in un formato più comprensibile. Dato che queste domande non esistono altrove, penso che siano decisamente valide. – Greg