O que faz o Windows exigir uma reinicialização constante, enquanto o Linux não? [duplicado]

21

Como muitas pessoas, eu corro sistemas duplos no meu computador. Atualizações importantes exigem reinicializações constantes no Windows, embora eu não ache que isso tenha acontecido comigo no Linux. Quais propriedades de cada sistema operacional decidem se isso é ou não possível?

Benjamin Lindqvist
fonte
5
Ainda preciso reiniciar meus sistemas Linux para instalar uma atualização do kernel. Eu sei que existem maneiras de contornar isso, mas não preciso de um tempo de atividade extremo. Embora raramente haja uma atualização do kernel para meus servidores ou instalações de suporte de longo prazo, recebo atualizações ocasionais do kernel nos meus sistemas mais avançados - não vejo muita diferença entre Linux e Windows aqui. No entanto, as atualizações do Linux são muito menos obstrutivas que as atualizações do Windows, pois não transformam a reinicialização em um jogo em espera.
amon
1
Bem, na verdade ... 1. Este é um problema menor com o Windows hoje do que costumava ser. Quando isso acontece, geralmente é porque alguém se esqueceu de fechar um aplicativo que está bloqueando alguns arquivos que o Windows precisa atualizar e, em vez de falhar na instalação, o Windows simplesmente registra essas alterações de arquivo para a próxima inicialização. 2. Uma reinicialização a frio na minha máquina atual executando o Windows 10 leva cerca de 15 segundos, metade do tempo POST.
Robert Harvey
@ Robert-Qual é a sua definição de finalização de inicialização? Chegar à tela de login / área de trabalho não é tão ruim, está aguardando a inicialização de todos esses serviços para que você possa realmente usar o computador que é difícil. Se o seu tempo inclui iniciar os serviços, qual é a sua configuração? É verdade que eu não tenho os melhores e mais recentes, mas tenho computadores decentes o suficiente e meu computador de trabalho leva cerca de 3 minutos e minha casa cerca de 2 1/2 antes de poder começar a trabalhar neles.
Dunk
@ Dunk: Compre um SSD.
Ben Voigt
@ Ben-eu não sou o próximo na fila da minha casa para comprar um computador novo, mas meu filho é. Então, eu vou construí-lo para o Natal e vou ver em primeira mão. No entanto, os relatórios de teste de benchmark que eu li mostram cerca de 50% de melhorias na velocidade, não 1000% como Robert vê nos meus sistemas. 1000% definitivamente vale o aborrecimento de uma atualização. 50% nem tanto.
Dunk

Respostas:

49

É uma consequência das decisões de engenharia.

Em um sistema Linux, é possível excluir um arquivo que ainda está em uso; o sistema de arquivos usa o que é essencialmente uma forma de contagem de referência, e ter o arquivo aberto é simplesmente outra referência a ele. Quando você fechá-lo, o arquivo será limpo. Como consequência disso, é possível substituir o código principal do sistema operacional e os arquivos de dados sem a necessidade de desligá-los e reiniciá-los (também conhecido como reinicialização).

No Windows, a abertura de um arquivo o bloqueia no sistema de arquivos e não pode ser excluído. Isso significa que o código atualmente em execução não pode ser atualizado sem uma reinicialização. Mas isso também significa que você sempre pode saber exatamente qual versão está sendo executada no seu sistema; sob o modelo Linux, é possível receber uma atualização importante do software do sistema, aplicá-la com êxito e ainda não a operacional no sistema, porque a versão antiga e não atualizada ainda está em execução.

É uma troca de engenharia, como a maioria das coisas na computação.

Mason Wheeler
fonte
6
@ Ian Não, você pode reiniciar seus serviços para aplicar as atualizações. Ou, no caso do kernel, você pode usar o ksplice, o kpatch, etc. ou os novos recursos do Linux 4.0.
Nanny
2
@Duplicador, com certeza; Eu sou apenas pessimista sobre a taxa de adoção. Uma equipe de desenvolvimento com a qual trabalho anunciou que não aceitará mais patches, adicionando suporte a recursos opcionais do systemd após um bug no suporte a watchdog baseado em notificação de soquete de notificação suficientemente antigo das versões systemd, resultando em uma nova cópia de seu daemon sendo girado (além dos antigos!) uma vez por segundo.
Charles Duffy
1
@krlmlr: Isso não permite excluir um arquivo aberto. Na documentação : "A função DeleteFile marca um arquivo para exclusão ao fechar. Portanto, a exclusão do arquivo não ocorre até que o último identificador para o arquivo seja fechado" Você ainda pode substituí-lo, usando MoveFilepara remover o antigo .
Ben Voigt
1
@Ian, por "trivial", quero dizer que qualquer pessoa responsável pela criação do sistema de atualização de uma distribuição Linux saberá como fazer isso acontecer, então a questão é se é uma boa ideia executar automaticamente (ou como expô-lo) para o usuário), não se é possível.
Charles Duffy
2
@CharlesDuffy Não sei como isso funciona, mas o pacote Debian needrestart faz o trabalho que você está descrevendo, ou seja, reinicie automaticamente os serviços cujos executáveis ​​/ bibliotecas foram atualizados.
Zwol 14/10/2015
3

É uma consequência da visão das expectativas previstas do usuário.

Os sistemas Linux são modelados após a execução do unix nos servidores. O tempo de atividade foi um ponto de se gabar nessas comunidades. Qualquer coisa que reduzisse o tempo de atividade era ruim. E esse é um efeito colateral da expectativa de que o computador tenha vários usuários e que o tempo de inatividade da programação precise ser coordenado com vários usuários.

O Windows foi projetado para o mercado de PCs. No momento em que foi apresentado, saber que era possível sair de um programa e iniciar outro sem reiniciar era o sinal de um usuário experiente. Por esse motivo, não havia razão para não usar nomes de arquivos como identificador principal ao projetar ntfs.

hildred
fonte