VFAT E HPFS Drive em FAT: o Sistema fica no início e o resto
é uma bagunça
Drive em HPFS: o Sistema fica no centro e controla tudo
um estudo comparativo
por Daniel Jorge Caetano, Team OS/2
> Bom, essas vantagens eu disse em outra mensagem, o VFAT é
o padrão
> do Win95, o HD ta em FAT e ele "associa" atributos estendidos aos
nomes
> de arquivos e diretórios para deixa-los longos. Como todo o resto do
> Windows isso é uma gambiarra sem fim que confunde tudo!!! E essa
> gambiarra de anexar atributos aos arquivos é chamada de VFAT (Vitual
> File Alocation Table). Por isso que dizem que não é bom passar
Scandisk
> de DOS em Win95, porque ele considera isso como alocação cruzada!!!
É uma
> zona!!! A FAT32 já é "igual" ao HPFS, ou seja, os nomes
longos são
> nativos, mas o DOS não reconhece partições FAT32 e nem
HPFS!!! O
> FAT32.SYS existe sim e permite que o OS/2 leia partições Fat32
> formatadas para o Win95 OSR2 e Win98. Se não me engano ele pode ser
pego
> no site do Macarlo http://macarlo.com acho que é esse o endereço...
Olha, o sistema VFAT é um lixo. Isso que você falou,
é o que o OS/2 faz com a FAT quando você tenta gravar coisas nos atributos
estendidos dos
arquivos, o que é ruim, mas o VFAT é ainda *PIOR*. Vejamos os
problemas do VFAT:
1- Gambiarra
O VFAT usa *entradas de diretórios* para completar o nome do arquivo.
Como cada nome de diretório tem 11 posições (8+3), para um
nome com 253 caracteres (que é o máximo aceito, e não 255)
ele ocupara uma entrada de arquivo (normal) e mais 22 entradas de diretório
(não estou brincando!).
Quer fazer um teste? Pegue um disco bom, de 1.44, formatado. Crie um
arquivo de 1 (UM) byte (com apenas uma letra) no seu editor de textos
preferido no Win95 e salve-o com um nome de 253 caracteres. Em seguida,
copie este arquivo diversas vezes, mudando ligeiramente o nome, mas
mantendo 253 caracteres. Você vera que não poderá mais gravar
no disco
quando ainda estiverem disponíveis mais de 1.3Mb... Isso porque as entradas
de diretório são finitas, e no disquete, a quantidade delas é
muito
pequena. Não estudei isso ainda no FAT 32 e não posso dizer.
2- Desperdício de espaço
Além disso, se você tem uma partição VFAT com 1Gb, o
menor arquivo
ocupa 16Kb (mesmo que tenha 1 byte), se for maior que 1Gb, o menor
arquivo ocupara 32Kb (mesmo que o arquivo tenha um byte) e assim vai...
Isso foi amenizado no FAT32 (divida estes valores por 4), mas o problema
continua. Você literalmente joga seu disco no lixo! Já no HPFS, o menor
arquivo ocupa 512 bytes (mesmo que tenha 1 byte), não importa o tamanho
do disco (o que já é uma GRANDE coisa), mas ele *não* joga
este espaço
fora. Para quem não sabe, é neste final de cluster que o OS/2 grava
os
atributos estendidos, tornando o sistema de arquivos HPFS muito mais
consistente, econômico e ideal para HDs.
3- Velocidade
A) Organizacão do diretório
O VFAT e FAT32 gravam os arquivos sequencialemte. Ou seja, se você
gravar os arquivos EU.BAT, GATO.EXE e CAMILA.COM, JOAO.DLL e KILL.EXE
eles vão ficar assim na FAT:
EU.BAT
GATO.EXE
CAMILA.COM
JOAO.DLL
KILL.EXE
E isso é muito ruim, pois cada vez que o sistema vai procurar
alguma
coisa tem de verificar sequencialmente TODO o diretório, desde o
primeiro até o último nome de arquivo. Por exemplo, se você
mandar
procurar o arquvo JOAO.DLL (quarta posição), os sistema fará
o seguinte:
Lê nome EU.BAT.
Compara EU.BAT com JOAO.DLL
Se é igual, retorna 1, se é diferente retorna 0. Retorna 0.
Se 1, imprime "ACHEI", Se 0 continua. É zero.
Le nome GATO.EXE.
Compara GATO.EXE com JOAO.DLL
Se é igual, retorna 1, se é diferente retorna 0. Retorna 0.
Se 1, imprime "ACHEI", Se 0 continua. É zero.
Lê nome CAMILA.COM.
Compara CAMILA.COM com JOAO.DLL
Se é igual, retorna 1, se é diferente retorna 0. Retorna 0.
Se 1, imprime "ACHEI", Se 0 continua. É zero.
Lê nome JOAO.DLL.
Compara JOAO.DLL com JOAO.DLL
Se é igual, retorna 1, se é diferente retorna 0. Retorna 1.
Se 1, imprime "ACHEI", Se 0 continua. É 1.
Como você pode notar, foram executadas, a grosso modo, 16
operações.
Vamos comparar isso com o HPFS.
No HPFS a coisa é um pouco (bem diferente). Se você gravar estes mesmos
cinco arquivos, eles vao ficar assim no HPFS:
CAMILA.COM
EU.BAT
GATO.EXE
JOAO.DLL
KILL.EXE
E no que isso ajuda? Isso ajuda no fato do modo da busca. O OS/2
faz a
busca diferente, uma coisa chamada BUSCA BINÁRIA, e para isso acontecer,
os nomes precisam estar na ordem. Acompanhe o "raciocinio" do
computador:
São 5 nomes. Pega o nome do meio (final(5)-inicial(1)/2+inicial(1), =
3).
Lê nome GATO.BAT (o 3o.)
Compara GATO.BAT com JOAO.DLL
Se é igual, retorna 0, se menor -1 se é maior retorna 1. Retorna -1.
(G<J)
Se 0, imprime "ACHEI", Se -1, muda inical para 3 se 1
muda final para
3.
São 3 nomes (do 3 ao 5). Pega nome do meio (final
(5)-inicial(3)/2+inicial(3)=4)
Lê nome JOAO.DLL (4o.)
Compara JOAO.DLL com JOAO.DLL
Se é igual, retorna 0, se menor -1 se é maior retorna 1. Retorna 0.
Se 0, imprime "ACHEI", Se -1, muda inical para 4 se 1 muda final para
4. É 0.
Pronto, o arquivo foi achado com 11 operações. Isso
para um número
irrisóorio de arquivos. Para uma grande quantidade de arquivos você
consegue um acesso ate 2.5 x mais rápido, em média!
B) Fragmentação.
A FAT fragmenta muito, prejudicando ainda mais a velocidade. Vejamos
por que:
Quando você grava os arquivos:
A FAT vai dividí-los em "clusters", que nada mais
são que aquelas
"unidades menores" que citei na primeira parte da mensagem, indicando
que um arquivo de 1 byte ocupa 16Kb num HD de 1Mb. Bem, o primeiro
arquivo ocupara um cluster, o segundo 5 clusters, o terceiro 2 clusters,
o quarto 68 clusters e o quinto 6 clusters. No HD ficarão assim:
EU.BAT 1o. cluster.
GATO.EXE 2o. ao 6o. cluster
CAMILA.COM 7o. ao 8o. cluster
JOAO.DLL 9o. ao 76o. cluster
KILL.EXE 77o. ao 82o. cluster.
Bem, primeiramente tem o problema de espaco, já que os arquivos
ocupariam fisicamente 1.303.552 bytes e a FAT os faz ocupar
1.343.488bytes, o que da aproximadamente 40Kb a mais - isso em 5
arquivos! Em HPFS estes arquivos ocupariam 2546 "clusters" de 512 bytes,
ou seja: 1.303.552 bytes! - coloquei a palavra clusters entre aspas porque o
HPFS nao usa clusters, mas algo parecido (chamadas Unidades de
Alocação).
O HPFS não gravaria assim. O disco de 1Gb em HPFS tem 2.097.152
clusters. (variaveis, de acordo com o número de arquvos). Logo, ele
gravaria da seguinte forma:
EU.BAT 1.048.571o. ao 1.048.580o. cluster
GATO.EXE 524.221o. ao 524354o. cluster
CAMILA.COM 1.572.833o. ao 1.572.892o. cluster
JOAO.DLL 261.068o. ao 263219o. cluster
KILL.EXE 786.337o. ao 786.526o. cluster
Pois o OS/2 sempre grava um arquivo no meio do maior espaço disponível
no disco.
|-|-----|--|--------|---|-------|0000000000000000000000000000000000000000000000
| | | | | |
| | | | KILL.EXE |
| | | JOAO.DLL |
| | CAMILA.COM |
| GATO.EXE |
Começo do programa de 30Kb Fim do programa de 30Kb.
Isso se chama fragmentação. E porque isso é ruim? Porque a
cada
descotinuidade no arquivo, a cabeça do drive é obrigada a voltar ao
início do drive e reler o boot sector, atrasando muito a operação.
Agora,
com o escreve-e-apaga habitual, imagine o estrago que isso não faz no
HD... A bagunça que não fica! Vejamos no HPFS:
000|--------|0000|-----|000000|---|000000000|------|00000000000|--|00000000000000
JOAO.DLL GATO.EXE KILL.EXE Arquivo de 30Kb KILL.EXE
Não fragmentou! Isso dá um ganho ABSURDO na velocidade
a medida que o HD fica mais e mais cheio...
CONCLUSÃO
Acho que deu para notar a *DROGA* que é o FAT. Estou à
disposiçãpo
para maiores esclarecimentos... Se alguem tiver alguma pergunta, basta
mandar e-mail!
dcaetano@sti.com.br
Visite minha HomePage de OS/2:
http://www.geocities.com/SiliconValley/8752/
Visite a pagina de novidades de OS/2:
http://www.os2brasil.com.br/novidades/