Escritos
B. Piropo
Anteriores:
< Trilha Zero >
Volte de onde veio
20/01/1992

< O MISTÉRIO DOS DADOS ALOPRADOS >


Já que estamos com a mão na massa, como diriam os baianos, vamos discutir hoje outro problema que tem a ver com discos, um que costuma afligir micreiros com drives de 360K e 1,2Mb: o mistério dos dados aloprados. Como em um conto policial, vamos descrever o ambiente, definir o problema e esclarecer o mistério. Tudo isto em uma só coluna, prometo.

O ambiente é assáz convencional: a vítima tem um micro com dois drives de 5"1/4, um de densidade dupla (360K) e outro de alta (1,2Mb). Ou tem acesso a dois micros, com drives de 360K e 1,2Mb. E deseja ler e gravar discos de 360K em ambos os drives. Em princípio, tudo bem: discos de 360K podem ser formatados, lidos e gravados em drives de 1,2Mb. Para ler e gravar dados, o processo é transparente: o drive reconhece o formato e manda ver. Para formatar, é preciso incluir um parâmetro na linha de comando. Coloque o disco de 360K no drive de alta, comande "format /4" (ou, no DOS 5, "format /f:360", mais fácil de lembrar) e presto: lá está seu disco devidamente formatado em 360K.

Como em todos os contos policiais, no início tudo parece correr bem: discos de 360K formatados, gravados e lidos no drive de 1,2Mb se comportam divinamente. Como divinamente se comportam os discos de 360K formatados lidos e gravados no drive de 360K, naturalmente. Discos de 360K formatados no drive de 1,2Mb podem ser lidos e gravados no drive de 360K sem problemas, como problemas também não surgem para ler e gravar no drive de 1,2Mb os discos formatados no drive de 360K. Mas então onde está o problema? pergunta você. E, já que perguntou, respondo eu: o problema surge ao tentar ler no drive de 360K dados que foram nele gravados e depois modificados no drive de 1,2Mb. Quase sempre aparece uma ininteligível mensagem de erro do DOS seguida pelo abominável "Abort, Retry, Ignore". E aqui. além do problema, também reside o mistério: por que a dificuldade só surge quando o drive de 360K tenta ler setores previamente gravados por ele mesmo e sobrescritos pelo de 1,2Mb?

Na verdade, como quase todos os grandes mistérios dos contos policiais, este tem uma explicação. E bastante besta, por sinal. Mas para entendê-la precisamos desbravar o interior dos discos de 5"1/4. Que, aliás, nada tem de complicado.

Os dados são gravados em setores de 512 bytes cada, distribuídos em trilhas concêntricas. Nos de 360K há 40 trilhas por face, com nove setores cada. Nos de 1,2Mb, 80 trilhas de quinze setores. É claro que também neste caso influi a coercitividade, mais alta no disco de 1,2Mb, onde os dados em cada setor ocupam metade do espaço que ocupariam nos de 360K (em jargão técnico se diz que a "densidade linear" dos dados é maior). Mas há uma diferença ainda mais importante: as 80 trilhas do disco de 1,2Mb se espalham sobre o mesmo diâmetro que as 40 do disco de 360K. Portanto, estão muito mais próximas uma das outras (o cara que fala computerês diria que a "densidade longitudinal" também é maior). Logo, a cabeça de gravação de um drive de 1,2Mb tem que ser muito mais estreita, ou não iria conseguir encaixar 80 trilhas no mesmo espaço ocupado pelas 40 do drive de 360K. Em conseqüência disto, a trilha magnética gravada em um drive de 1,2Mb é mais estreita que a gravada por um drive de 360K. Na verdade, ela é a metade da outra. E note que não importa o disco: como se trata da largura da própria cabeça, mesmo em um disco de 360K será gravada uma trilha mais "fina". Fazendo uma analogia simples, a trilha gravada por um drive de 360K é como a marca de um pneu de caminhão em uma estrada de barro. A de um drive de 1,2Mb corresponderia a um pneu de motocicleta.

O que acontece quando gravamos, apagamos e regravamos arquivos em um disquete? Os arquivos "apagados" não são removidos do disco: apenas são modificadas a entrada do diretório e uma tabela interna que serve para localizar os setores correspondentes (a tabela de alocação de arquivos). Os dados lá permanecem. Mas como seus setores constam agora como livres, os próximos dados irão simplesmente sobrescrever os antigos, ou seja, serão gravados "por cima" deles. Se isto é feito pela mesma cabeça magnética, ou por uma mais larga, não há problemas: os novos setores encobrem inteiramente os antigos e podem ser lidos por qualquer drive.

Mas agora vamos pensar um pouco: imagine que dados gravados por um drive de 360K, uma marca de pneu de caminhão, sejam sobrescritos em um drive de 1,2Mb. É como se uma motocicleta passasse justamente no meio da marca do pneu do caminhão: deixaria a marca de seus pneus "dentro" da mais larga. Os novos dados seriam gravados, mas o "resto" dos antigos ainda se espalhariam em torno. Enquanto estes dados forem lidos no drive de 1,2Mb, a probabilidade de surgir algum problema existe, mas é pequena: a estreita cabeça magnética passará exatamente por onde gravou os dados e pode recuperá-los sem interferência dos que estão em volta. Mas o que acontece ao se tentar ler estes dados em um disco de 360K?

Elementar, meu caro Watson: a cabeça mais larga agora se confunde. Ela recebe ao mesmo tempo os sinais magnéticos dos dados gravados pela cabeça estreita do drive de alta no centro da trilha e, em redor destes, o "resto" dos sinais gravados anteriormente por ela mesma. E eles não dizem coisa com coisa.

Acontece que em seu disquete não são gravados apenas dados nos setores: na região entre dois setores adjacentes há uma enorme quantidade de informações que é lida e processada pelo sistema. Inclusive algumas que permitem verificar a integridade dos dados (em computerês, o teste de redundância cíclica). E, quando as informações não "batem" com os dados, tome mensagem de erro...

Pois é isto. Como você vê, o mistério é besta mesmo. Mas dele se pode extrair uma lição: permute discos a vontade entre drives de 5"1/4. Eu faço isto há anos, sem problemas. Apenas tome cuidado para não sobrescrever com drives de 1,2Mb dados gravados em drives de 360K. E, se o fizer, não tente lê-los novamente nos drives de 360K. Porquê aquele "Abort, Retry, Ignore" é insuportável...

B. Piropo