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

11

Executando o Ubuntu 12.04 de 64 bits.

Eu atualizo principalmente através do terminal usando sudo apt-get update && sudo apt-get upgrade.

Não entendo isso: ter o Firefox ou qualquer outro aplicativo integrado em execução ativamente, juntamente 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 solicita o fechamento da 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 recente sem interferir com sua instância ativa?

O que exatamente acontece no back-end do processo de atualização neste caso?

atenz
fonte

Respostas:

19

Para Atualização de exemplo no MS Windows 7, ele solicita o fechamento da Instância ativa do mesmo aplicativo (se ativo) para atualização.

Como o Ubuntu substitui o aplicativo de trabalho ativo por uma versão mais recente sem interferir com 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). Basicamente, 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 MFT (tabela de arquivos mestre) - você pode ter visto esse nome rolar se executar a chkdsk.

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

Quando você atualiza / atualiza um aplicativo em execução, os arquivos atualizados são gravados no disco, os inodes apontam para os novos dados criados / atualizados e os nomes dos arquivos também são atualizados para vincular esses novos inodes. Porém , para qualquer arquivo que já esteja sendo usado por um aplicativo em execução (por exemplo, existem identificadores de arquivo), os nomes dos arquivos continuarão apontando para os inodes antigos (que contêm os dados antigos) até que os identificadores de arquivo sejam fechados. 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.

ish
fonte