Se a outra resposta é muito difícil para alguém ler porque tem muito jargão técnico, ofereço minha resposta.
Um arquivo é armazenado no disco rígido ou na unidade sólida. O que é um arquivo que você pergunta? Eu respondo, um monte de 1s e 0s dispostos em uma ordem específica que parece um arquivo do lado de fora. O que é um programa executável? *.exe
? É executável em código de máquina, também um monte de 1s e 0s. Também é armazenado na sua unidade de disco. Quando você clica no executável de compactação de arquivos, o algoritmo de instruções de código é carregado a partir do *.exe
na unidade de disco na RAM. Só então é capaz de correr. A CPU do computador executa programas e lê / grava dados. Não é possível obter nada diretamente da unidade de disco. Ele tem que carregar tudo na memória RAM primeiro, que atua como intermediário entre a CPU e a unidade de disco onde todos os seus dados são armazenados.
Agora o programa de compactação de arquivos está sendo executado pela CPU na RAM. O que as instruções do código dizem à CPU para fazer? Eles dizem para carregar o próprio arquivo da unidade de disco para a memória RAM, para que o programa possa trabalhar com ele. Então agora temos duas coisas na memória RAM: o próprio programa e o arquivo.
Você diz a este programa de compactação de arquivos para compactar o arquivo. No entanto, não pode magicamente apenas fazer isso. Para ser comprimido, um arquivo deve ser organizado em uma certa ordem, o mais rigorosamente possível. Talvez antes da compactação, o arquivo estava um pouco desorganizado, como seu gabinete de arquivos. O programa de compactação de arquivos precisa organizar o arquivo da maneira mais clara e precisa possível. Para fazer isso, ele precisa temporariamente colocar o arquivo em um estado ainda mais desorganizado, a fim de encontrar todas as partes nas quais tudo pertence.
Pense em como você comprimiria seus papéis. Primeiro você os espalharia por toda a sua mesa até que pudesse vê-los todos, e eles os classificassem por categorias, e começassem a colocar os papéis em pastas.
Então agora temos três coisas na memória RAM:
1. As instruções do programa em si.
2. O arquivo original que foi carregado a partir da unidade de disco.
3. Uma cópia temporária do arquivo original, que está em estado de ser desmontado e colocado de volta.
Talvez várias cópias temporárias de todo o arquivo ou partes dele sejam feitas na RAM para facilitar a organização e a compactação desse arquivo. Agora você vê como os programas de compactação de arquivos podem ocupar muito mais RAM quando estão trabalhando em comparação com o tamanho do arquivo original na unidade de disco?
A quantidade de RAM usada durante esse processo depende da habilidade do programador que projetou o aplicativo. Existem maneiras inteligentes e eficientes de escrever o código para minimizar o consumo de RAM. E há formas de força bruta para realizar a mesma tarefa, mas ela fica mais lenta e ocupa mais memória RAM. RAM pode até ser desperdiçado se o programa tiver um vazamento de memória. Pense em um vazamento de memória, como fazer várias cópias dos mesmos dados, mas depois deixá-lo na mesa e nem mesmo se preocupar em limpar a si mesmo.
Eventualmente, todas as cópias temporárias seriam condensadas na versão compactada do arquivo. Ele ainda está na memória RAM, então a versão compactada do arquivo deve ser enviada de volta para o disco rígido, onde é salvo permanentemente.
A idéia principal é que, para alcançar um estado de baixa entropia, você deve passar temporariamente por um estado de alta entropia. Isto é claro, escrito nos termos mais gerais.