Como o Ubuntu pode atualizar os aplicativos em execução sem precisar fechá-los enquanto o Windows não consegue?

7

Executando o Ubuntu 12.04 de 64 bits.

Eu atualizo principalmente pelo terminal usando sudo apt-get update && sudo apt-get upgrade .

Eu não entendo isso: ter o Firefox ou qualquer outro aplicativo integrado sendo executado ativamente junto com o processo de atualização em execução simultaneamente no terminal, que está atualizando o Firefox para uma versão mais recente. Estou ciente de que reiniciar o Firefox fará com que o Firefox seja aberto como a versão mais recente.

Por exemplo, ao atualizar no MS Windows 7, ele pede para fechar a instância ativa do mesmo aplicativo (se estiver ativo) antes de atualizar.

Como o Ubuntu substitui o aplicativo ativo em funcionamento por uma versão mais nova sem interferir em sua instância ativa?

O que exatamente acontece no processo de atualização do processo de atualização, neste caso?

    
por atenz 13.06.2012 / 20:29

1 resposta

14
  

Para exemplo de atualização no MS Windows 7, ele pede para fechar a instância ativa do mesmo aplicativo (se ativo) para atualização.

     

Como o Ubuntu substitui o aplicativo ativo em funcionamento por uma versão mais nova sem interferir em sua Instância ativa. [Notado por muitos pacotes]

Vou tentar explicar isso da maneira mais simples possível. A maioria dos sistemas de arquivos Linux é um pouco diferente dos sistemas de arquivos do Windows (NTFS). Em seu núcleo, ambos contêm essencialmente uma tabela de índice de nomes de arquivos (entradas) apontando para os dados reais armazenados no disco. No NTFS isso é chamado de MFT (tabela de arquivos mestre) - você pode ter visto esse nome rolar por se você executar um chkdsk .

No entanto, a "ligeira diferença" que mencionei é que as tabelas de índices do Linux, se você preferir, consistem em dois níveis: o índice e inodes . Os inodes contêm os metadados reais do arquivo, incluindo sua localização física no disco; o "nome do arquivo" no índice é simplesmente um link (hard) para o inode.

Quando você atualiza / atualiza um aplicativo em execução, os arquivos atualizados são gravados no disco, inodes apontando para os novos dados criados / atualizados e os nomes dos arquivos também são atualizados para vinculá-los a esses novos inodes. Mas , para quaisquer arquivos que já estejam sendo usados por um aplicativo em execução (ex., identificadores de arquivo existentes), seus nomes de arquivos continuarão apontando para os inodes antigos (que contêm os dados antigos) até que os identificadores sejam fechadas. Isso geralmente acontece quando você sai do aplicativo, ou para alguns arquivos do sistema, quando você reinicia. Neste ponto, os dados antigos são realmente removidos do seu disco.

    
por ish 13.06.2012 / 20:52