quinta-feira, 28 de agosto de 2014

Compactação de Arquivos


A compactação de arquivos sempre foi um recurso muito utilizado, a sua origem confunde-se com a própria história da computação. Através da compactação, podemos aumentar consideravelmente a quantidade de arquivos e programas que podem ser gravados no mesmo espaço físico. Um disco rígido de 200 Megabytes, por exemplo, pode guardar facilmente 300 MB, 400 MB ou até mais de arquivos compactados, um ganho considerável. Conforme os discos rígidos e outras formas de armazenamento foram crescendo em capacidade, o uso da compactação foi tornando-se menos necessário, mas este ainda é um recurso bastante utilizado.

Compactar arquivos é um simples processo de substituição. Por exemplo, cada carácter de texto ocupa 8 bits, o que nos dá um total de 256 combinações possíveis. O conjunto de caracteres ASCII prevê o uso de todas as 256 combinações, porém, em geral utilizamos apenas letras, números e acentuação. Numa imagem em BMP, com 256 cores, usamos também 8 bits para representar cada ponto, mas numa imagem sempre temos grandes áreas com pontos da mesma cor. Num arquivo executável, sempre temos comandos e informações repetitivas. Em todos os casos temos informações redundantes que poderiam ser perfeitamente substituídas por códigos menores.

Existem vários algoritmos de compactação, que prevêem vários tipos de substituições para diferentes tipos de arquivos. Porém, uma vez compactado, um arquivo qualquer deixa de ser utilizável. Para poder usar novamente o arquivo, é preciso fazer o processo inverso para ter novamente o arquivo original. Existem vários tipos de compactação de arquivos, cada tipo com suas vantagens e desvantagens:

Compactação de arquivos individuais baseada em um utilitário: Consiste em compactar arquivos utilizando programas como o Winzip, Winrar, Arj etc. Muito provavelmente você já trabalhou com um destes programas, e deve ter reparado que alguns arquivos, como textos e imagens .BMP permitem uma taxa de compactação muito maior do que outros. Isto acontece por que estes arquivos possuem uma quantidade de informação redundante muito grande.

Experimente abrir o Paint, criar uma imagem de 640x480, desenhar apenas um quadrado preto e salvar o arquivo como um bitmap de 24 bits.

O arquivo ficará com cerca de 900 Kbytes. Experimente depois compactar esta imagem usando um programa compactador qualquer, e perceberá que a imagem ficará com apenas 3 ou 5 Kbytes, menos de 1% do tamanho original! Claro que este é um caso extremo, mas geralmente conseguimos diminuir o tamanho dos arquivos em 30 ou 50%. O único problema é que, usando um destes programas para compactar arquivos, é necessário descompactá-los antes de poder utilizá-los. Estes programas estão sendo muito usados hoje em dia, principalmente na Internet, onde é de praxe compactar os arquivos antes de enviá-los, com o objectivo de diminuir o tempo da transferência.

Compactação de volumes: Ao invés de compactar arquivos individualmente, é possível criar volumes compactados, usando programas como o DriveSpace (que acompanha o Windows 95/98) ou o Stacker. Em geral, compactamos uma partição de disco inteira. Todos os arquivos gravados nesta partição passam a fazer parte de um volume compactado, na verdade, um grande e único arquivo. Neste caso fica residente na memória um driver de compactação, que serve como um intérprete, compactando os arquivos antes de gravá-los e os descompactando conforme são lidos, entregando-os ao sistema operacional em sua forma original, tudo feito em tempo real.

Como os dados são gravados de forma compactada, em média é possível gravar 50 ou 60% a mais de dados. A desvantagem é que como o processador é utilizado para compactar/descompactar os arquivos, temos uma diminuição na performance geral do equipamento. Em um 486 tudo ficará muito mais lento, mas a partir de um Pentium 133, a diferença já não é tão perceptível.

A meu ver, o maior problema com este sistema, é qualquer problema pode tornar o volume compactado inacessível, causando a perda dos dados gravados. Hoje em dia este sistema não é quase utilizado, também por que os programas disponíveis são capazes de trabalhar apenas em partições formatadas com FAT 16, não sendo compatíveis com FAT 32 e NTFS, por exemplo.

Compactação de arquivos feita pelo sistema operacional: Este é o método permitido pelo Windows 2000 e Windows NT em partições NTFS, que permite unir melhor dos dois mundos, compactando individualmente arquivos ou pastas, mantendo os dados acessíveis mas ao mesmo tempo economizando espaço em disco. Outra vantagem, é que, devido aos arquivos serem compactados individualmente, não existe o risco de perda de dados.

in Manual de Hardware Completo
de Carlos E Marimoto


Sem comentários: