Come può Ubuntu aggiornare le applicazioni in esecuzione senza doverle chiudere mentre Windows non può?


11

Esecuzione di Ubuntu 12.04 a 64 bit.

Per lo più aggiorno tramite terminale usando sudo apt-get update && sudo apt-get upgrade.

Non capisco questo: avere Firefox o qualsiasi altra applicazione integrata in esecuzione attivamente insieme al processo di aggiornamento in esecuzione contemporaneamente nel terminale, che sta aggiornando Firefox a una versione più recente. Sono consapevole che il riavvio di Firefox comporterà l'apertura di Firefox come versione più recente.

Ad esempio, durante l'aggiornamento in MS Windows 7, chiede di chiudere l'istanza attiva della stessa applicazione (se è attiva) prima dell'aggiornamento.

In che modo Ubuntu sostituisce l'applicazione attiva attiva a una versione più recente senza interferire con la sua istanza attiva?

Cosa succede esattamente nel back-end del processo di aggiornamento in questo caso?

Risposte:


19

Per l'aggiornamento di esempio in MS Windows 7, chiede di chiudere l'istanza attiva della stessa applicazione (se attiva) per l'aggiornamento.

In che modo Ubuntu sostituisce l'applicazione attiva attiva alla versione più recente senza interferire con la sua istanza attiva. [Notato per molti pacchetti]

Proverò a spiegarlo nel modo più semplice possibile. La maggior parte dei filesystem Linux sono leggermente diversi dai filesystem di Windows (NTFS). Fondamentalmente, entrambi contengono essenzialmente una tabella di indici di nomi di file (voci) che punta ai dati effettivi memorizzati sul disco. In NTFS questo è chiamato MFT (tabella dei file master) - potresti aver visto scorrere quel nome se esegui a chkdsk.

Tuttavia, la "leggera differenza" che ho citato è che le tabelle degli indici di Linux, se vuoi, sono composte da due livelli: l'indice e gli inode . Gli inode contengono i metadati del file effettivo, inclusa la sua posizione fisica sul disco; il "nome file" nell'indice è semplicemente un collegamento (rigido) all'inode.

Quando si aggiorna / aggiorna un'applicazione in esecuzione, i file aggiornati vengono scritti su disco, gli inode che puntano ai nuovi dati creati / aggiornati e anche i nomi dei file vengono aggiornati per collegarsi a questi nuovi inode. Tuttavia , per tutti i file che sono già in uso da un'applicazione in esecuzione (ovvero esistono handle di file), i loro nomi di file continueranno a puntare ai vecchi inode (che contengono i vecchi dati) fino a quando gli handle di file non verranno chiusi. Questo di solito accade quando si esce dall'applicazione, o per alcuni file di sistema, al riavvio. A questo punto, i vecchi dati vengono effettivamente rimossi dal disco.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.