Perché a volte ho bisogno di riavviare il mio computer dopo aver installato un nuovo software e altre volte no?
C'è qualche motivo per cui ha bisogno di questo riavvio o perché non è sempre in un modo o nell'altro?
Perché a volte ho bisogno di riavviare il mio computer dopo aver installato un nuovo software e altre volte no?
C'è qualche motivo per cui ha bisogno di questo riavvio o perché non è sempre in un modo o nell'altro?
Risposte:
Dipende.
Se il software da installare influisce su una parte integrante del sistema operativo, è necessario un riavvio. Ad esempio un nuovo kernel per il sistema operativo.
Sui sistemi Windows, viene spesso utilizzato perché gli utenti sono considerati troppo stupidi per utilizzare correttamente i loro computer. Ad esempio, Microsoft pubblica i dettagli su come modificare il "Tipo di nodo" utilizzato per la rete sul proprio sito Web , incluse le istruzioni per "riavviare il computer" quando tutto ciò che è necessario è un riavvio di un servizio di rete come dettagliato qui . Perché noi, poiché gli utenti sono troppo stupidi per riavviare un servizio, ci viene detto di riavviare tutto.
Per alcuni software, sono giunto alla conclusione che si tratta di un'abitudine e spesso non è necessaria anche quando gli viene detto di farlo. Se non penso che un pezzo di software avrebbe dovuto fare qualcosa di importante per il sistema operativo, tendo a non preoccuparmi e non ho riscontrato alcun problema (e se ci fossero problemi sarebbero facili da risolvere).
A volte un software farà una modifica che non può entrare in vigore mentre il computer è in uso. Alcuni motivi potrebbero essere: un file è in uso, la modifica può avvenire solo durante l'avvio del computer, potrebbe esserci un problema di sicurezza che può essere fatto solo prima che il computer abbia la sua rete attiva, forse lo scanner antivirus interferirebbe con il installare.
A volte, è solo una programmazione sciatta da parte degli sviluppatori.
Sono sicuro che ce ne sono molti altri.
Spesso quando si installa un nuovo software, una dll (file) utilizzata da molti altri pacchetti software deve essere aggiornata a una nuova versione. (Questo è molto più probabile quando si aggiorna un'applicazione che hai già installato.)
Se la dll viene utilizzata da un'applicazione in esecuzione, parte di essa verrà caricata in memoria e il resto verrà letto dal disco quando è necessario. Pertanto la dll verrà bloccata sul disco. (Pensa ai problemi se non fosse bloccato!)
Una DLL bloccata non può essere aggiornata, quindi il programma di installazione chiederà a Windows di sostituire la DLL con la nuova versione al successivo riavvio della macchina. Da qui la necessità di un riavvio.
Alcuni programmi di installazione migliori ti diranno quali applicazioni dovrebbero essere chiuse prima di eseguire il programma di installazione, in modo da consentire l'aggiornamento della DLL senza un riavvio. Tuttavia, ciò rende l'interfaccia utente dell'installatore più complessa e porta a più chiamate di supporto.
Un programma di installazione per un'applicazione può anche far sì che l'applicazione salvi il suo stato, chiuda da sola, quindi si riavvia dopo l'aggiornamento della DLL. Questo può essere fatto solo se la DLL viene utilizzata da una singola applicazione. La maggior parte delle applicazioni che si aggiornano da sole lo fanno - questo dovrebbe essere la norma per le applicazioni del mercato di massa quando ci sono molti utenti.
Tutto quanto sopra può portare a una logica complessa che è difficile da testare. Il test dei programmi di installazione richiede molto tempo, poiché è necessario provare a indovinare ogni stato in cui si trova la macchina di un utente. Pertanto è spesso meglio che un programma di installazione sia semplice e funzioni sempre, anche se porta a qualche altro riavvio per l'utente .
Non accade spesso che un utente decida di acquistare un'applicazione diversa a causa del riavvio del programma di installazione, quindi il venditore spende il tempo (denaro) a lavorare su ciò che è necessario per convincere l'utente ad acquistare le proprie applicazioni.
Con quale frequenza hai riscontrato un problema dopo l'installazione di un'applicazione risolta automaticamente al riavvio? Pensa ai costi di supporto di molti utenti che telefonano con problemi risolti solo con un riavvio. Può diventare rapidamente molto allettante come sviluppatore convincere l'utente a fare un riavvio dopo aver installato il software anche quando pensi che non sia necessario.
La maggior parte dei sistemi operativi e dei software sono stati scritti nei giorni in cui lo spazio su disco e la memoria costavano un sacco di soldi. Ora c'è una mossa per le applicazioni di avere una copia privata di tutte le DLL che usano, facendo quindi l'aggiornamento della gomma, ma usando più spazio di archiviazione.
Sui server questo viene fatto con "contenitori", tuttavia i "contenitori" non funzionano bene per il software desktop, poiché si desidera poter accedere ai dati salvati da un'applicazione con un'altra applicazione. (Altrimenti basta usare un iPhone.)
Il motivo è perché se non lo fai: andrai in crash. Da Raymond Chen :
Anche se si sostituisce un file in uso, potrebbe esserci ancora del codice nel sistema che desidera utilizzare la versione precedente. Ad esempio, supponiamo di avere due file che lavorano insieme:
- A.dll
- B.dll
Emetti una patch che aggiorna entrambi i file, ma
A.dll
è in uso. Nessun problema. Li sostituisci semplicemente entrambi. Di conseguenza, i programmi che stavano ancora utilizzandoA.dll
continuano a utilizzare la versione precedente, ma i nuovi programmi useranno quella nuova. E tutti i programmi ottengono la nuova versione diB.dll
.Ora un programma che utilizzava il vecchio
A.dll
decide di richiamare una funzione. Si aspetta naturalmente la versione precedente diB.dll
, ma ottiene invece la nuova versione. A seconda del tipo di modifica apportataB.dll
, questa chiamata potrebbe funzionare o potrebbe arrestarsi in modo anomalo. Entrambe le DLL presuppongono che il suo partner provenga dallo stesso set abbinato.
Ad essere sinceri, è meno lavoro (e quindi meno $$) da parte degli sviluppatori software supporre che gli aggiornamenti comporteranno sempre un riavvio. Questa è probabilmente una decisione tanto dei contatori di bean quanto degli sviluppatori.
In definitiva, ci sono pochissimi aggiornamenti che, in un mondo ideale, non potrebbero essere eseguiti senza riavvio, ma richiedono molta pre-pianificazione e ci sono alcuni rischi, data l'ampia varietà di possibili configurazioni che un sistema potrebbe avere.
Ha a che fare con il fatto che è molto difficile cambiare il codice mentre è in esecuzione senza causare alcuni problemi importanti. La soluzione: interrompi tutto prima di modificare il codice, in questo modo puoi essere sicuro che nulla è in esecuzione. È un hack di forza bruta che è in gran parte inutile molte volte che è presumibilmente richiesto, ma può essere assolutamente necessario, specialmente se ti capita di aggiornare un codice particolarmente importante. In realtà esiste un'intera azienda specializzata nell'aggiornamento che NON richiede un riavvio per questo codice particolarmente importante. Il modo in cui lo fanno è in questo documento http://www.ksplice.com/paper .
È necessario riavviare quando vengono modificati importanti file di sistema per Windows, poiché Windows non consente di modificare questi file mentre sono in uso. Quindi la maggior parte degli aggiornamenti da Windows Update richiede un riavvio, così come i programmi che si integrano in Windows (come l'antivirus). Fino al riavvio, Windows non può eseguire gli ultimi passaggi necessari per "installare" il programma.
È possibile confrontare questo con Linux, che raramente richiede il riavvio. Anche quando ti viene chiesto di riavviare, di solito devi solo disconnetterti e riconnetterti. Questo perché un tipico ambiente Linux è composto da molti programmi separati che lavorano insieme per creare un sistema operativo completo. Se un file importante viene modificato durante un'installazione, in genere nella migliore delle ipotesi è necessario solo riavviare il programma specifico che utilizza il file.