web-dev-qa-db-fra.com

Pourquoi ai-je besoin de démarrer l'ordinateur après l'installation du nouveau logiciel?

Pourquoi est-ce que parfois je dois redémarrer mon ordinateur après avoir installé un nouveau logiciel et d'autres fois non?

Y a-t-il une raison pour laquelle il a besoin de ce redémarrage ou pourquoi ce n'est pas toujours dans un sens ou dans l'autre?

38
lindows

Ça dépend.

Si le logiciel en cours d'installation affecte une partie intégrante du système d'exploitation, un redémarrage est nécessaire. Par exemple, un nouveau noyau pour le système d'exploitation.

Sur les systèmes Windows, il est souvent utilisé car les utilisateurs sont considérés trop stupides pour utiliser leurs ordinateurs correctement. Par exemple, Microsoft publie des détails sur la façon de changer le "type de nœud" utilisé pour la mise en réseau sur son site Web , y compris l'instruction de "redémarrage de l'ordinateur". lorsque tout ce qui est requis est un redémarrage d'un service réseau, comme détaillé ici . Parce que nous, les utilisateurs sont trop stupides pour redémarrer un service, on nous dit de tout redémarrer.

Pour certains logiciels, je suis parvenu à la conclusion que c’était une habitude et qu’elle n’était souvent pas nécessaire, même quand on le lui demandait. Si je ne pense pas qu'un logiciel aurait dû faire quelque chose de majeur pour le système d'exploitation, je n'ai pas tendance à m'embêter et je n'ai rencontré aucun problème (et s'il y en avait, il serait facile à résoudre).

38
Neal

Parfois, un logiciel apportera un changement qui ne pourra pas entrer en vigueur tant que l'ordinateur est utilisé. Certaines raisons peuvent être - un fichier est en cours d'utilisation, la modification ne peut intervenir que pendant le démarrage de l'ordinateur, il peut y avoir un problème de sécurité qui ne peut être résolu que lorsque l'ordinateur est en réseau, le scanner de virus pourrait interférer avec le installer.

Parfois, il ne s'agit que d'une programmation bâclée par les développeurs.

Je suis sûr qu'il y en a beaucoup plus.

15
bryan

Souvent, lorsque vous installez un nouveau logiciel, une dll (fichier) utilisée par de nombreux autres progiciels doit être mise à niveau vers une nouvelle version. (Cela sera probablement plus le cas lors de la mise à niveau d'une application que vous avez déjà installée.)

Si la dll est utilisée par une application en cours d'exécution, une partie de celle-ci sera chargée en mémoire et le reste sera lu à partir du disque, le cas échéant. Par conséquent, la DLL sera verrouillée sur le disque. (Pensez aux problèmes si ce n'était pas verrouillé!)

Un DLL qui est verrouillé ne peut pas être mis à jour. Le programme d'installation demandera donc à Windows de remplacer le DLL par la nouvelle version lors du prochain redémarrage de la machine. D'où la nécessité d'un redémarrage.

Certains meilleurs installateurs vous indiqueront les applications à fermer avant d'exécuter le programme d'installation, laissant ainsi la DLL sans mise à jour sans redémarrage. Cependant, cela rend l'interface utilisateur du programme d'installation plus complexe et conduit à davantage d'appels au support.

Un programme d’installation d’une application peut également faire en sorte que l’application enregistre son état, s’arrête elle-même, puis redémarre une fois la DLL mise à jour. Cela ne peut être fait que si la DLL est utilisée par une seule application. La plupart des applications à mise à jour automatique le font - ceci devrait être la norme pour les applications de marché de masse lorsqu'il y a beaucoup d'utilisateurs.

Tout ce qui précède peut conduire à une logique complexe, difficile à tester. Le test des installateurs prend beaucoup de temps, car vous devez essayer de deviner tous les états possibles de la machine d'un utilisateur. Il est donc souvent préférable qu'un installateur soit simple et fonctionne toujours, même si cela entraîne quelques redémarrages supplémentaires pour l'utilisateur. .

Il est rare qu'un utilisateur décide d'acheter une application différente en raison du redémarrage de l'installateur. Le vendeur consacre donc beaucoup de temps (argent) à ce qui est nécessaire pour que l'utilisateur achète ses applications (

Combien de fois avez-vous eu un problème après avoir installé une application qui s'est résolue tout seul lors du redémarrage? Pensez aux coûts de support de nombreux utilisateurs téléphonant avec des problèmes résolus juste après un redémarrage. En tant que développeur, le fait de toujours demander à l’utilisateur de redémarrer après l’installation de votre logiciel peut rapidement devenir une tâche très ardue, même si vous pensez que cela n’est pas nécessaire.

----------

La plupart des systèmes d'exploitation et des logiciels ont été écrits à l'époque où l'espace disque et la mémoire coûtaient beaucoup d'argent . Les applications doivent maintenant disposer d'une copie privée de toutes les dll qu'elles utilisent, ce qui rend la mise à niveau plus efficace, mais utilise davantage d'espace de stockage.

Sur les serveurs, cela se fait avec des "conteneurs", cependant, les "conteneurs" ne fonctionnent pas bien pour les logiciels bureautiques, car vous souhaitez pouvoir accéder aux données sauvegardées par une application avec une autre application. (Sinon, utilisez simplement un iPhone.)

13
Ian Ringrose

La raison en est que si vous ne le faites pas: vous allez tomber en panne. De Raymond Chen :

Même si vous remplacez un fichier en cours d'utilisation, il se peut qu'il reste du code dans le système qui souhaite utiliser l'ancienne version. Par exemple, supposons que vous ayez deux fichiers qui fonctionnent ensemble:

  • A.dll
  • B.dll

Vous publiez un correctif qui met à jour les deux fichiers, mais A.dll est en cours d'utilisation. Aucun problème. Vous remplacez simplement les deux. En conséquence, les programmes qui utilisaient toujours A.dll continuent à utiliser l'ancienne version, mais les nouveaux programmes utiliseront la nouvelle. Et tous les programmes obtiennent la nouvelle version de B.dll.

Maintenant, un programme qui utilisait l'ancien A.dll décide d'appeler une fonction. Il attend naturellement l'ancienne version de B.dll, mais obtient plutôt la nouvelle version. En fonction du type de modification que vous avez apporté à B.dll, cet appel peut fonctionner ou échouer. Les deux DLL supposent que son partenaire provient du même ensemble mis en correspondance.

7
Ian Boyd

Pour être tout à fait honnête, les développeurs de logiciels ont moins de travail (et par conséquent moins de dollars) à supposer que les mises à jour entraîneront toujours un redémarrage. C’est probablement autant une décision des compteurs de haricots que des développeurs.

En fin de compte, très peu de mises à jour ne pourraient pas être effectuées sans redémarrage dans un monde idéal, mais il faut beaucoup de planification préalable et des risques, compte tenu de la grande variété de configurations possibles d'un système.

2
Daniel R Hicks

Cela tient au fait qu'il est très difficile de changer de code car il est exécuté sans causer de problèmes majeurs. La solution: arrêtez tout avant de changer le code, vous pouvez ainsi être sûr que rien ne fonctionne. C'est un hack de force brute qui est en grande partie inutile la plupart du temps, même si cela est censé être nécessaire, mais cela peut être absolument nécessaire, surtout si vous mettez à jour un code particulièrement important. Il existe en fait une société entière spécialisée dans les mises à jour qui ne nécessitent pas de redémarrage pour ce code particulièrement important. La façon dont ils le font est décrite dans cet article http://www.ksplice.com/paper .

0
Aviendha