Por que preciso reiniciar o computador após instalar o novo software?

37

Por que às vezes preciso reiniciar meu computador após instalar um novo software e outras vezes não?

Existe alguma razão pela qual ele precisa dessa reinicialização ou porque nem sempre é de um jeito ou de outro?

    
por random 03.08.2010 / 22:16

7 respostas

37

Depende.

Se o software que estiver sendo instalado afetar uma parte integral do sistema operacional, será necessário reiniciar. Por exemplo, um novo kernel para o sistema operacional.

Nos sistemas Windows, ele é usado com frequência porque os usuários são considerados burros demais para usar seus computadores adequadamente. Como exemplo, a Microsoft publica detalhes sobre como alterar o "Tipo de Nó" usado para redes em seu site , incluindo as instruções para "reiniciar o computador" quando tudo o que é necessário é uma reinicialização de um serviço de rede, conforme detalhado aqui . Porque nós, como usuários são muito estúpidos para reiniciar um serviço, somos informados para reiniciar tudo.

Para alguns softwares, cheguei à conclusão de que é um hábito e muitas vezes não é necessário, mesmo quando solicitado. Se eu não acho que um software deveria ter feito algo importante para o sistema operacional, eu costumo não me incomodar e não tive nenhum problema (e, se houvesse problemas, eles seriam fáceis de resolver).

    
por 03.08.2010 / 22:40
14

Às vezes, um software faz uma alteração que não pode entrar em vigor enquanto o computador é usado. Algumas razões podem ser - um arquivo está em uso, a alteração só pode ocorrer durante a inicialização do computador, pode haver um problema de segurança que só pode ser feito antes que o computador tenha sua rede ativa, talvez o antivírus interfira no instalar.

Às vezes, é apenas uma programação desleixada pelos desenvolvedores.

Tenho certeza de que há muito mais.

    
por 03.08.2010 / 22:31
13

Geralmente, quando você instala um novo software, uma dll (arquivo) usada por muitos outros pacotes de software precisa ser atualizada para uma nova versão. (É muito mais provável que isso aconteça ao atualizar um aplicativo que você já instalou.)

Se a dll estiver sendo usada por um aplicativo em execução, parte dela será carregada na memória e o restante será lido do disco quando for necessário. Portanto, a dll será bloqueada no disco. (Pense nos problemas se não estiver trancado!)

Uma DLL bloqueada não pode ser atualizada, portanto, o instalador pedirá ao windows para substituir a DLL pela nova versão na próxima vez que a máquina for reiniciada. Daí a necessidade de um reinício.

Alguns instaladores melhores informam os aplicativos que devem ser encerrados antes de executar o instalador, permitindo que a DLL seja atualizada sem reiniciar. No entanto, isso torna a interface do usuário do instalador mais complexa e leva a mais chamadas de suporte.

Um instalador de um aplicativo também pode fazer o aplicativo salvar seu estado, desligá-lo e reinicializá-lo depois que a DLL for atualizada. Isso só pode ser feito se a DLL for usada por um único aplicativo. A maioria dos aplicativos de atualização automática faz isso - essa deve ser a norma para aplicativos de mercado de massa quando há muitos usuários.

Todos os itens acima podem levar a uma lógica complexa que é difícil de testar. Os instaladores de teste demoram muito tempo, pois você precisa tentar adivinhar cada estado em que a máquina de um usuário pode estar. Por isso, geralmente é melhor que um instalador seja simples e funcione sempre, mesmo que leve a mais algumas reinicializações para o usuário. .

Não é sempre que um usuário decide comprar um aplicativo diferente devido à reinicialização do instalador, portanto, o vendedor gasta o tempo (dinheiro) trabalhando no que é necessário para fazer com que o usuário compre seus aplicativos.

Com que frequência você teve um problema depois de instalar um aplicativo que se classificou quando você fez uma reinicialização? Pense nos custos de suporte de muitos usuários que estão resolvendo problemas resolvidos apenas com a reinicialização. Ele pode rapidamente tornar-se muito tentador como desenvolvedor para sempre fazer com que o usuário faça uma reinicialização após instalar seu software, mesmo quando você acha que não é necessário.

----------

A maioria dos sistemas operacionais e softwares foram escritos nos dias em que o espaço em disco e a memória custam um lote de dinheiro. Agora existe um movimento para que os aplicativos tenham uma cópia privada de todas as DLLs que usam, portanto, fazendo upgrade de borracha, mas usando mais espaço de armazenamento.

Nos servidores isso está sendo feito com "containers", no entanto, "containers" não funcionam bem para software de desktop, já que você deseja poder acessar os dados salvos por um aplicativo com outra aplicação. (Caso contrário, basta usar um iPhone.)

    
por 04.08.2010 / 11:27
7

A razão é porque se você não fizer isso: você irá falhar. De Raymond Chen :

Even if you replace a file that is in use, there may still be code in the system that wants to use the old version. For example, suppose you have two files which work together:

  • A.dll
  • B.dll

You issue a patch that updates both of the files, but A.dll is in use. No problem. You simply replace both of them. As a result, programs that were still using A.dll keep using the old version, but new programs will use the new one. And all programs get the new version of B.dll.

Now a program that was using the old A.dll decides to call a function in. It naturally expects the old version of B.dll, but instead it gets the new version. Depending on what sort of change you made to B.dll, this call may work—or it may crash. Both DLLs assume that its partner comes from the same matched set.

    
por 15.06.2012 / 04:13
2

Para ser completamente honesto, é menos trabalhoso (e portanto menos $$) por parte dos desenvolvedores de software assumir que as atualizações sempre resultarão em uma reinicialização. Esta é provavelmente uma decisão dos contadores de feixes tanto quanto dos desenvolvedores.

Em última análise, existem muito poucas atualizações que não poderiam, em um mundo ideal, ser feitas sem reinicialização, mas são necessários muitos pré-planejamentos, e há alguns riscos, dada a grande variedade de configurações possíveis que um sistema pode tem.

    
por 11.01.2013 / 18:09
-1

É necessário que você reinicie quando arquivos de sistema importantes do Windows estão sendo modificados, porque o Windows não permite que esses arquivos sejam modificados enquanto estão em uso. Portanto, a maioria das atualizações do Windows Update exige uma reinicialização, assim como os programas que se integram ao Windows (como antivírus). Até você reiniciar, o Windows não pode executar os últimos passos necessários para "instalar" o programa.

Você pode comparar isso com o Linux, que raramente exige que você reinicie. Mesmo quando você é solicitado a reinicializar, geralmente é necessário efetuar logout e recuar. Isso ocorre porque um ambiente típico do Linux é composto de muitos programas separados diferentes que trabalham juntos para criar um SO completo. Se um arquivo importante é modificado durante uma instalação, você normalmente precisa, na melhor das hipóteses, apenas reiniciar o programa específico que usa o arquivo.

    
por 04.08.2010 / 02:37
-1

Tem a ver com o fato de que é muito difícil alterar o código enquanto ele está sendo executado sem causar alguns problemas maiores. A solução: pare tudo antes de alterar o código, assim você pode ter certeza de que nada está sendo executado. É um ataque de força bruta que é em grande parte desnecessário muitas vezes que é supostamente necessário, mas pode ser absolutamente necessário, especialmente se você estiver atualizando um código particularmente importante. Na verdade, existe uma empresa inteira especializada em fazer atualizações que NÃO exigem uma reinicialização para esse código particularmente importante. A maneira como eles fazem isso é neste documento link .

    
por 04.08.2010 / 16:00