Perché è necessario un riavvio solo su alcuni aggiornamenti?

17

Perché Ubuntu non richiede il riavvio di più aggiornamenti? So che per gli aggiornamenti del kernel e cose come i driver video, non può caricare le modifiche senza un riavvio. Ma sono curioso di ulteriori aggiornamenti di base di pacchetti piuttosto fondamentali che spesso non richiedono riavvii. Cose come Telepathy, glibc, gtk, ecc. Perché i pacchetti come questo richiedono un riavvio per essere aggiornati? La nuova versione è effettivamente in esecuzione subito dopo un aggiornamento?

Un altro esempio potrebbe essere Gwibber. Recentemente ho ricevuto e aggiornato su gwibber tramite Update Manager mentre gwibber era in esecuzione. L'aggiornamento è stato completato correttamente. Gwibber sarebbe in esecuzione la nuova versione senza riavviarla manualmente? Ed è lo stesso per altri pacchetti? (So ​​che alcuni come mysql e apache si riavviano automaticamente su un aggiornamento). Per i pacchetti che non si riavviano automaticamente, non può trattarsi di un problema di sicurezza per la correzione della sicurezza?

Questo succede perché eseguo OS X da circa una settimana e quasi ogni aggiornamento richiede un riavvio anche se non è collegato al kernel / driver video (per quanto ne so io - non ti danno un molte informazioni). Un mio amico ha detto che le forze Apple si riavviano sulla maggior parte degli aggiornamenti "nel caso in cui" sarebbe strano se non si riavvii. Windows è il peggiore perché quasi ogni installazione / disinstallazione o aggiornamento richiede un riavvio (spesso costringendo gli arresti a richiedere un molto tempo). Questo potrebbe essere un po 'ampio per questo locale, ma perché i diversi sistemi operativi gestiscono questo in modo così diverso? O, più specifico di Ubuntu: perché Ubuntu non segue una politica di riavvio più rigida?

    
posta gregghz 24.04.2011 - 07:22

1 risposta

23

Ogni volta che apri o esegui un file in Windows, Windows blocca il file in posizione (questa è una semplificazione, ma in genere vera). Potresti aver riscontrato quegli errori fastidiosi in cui non è possibile eliminare un file perché un altro processo ha un blocco esclusivo su di esso. Questo è il motivo per cui ogni volta che Windows deve aggiornarsi è necessario un riavvio perché abbia effetto. Windows accoderà le attività di sostituzione e cancellazione dei file all'avvio successivo (quando nulla ha un blocco su nulla).

D'altra parte, Linux ha un meccanismo in cui non è il file che è bloccato ma i dati sottostanti sul disco che è. Questo può sembrare una banale differenziazione, ma significa che il record del file nel sommario del file system può essere cancellato senza disturbare nessun programma che abbia già aperto il file. Quindi puoi cancellare un file mentre è ancora in esecuzione o in altro modo in uso e continuerà a esistere su disco purché alcuni processi abbiano un handle aperto per esso anche se la sua voce nella tabella file è scomparsa. Ciò consente a Linux di sostituire completamente un programma mentre è ancora in esecuzione e quindi semplicemente riavviare il programma o semplicemente attendere che il processo esca naturalmente. Una volta che la vecchia istanza viene uccisa, i vecchi file non esisteranno più e i nuovi file avranno preso la residenza nelle loro voci nella tabella dei file.

Quindi, finché un determinato file non è speciale in qualche modo (come, per esempio, il file di immagine del kernel oi file che appartengono a sistemi di basso livello simili), l'updater può di solito aggiornarsi sul posto in questo modo. Sono sicuro che ci sono casi speciali e situazioni in cui questa non sarebbe una buona idea, ma per la maggior parte dei casi va bene.

Per quanto riguarda il motivo per cui OS X lo fa, quella teoria "just in case" sembra plausibile.

    
risposta data Andrew Lambert 24.04.2011 - 10:50

Leggi altre domande sui tag