Capítulo – 3
Abordagem lógica para discos e SO
O disco rígido não pode executar seu próprio hardware e precisa de dois softwares básicos para executar suas operações, o BIOS (Basic Input Output System) e o DOS (ou Sistema Operacional). O sistema operacional de disco não se comunica diretamente com o hardware do computador e do disco rígido, mas precisa do BIOS no meio. É por isso que o BIOS assumiu um papel importante no computador.
BIOS
O trabalho básico do BIOS é fornecer uma interface padrão entre o hardware ou os dispositivos conectados ao computador e o DOS. O BIOS do sistema é a interface de nível mais baixo entre o hardware do seu sistema e o software que é executado nele . Ele tem vários papéis importantes que desempenha no controle de acesso a discos rígidos, como
- Rotinas de interrupção do BIOS
- Detecção e configuração do disco rígido
- Suporte ao modo de interface de disco rígido
Para garantir a interoperabilidade de vários produtos de hardware e software, o BIOS do sistema é adaptado às necessidades de seu hardware e fornece uma maneira padrão de permitir que o software aborde o hardware. Eles são chamados de serviços de BIOS e são usados por muitos sistemas operacionais e programas de aplicativos. Eles fornecem uma interface uniforme para o disco rígido, de modo que os aplicativos não precisam saber como se comunicar com cada tipo de disco rígido individualmente.
Os discos rígidos IDE/ATA padrão são configurados no BIOS usando várias configurações do BIOS. Programas de BIOS modernos podem detectar discos IDE/ATA modernos para determinar esses parâmetros e configurá-los automaticamente. O BIOS controla quais tipos de modos de interface podem ser usados com o disco rígido, trabalhando com o chipset do sistema na placa-mãe e o barramento de E/S do sistema.
A interface INT 13H e as extensões INT 13H
A interface principal para o BIOS tem sido a interrupção de software 13H, geralmente conhecida como INT 13H , onde INT significa interrupção e 13H é o número 19 em notação hexadecimal.
Vamos aprender e discutir o uso de interrupções na programação em detalhes na fase de programação deste livro. A interface Int13H suporta muitos comandos diferentes que podem ser dados ao BIOS, que os passa para o disco rígido. A interrupção 13H inclui a maioria das tarefas que precisamos realizar com o disco, como leitura, gravação, formatação etc.
O uso e trabalho com Int13H requer que o programa de chamada conheça os parâmetros específicos do disco rígido e forneça endereçamento exato de cabeçote, cilindro e setor para as rotinas para permitir o acesso ao disco.
O BIOS usa a geometria do disco rígido conforme configurado no programa de configuração do BIOS. A interface Int13H aloca 24 bits para a especificação da geometria da unidade, dividida da seguinte forma:
- 10 bits para o número do cilindro, ou um total de 1.024 cilindros.
- 8 bits para o número da cabeça ou um total de 256 cabeças.
- 6 bits para o número do setor ou um total de 63 setores.
Assim, o número máximo possível de setores no disco pode ser
= 1024 * 256 * 63
= 16515072
Como vemos aqui que a interface INT 13H pode suportar discos contendo até 16515072 setores com 512 bytes por setor. Assim, o tamanho máximo do disco pode ser,
= 16515072 * 512
= 8455716864 Bytes
~ 8.456 GB
Assim, a interface INT 13H pode suportar o tamanho do disco de aproximadamente até 8.456 GB (ou 7.875 GiB).
Hoje a maioria dos usuários de computador usa os discos rígidos que são muito maiores em capacidade do que 8 GB e é por isso que a interface INT 13H finalmente chegou ao fim de sua utilidade em sistemas de computadores modernos e foi substituída por uma interface mais nova chamada INT Extensões 13H, no entanto, INT 13H ainda pode ser usado pelo DOS e alguns outros sistemas operacionais mais antigos e para outros fins de compatibilidade.
Extensões Int 13H
É realmente uma história interessante que quando a interface INT 13H foi desenvolvida, ninguém esperava obter o tamanho de 8 GB no disco rígido. No entanto, hoje podemos sentir um disco rígido de 8 GB muito menor em capacidade, mesmo para o computador pessoal do usuário doméstico.
O padrão mais antigo tem uma limitação importante que usa 24 bits de informações de endereçamento e, como tal, só pode lidar com unidades que contenham até 16515072 setores com 512 bytes por setor, resultando em uma capacidade máxima de 8,456 GB (ou 7,875 GiB).
Assim, o problema era ampliar o caminho de acesso de 24 bits para algo maior, mas não foi possível expandir a interface BIOS INT13H existente porque se tentarmos fazer isso, muitos hardwares e softwares mais antigos parariam de funcionar. E, praticamente, não há esperança de conseguir um lugar respeitável no mundo da computação com muitos hardwares e softwares mais antigos que não funcionam com o seu desenvolvimento.
Por isso, uma nova interface foi desenvolvida para substituir o Int13H. Essas rotinas são chamadas de extensões Int13H. Essa nova interface usa 64 bits em vez de 24 bits para endereçamento e permite um tamanho máximo de disco rígido de 9,4 * 10 21 bytes, ou seja, 9,4 trilhões de gigabytes .
Vamos aprender o uso de ambas as extensões INT 13H e INT 13H na seção de programação deste livro. Há uma série de outras limitações de tamanho que ocorreram nos dias anteriores. Alguns dos limites lógicos e físicos populares foram descritos abaixo:
O limite de 2,1 GB
Este limite de tamanho foi observado em alguns BIOS mais antigos que alocam apenas 12 bits para o campo na RAM CMOS que fornece o número de cilindros. Portanto este número pode ser no máximo 111111111111B (Número Binário Máximo Possível de 12 Bits) que equivale a 4095. Desta forma o tamanho máximo do disco com 16 cabeças, que pode ser acessado, será:
= 4095 * 16 * 63 * 512 Bytes
= 2113413120 Bytes are accessible.
O limite de 33,8 GB
Esta barreira de tamanho do disco rígido foi notada no início de 1999. Discos grandes relatam 16 cabeças, 63 setores/faixa e 16383 cilindros. Muitos BIOS calculam um número real de cilindros dividindo a capacidade total por 16*63.
Para discos com mais de 33,8 GB, isso leva a um número de cilindros maior que 65.535. Nesse caso específico, algumas versões do Award BIOS não podem lidar com unidades com mais de 65.535 cilindros. Agora o BIOS trava ou trava. Como os parâmetros do disco rígido geralmente usam 16 cabeças e 63 setores, isso atinge uma capacidade de cerca de 33,8 GB ou 31,5 GiB antes que ocorram problemas.
A solução é atualizar o BIOS ou pode-se usar um jumper para fazer o disco parecer menor.
Especificação ATA para discos IDE - O limite de 137 GB
A antiga especificação ATA não permite acesso a um disco maior que 137 GB. Na verdade, ele usa apenas 28 bits para especificar um número de setor. No entanto, o ATA-6 define um ramal com número de setor de 48 bits.
O limite do tamanho do disco foi gerado com a combinação de no máximo 65536 cilindros contando de 0 a 65535, 16 cabeçotes contando de 0 a 15 e 255 setores por trilha contando de 1 a 255, a capacidade máxima total do disco,
= 65535 * 16 * 255 Sectors
= 267386880 Sectors
= 136902082560 Bytes (Sector of 512 Bytes Each)
~ 137 GB
Suporte a IDE de BIOS de dois e quatro discos
Hoje A maioria dos programas modernos de BIOS suporta detecção automática de disco rígido, o que permite que o BIOS interrogue cada disco rígido para determinar sua geometria lógica, modos de transferência suportados e outras informações. Isso pode ser feito no momento da configuração ou dinamicamente cada vez que a máquina é inicializada, dependendo do BIOS.
O BIOS do sistema fornece suporte nativo para discos rígidos IDE/ATA, portanto, pode haver vários parâmetros que podem ser definidos para informar ao BIOS quais discos rígidos estão no sistema e como controlá-los. Cada disco rígido no sistema terá suas próprias configurações, portanto, há um conjunto para o mestre primário e outro para o escravo primário e assim por diante. No entanto, os discos rígidos SCSI são configurados por meio de seu adaptador host e BIOS SCSI integrado.
Como as unidades de disco rígido com mais de 8 GB de tamanho não podem ser descritas usando os parâmetros tradicionais de geometria IDE/ATA BIOS, a detecção automática dinâmica é a maneira padrão de configurar unidades modernas, especialmente no caso de sistemas de computador mais antigos, no entanto, o usuário ainda pode defina alguns parâmetros da unidade manualmente.
A seguir estão as configurações normalmente encontradas no programa de configuração do BIOS para configurar discos rígidos IDE/ATA. Embora em sistemas modernos algumas das configurações de compatibilidade mais antigas possam não estar mais presentes:
- Tipo de disco: foi originalmente usado para permitir que o usuário escolha seu disco rígido de uma lista predefinida, mas agora é usado para controlar a configuração automática ou manual dos parâmetros da unidade.
- Tamanho: tamanho da unidade de disco rígido em megabytes decimais. É calculado a partir de outros parâmetros como Cilindros, Cabeças e Setores etc.
- Cilindros: o número de cilindros lógicos no disco.
Cabeças: o número de cabeças lógicas no disco.
- Setores: o número de setores lógicos de 512 bytes, cada um em cada trilha lógica no disco. Normalmente, os discos rígidos modernos têm 63 setores em uma única trilha.
- Pré-compensação de gravação: é uma configuração de compatibilidade que especifica em qual número de cilindro os ajustes de gravação devem ser feitos para unidades muito mais antigas.
- Landing Zone (Parking Heads): Landing Zone é o cilindro onde os cabeçotes são estacionados pelo BIOS para evitar a perda de dados ou a criação de Bad Sectors, quando a unidade é desligada. Como as unidades de disco rígido modernas estacionam automaticamente suas cabeças, isso raramente é necessário hoje.
- Modo de tradução: o modo de tradução do BIOS usado para oferecer suporte a discos rígidos com mais de 504 MB.
- Modo de bloco: para controlar a capacidade do BIOS de realizar transferências de disco em blocos.
- Modo de E/S programada (DMA): o modo de E/S programada ou modo DMA usado para realizar transferências de e para o disco rígido.
- Modo de transferência de 32 bits: controla o uso de transferências de dados de 32 bits de alto desempenho.
Limitações em sistemas de arquivos
Cada sistema de arquivos suporta um tamanho máximo de volume, tamanho de arquivo e número de arquivos por volume.
Agora, por exemplo, geralmente os volumes FAT16 e FAT32 são limitados a 4 GB e 32 GB (geralmente), respectivamente. Existem algumas limitações relacionadas aos sistemas de arquivos FAT que você deve conhecer, abaixo:
- FAT12: volumes FAT menores que 16 MB são formatados como FAT12. É o tipo FAT mais antigo e usa um binário de 12 bits para armazenar números de cluster. Um volume formatado usando FAT12 pode conter no máximo 4.086 clusters, o que equivale a 2 12 menos alguns valores reservados para serem usados em FAT. (Vamos discuti-lo em detalhes na estrutura lógica do disco dada a seguir neste capítulo). Portanto, o FAT12 é mais adequado para volumes menores. É usado em disquetes e partições de disco rígido menores que cerca de 16 MB.
- FAT16: O FAT16 usa um número binário de 16 bits para armazenar números de cluster. Um volume usando FAT16 pode conter no máximo 65.526 clusters, o que equivale a 2 16 menos alguns valores reservados para serem usados em FAT. (Vamos discuti-lo em detalhes na estrutura lógica do disco dada a seguir neste capítulo). O FAT16 é usado para volumes de disco rígido que variam de 16 MB a 2.048 MB. Volumes FAT16 maiores que 2 GB não são acessíveis em computadores com MS-DOS, Windows 95/98/ME e muitos outros sistemas operacionais. Essa limitação ocorre porque esses sistemas operacionais não oferecem suporte a tamanhos de cluster maiores que 32 KB, o que resulta no limite de 2 GB. (Veja o limite de clusters dado a seguir neste capítulo).
- FAT32: Em teoria, os volumes máximos de FAT32 podem ser de até 2048 GB (aproximadamente 2 Terabytes). O FAT32 é suportado pela versão OEM SR2 do Windows 95, bem como pelo Windows 98/ME. O FAT32 usa um número de cluster binário de 28 bits (Lembre-se! não 32, porque 4 dos 32 bits são "Reservados"). Assim, teoricamente, o FAT32 pode lidar com volumes com mais de 268 milhões de clusters (na verdade, 268.435.456 clusters) e oferecerá suporte a unidades de até 2 TB de tamanho. No entanto, para fazer isso, o tamanho do FAT cresce muito. (Vamos discuti-lo nos tópicos apresentados a seguir neste capítulo).
A comparação dos Tipos de FAT foi apresentada a seguir, na tabela.
NTFS: NTFS significa New Technology File System. É usado pelo Windows 2000/XP. Em teoria, o tamanho máximo da partição NTFS é (2 64 – 1) clusters.
A descrição detalhada do NTFS File System está além do limite deste livro, no entanto, algumas limitações foram dadas na tabela a seguir:
Description
|
Limit |
Maximum file size
|
16 Exabytes – 1 KB (2 64 Bytes – 1 KB) |
Maximum volume size
|
(2 64 – 1) clusters |
Files (and Folders) per volume
|
4,294,967,295 (2 32 – 1 ) Flies and Folders |
Cacho
A menor unidade de espaço no disco rígido para alocação que qualquer software pode acessar é o setor , que contém 512 bytes. É possível ter um sistema de alocação para o disco onde a cada arquivo são atribuídos quantos setores individuais forem necessários. Por exemplo, um arquivo de 1 MB exigiria aproximadamente 2.048 setores individuais para armazenar seus dados.
No caso do sistema de arquivos FAT, ou melhor, podemos dizer que na maioria dos sistemas de arquivos, setores individuais não são usados. Existem várias razões de desempenho para isso. Quando o DOS grava algumas informações no disco rígido, ele não aloca o setor de espaço, em vez disso, usa uma nova unidade de armazenamento chamada cluster.
FAT foi projetado há muitos anos e é um sistema de arquivos simples, e não é capaz de gerenciar setores individuais. O que o FAT faz é agrupar setores em blocos maiores que são chamados de clusters ou unidades de alocação.
Um cluster é a menor unidade de espaço em disco que pode ser alocada para um arquivo. Esta é a razão pela qual os clusters são frequentemente chamados de unidades de alocação. Pode ser muito difícil gerenciar o disco quando os arquivos são divididos em pedaços de 512 bytes.
Um volume de disco de 20 GB usando setores de 512 bytes gerenciados individualmente conteria mais de 41 milhões de setores individuais, e acompanhar essas muitas informações consome tempo e recursos. No entanto, alguns sistemas operacionais alocam espaço para arquivos por setor, mas exigem alguma inteligência avançada para fazer isso corretamente.
Clusters são o espaço mínimo alocado pelo DOS ao armazenar qualquer informação no disco. Mesmo para armazenar informações de apenas um byte no disco requer no mínimo uma área de cluster na superfície do disco.
Se um cluster puder armazenar 512 bytes de informações, para armazenar 513 bytes, você precisará de dois clusters. Cada arquivo deve receber um número inteiro de clusters. Isso significa que, se um volume usa clusters que contêm 4.096 bytes, um arquivo de 610 bytes usará um cluster, portanto, 4.096 bytes no disco, mas um arquivo de 4.097 bytes usará dois clusters, portanto, 8.192 bytes no disco.
Esta é a razão pela qual o tamanho do cluster é tão importante para garantir que você maximize o uso eficiente do disco. Assim, podemos entender que os tamanhos de cluster maiores resultam em mais espaço desperdiçado.
A figura a seguir mostra as propriedades de um arquivo chamado BINARY.C e esclarece o fato do espaço utilizado pelo arquivo no disco. O tamanho real do arquivo é de 610 bytes, mas como o cluster único é de 4.096 bytes, o arquivo usa um cluster (4.096 bytes) no disco.
Um cluster pode ser formado por um ou mais setores. Depende do tipo de disco que está sendo usado. Como um cluster pode ser composto por mais de um setor, o uso de clusters como unidade de alocação reduz o tamanho da tabela de alocação de arquivos que o DOS usa para armazenar as informações do espaço em disco usado e vazio.
O tamanho do cluster é determinado principalmente pelo tamanho do volume do disco. Se não estritamente falando, geralmente volumes maiores usam tamanhos de cluster maiores. Para volumes de disco rígido, cada cluster varia em tamanho de 4 setores (2.048 bytes) a 64 setores (32.768 bytes).
Disquetes usam clusters muito menores e, em alguns casos, usam um cluster de tamanho de apenas 1 setor. Os setores em um cluster são contínuos, portanto, cada cluster é um bloco contínuo de espaço no disco.
O tamanho do cluster e, portanto, o tamanho da partição ou do volume, porque estão diretamente relacionados, tem um impacto importante no desempenho e na utilização do disco. O tamanho do cluster é determinado quando o volume do disco é particionado.
Existem alguns utilitários como o Partition Magic disponíveis que podem alterar o tamanho do cluster de uma partição existente dentro dos limites de condições específicas, mas para os casos gerais, uma vez que o tamanho da partição e o tamanho do cluster são selecionados, isso é corrigido.
Como discutimos anteriormente, o número do cilindro ou da faixa começa em 0 e o número do primeiro setor é sempre considerado como 1 e mais uma coisa que você deve lembrar é que o primeiro número do cluster é sempre considerado como 2.
Tamanho do cluster
Os clusters são usados para alocar a área de armazenamento apenas para a área de dados. A área de FAT e diretório não é alocada de acordo com o tamanho do cluster. Em um disco que usa setores de 512 bytes, um cluster de 512 bytes contém um setor, enquanto um cluster de 4 KB contém 8 setores.
As tabelas a seguir listam os tamanhos de cluster padrão usados pelo DOS para vários formatos de disco. No entanto, o tamanho do cluster pode ser diferente do tamanho padrão em algumas circunstâncias:
Floppy Disk Drive (FDD) |
Drive Types |
Sectors/Cluster |
Total Cluster size in bytes (Sectors of 512 bytes Each) |
5.25” 360Kb FDD |
2 sectors |
1,024 |
5.25”1.2Mb FDD |
1 sector |
512 |
3.5” 720Kb FDD |
2 sectors |
1,024 |
3.5”1.44Mb FDD |
1 sector |
512 |
3.5”2.88MB FDD |
2 sectors |
1,024 |
FAT16, FAT32 e NTFS usam tamanhos de cluster diferentes dependendo do tamanho da partição e cada sistema de arquivos tem um número máximo de clusters que pode suportar. Quanto menor o tamanho do cluster, mais eficientemente um disco armazena informações, pois o espaço não utilizado em um cluster não pode ser usado por outros arquivos.
A tabela a seguir mostra os tamanhos de cluster padrão para FAT16 , FAT32 e partição do sistema de arquivos NTFS. O FAT 32 permite armazenamento e uso muito mais eficientes de discos rígidos maiores, o FAT de 32 bits é compatível apenas com Windows 95 OSR-2 e Windows 98/ME e. O FAT 16 é suportado pelo MS-DOS, Windows 3.1, Windows 95 e Windows NT. Os sistemas operacionais Windows 2000/XP usam o sistema de arquivos NTFS
.
Nota : Aqui 1 KiB foi escrito para 1 Kilobyte binário, o que significa que 1 KiB é de 1024 Bytes ou podemos dizer que dois setores de 512 Bytes são equivalentes a 1 KiB.
À medida que o tamanho da partição FAT16 aumenta, o desperdício de espaço em disco também aumenta. O uso do FAT32 reduz os tamanhos dos clusters e, assim, proporciona um armazenamento eficiente. Embora o FAT32 permita o uso de discos rígidos maiores e tamanhos de cluster bastante reduzidos, há uma consideração importante de desempenho no uso do FAT32, pois os discos rígidos enormes com dezenas de gigabytes tornaram o FAT32 essencial para sistemas mais novos. Em vez disso, podemos dizer que muitas vezes você não tem mais uma escolha prática entre FAT16 e FAT32.
Vamos considerar uma partição de 2.048 MB, a maior que o FAT16 pode suportar. Se esta partição for configurada em FAT16, resultará em uma tabela de alocação de arquivos com 65.526 clusters, com cada cluster ocupando 32 KiB de espaço em disco.
O tamanho grande do cluster resultará em um grande desperdício de espaço em disco. Portanto, será recomendado que o FAT32 seja usado nesta partição, o que resultará na redução do tamanho do cluster de 32 KiB para 4 KiB.
Na verdade, isso reduzirá a folga no disco em uma quantidade enorme, que pode ser de até 30% e potencialmente liberar centenas de megabytes de espaço em disco anteriormente desperdiçado. Geralmente é a coisa certa a fazer nesta situação. No entanto, tem um outro lado. Não recebemos esse tamanho de cluster reduzido gratuitamente.
Como cada cluster é menor, deve haver mais deles para cobrir a mesma quantidade de disco. Então, em vez de 65.526 clusters, agora teremos 524.208.
Além disso, as entradas FAT em FAT32 têm 32 bits de largura (cada entrada de 4 bytes), enquanto as entradas de FAT16 são de 16 bits (entrada de 2 bytes cada). O resultado final é que o tamanho do FAT é 16 vezes maior para o FAT32 do que para o FAT16. A tabela a seguir resume:
FAT 16 and FAT 32 for 2,048 MB Disk Volume |
FAT Type |
FAT16 |
FAT32 |
Cluster Size |
32 KiB |
4 KiB |
Number of FAT Entries |
65,526 |
524,208 |
Size of FAT |
131052 Bytes
(~ 128 KiB) |
2096832 Bytes
(~ 2 MiB) |
Se aumentarmos o tamanho do volume FAT32 de 2 GB para 8 GB, o tamanho do FAT aumenta de cerca de 2 MiB para 8 MiB. O significado disso não é o fato de que o volume FAT32 terá que desperdiçar vários megabytes de espaço no disco para armazenar o FAT. Porque só fazendo isso está economizando muito mais espaço do que reduzindo o tamanho do FAT. O verdadeiro problema é que o FAT contém todos os ponteiros de cluster para cada arquivo no volume. Aumentar muito o tamanho do FAT pode afetar negativamente a velocidade do sistema.
Por esse motivo, é importante limitar o tamanho da Tabela de alocação de arquivos a um número de tamanho razoável. Na verdade, na maioria dos casos, trata-se de encontrar um equilíbrio entre o tamanho do cluster e o tamanho da FAT. Uma boa ilustração disso são as seleções de tamanho de cluster feitas pelo próprio FAT32.
Como o FAT32 pode lidar com cerca de 268 milhões de clusters no máximo, o tamanho do cluster de 4 KiB é conceitualmente capaz de suportar um volume de disco de 1 TiB (1.024 GiB), mas o problema ao fazer isso é que o tamanho do FAT seria superior 1 GB de acordo com 268 milhões de vezes 4 bytes por entrada.
Por esse motivo, o FAT32 usa apenas clusters de 4 KiB para volumes de até 8 GiB de tamanho e, em seguida, clusters maiores são usados conforme mostrado na tabela fornecida anteriormente, para Tamanhos de cluster. O tamanho máximo de partição suportado pelo FAT32, declarado oficialmente é 2.048 GiB (2 TiB).
Estrutura lógica de um disco rígido
Basicamente, podemos dividir a estrutura lógica do disco rígido nos seguintes cinco termos lógicos:
- MBR (Registro mestre de inicialização)
- DBR (Registro de inicialização do DOS)
- FAT (Tabelas de Alocação de Arquivos)
- Diretório raiz
- Área de dados
A figura a seguir representa o arranjo conceitual desses termos lógicos formando a estrutura lógica de um disco rígido:
O Master Boot Record (MBR) ou às vezes referido como The master partition table (MPT), contém um pequeno programa para carregar e iniciar a partição ativa (ou inicializável) da unidade de disco rígido. O registro mestre de inicialização contém informações sobre todas as quatro partições primárias na unidade de disco rígido, como o setor inicial, o setor final, o tamanho da partição etc.
O MBR está localizado no Setor Absoluto 0 ou podemos dizer no cilindro 0, cabeça 0 e setor1 e se houver mais de uma partição presente no disco existem Registros de Inicialização Mestre Estendidos, localizados no início de cada volume de partição estendido (veja a figura dada a seguir).
O MBR é criado na unidade de disco rígido executando o comando FDISK.EXE do DOS. No entanto, existem muitos outros softwares disponíveis para fazer a mesma tarefa. Usando o FDISK, qualquer uma dessas partições pode ser ativada ou inicializável.
Isso permite que o setor de inicialização da partição ativa receba o controle quando o sistema for iniciado. Como o disquete não possui partições, não há MBR em um disquete.
Como o DOS usa um único alfabeto maiúsculo para nomear uma partição, o número máximo de todos os tipos de partições permitidos pelo DOS é 24, começando da letra de unidade C (C:) até a letra de unidade Z (Z:) . Portanto, mesmo que haja mais de uma unidade de disco rígido física presente, o número total de partições de todas as unidades não pode exceder 24.
Após o Power-On Self Test (POST), o BIOS carrega o MBR (Master Boot Record) do disco rígido na memória e o executa. Primeiro, o MBR verifica se há uma partição ativa no disco rígido, depois carrega o registro de inicialização do DOS (DBR) na memória e passa o controle para o código de inicialização do sistema operacional e, em seguida, o código de registro de inicialização do sistema operacional carrega o restante do sistema operacional em Memória.
MFormato de registro de inicialização aster
Podemos particionar a unidade de disco rígido em várias unidades lógicas que geralmente recebem sua própria letra de unidade pelo DOS. Apenas uma partição de cada vez pode ser marcada como a partição ativa (ou inicializável).
O Master Boot Record tem o limite de quatro entradas na Master Partition Table. No entanto, a localização do Extended Master Boot Record pode ser obtida com a ajuda do Master Boot Record que contém Extended Partition Tables, cujo formato é exatamente o mesmo da tabela de partição principal, exceto que não há código de inicialização.
No registro mestre de inicialização estendido, esse espaço de 446 bytes normalmente é reservado para o código de inicialização e permanece vazio. Todos os 512 Bytes do Master Boot Record estão quebrados como segue, dado na Tabela:
Offset |
Description |
Size |
000H |
Initial Program Loader (IPL) , Executable Code (Provides very first booting to the Computer) |
446 Bytes |
1BEH |
First Partition Entry (See Next Table) |
16 Bytes |
1CEH |
Second Partition Entry |
16 Bytes |
1DEH |
Third Partition Entry |
16 Bytes |
1EEH |
Fourth Partition Entry |
16 Bytes |
1FEH |
Executable Marker or Bootable Sector Signature or Magic Number (AAH 55H) |
2 Bytes |
Total = 512 Bytes |
All the extended partitions should exist within the space reserved by the extended partition entry. Only two of the extended partitions are meant to be used, the first as a normal partition and the second as another extended partition if exists. Thus with the help of one Master Partition Table We can get the location of another Extended Master Partition Table next to it, if present.
Formato de entrada da tabela de partição
O formato de entrada da tabela de partição de qualquer partição no MBR foi fornecido na tabela a seguir. Cada entrada de partição de qualquer MBR pode ser dividida nos seguintes bytes com seus significados específicos:
Byte Indicador de Tipo de Inicialização (1 Byte): Se este byte for 00H, significa que a partição não está ativa e se o byte for 80H, significa que a partição é uma partição Ativa ou Inicializável . Embora a presença de qualquer outro byte não seja esperada, se houver qualquer outro byte presente, pode ser devido à corrupção da tabela de partição ou devido a qualquer ataque de VÍRUS na tabela de partição.
Cilindro Inicial – Cabeça – Setor Número da Partição (3 Bytes): Quando calculamos o CHS (Cilindro, Cabeça e Setor) de qualquer disco, os CHS Físicos são contados da seguinte forma:
- O Setor Físico é contado a partir de 1.
- A Cabeça Física é contada a partir de 0.
- O Cilindro Físico é contado a partir de 0 (consulte o Capítulo Anterior para obter detalhes)
- O Byte no deslocamento 01H representa o número inicial inicial em sistema hexadecimal para a partição.
6 Bits de Byte Menos Significativos no deslocamento 02H fazem o Número do Setor Inicial da partição e Combinação dos 2 Bits restantes (como Dois Bits Mais Significativos) mais 8 Bits de outro Byte no deslocamento 03H (Resta 8 Bits menos Significativos dos 10 -Bit Number) faça o Número do Cilindro Inicial da Partição.
Offset |
Meaning |
Size |
Description |
00H |
Boot Type Indicator Byte |
1 Byte |
If Byte is 00H, the Partition is Inactive and if Byte is 80H , The Partition is Active (or Bootable) |
01H |
Head Number of Beginning of the Partition |
1 Byte |
Starting Head number of the Partition in Hexadecimal System |
02H |
Sector and Cylinder Number of Beginning of the Partition |
2 Bytes |
6 Bits of First Byte make Starting Sector Number and Combination of remaining 2 Bits (as Two Most Significant Bits) plus 8 Bits of another Byte (Rest 8 least Significant Bits of the 10-Bit Number ) make the Starting Cylinder Number of the Partition |
04H |
File System indicator Byte |
1 Byte |
File System Indicator Byte in Hexadecimal system (See the Table given next for Indicators) |
05H |
Head Number of End of the Partition |
1 Byte |
Ending Head Number of the Partition in Hexadecimal System |
06H |
Sector and Cylinder Number of End of the Partition |
2 Bytes |
6 Bits of First Byte make Ending Sector Number and Combination of remaining 2 Bits (as Two Most Significant Bits) plus 8 Bits of another Byte (Rest 8 least Significant Bits of the 10-Bit Number ) make the Ending Cylinder Number of the Partition |
08H |
Relative Sector number of Beginning of the Partition |
4 Bytes |
Number of Sectors Between the MBR and the First Sector in the Partition |
0CH |
Number of Sectors of the Partition |
4 Bytes |
Number of Sectors in the Partition |
Total = 16 Bytes |
A Codificação do Cilindro e do Setor foi fornecida no exemplo de um estudo de tabela de partição de amostra realizado a seguir.
Byte Indicador do Sistema de Arquivos (1 Byte): Byte Indicador do Sistema de Arquivos no deslocamento 04H representa o sistema de arquivos dessa partição. A tabela, listando o byte indicador do sistema de arquivos para vários sistemas de arquivos, é apresentada a seguir neste capítulo.
Cilindro Final – Cabeça – Número do Setor da Partição (3 Bytes): A codificação é a mesma do Cilindro Inicial – Cabeça – Número do Setor da Partição.
Número do Setor Relativo do Início da Partição (4 Bytes): Número de Setores entre o MBR e o Primeiro Setor na Partição em Sistema Hexadecimal.
Número de Setores da Partição (4 Bytes): Número de Setores da Partição em sistema Hexadecimal.
Deve sempre ser lembrado que os números do Cilindro, Cabeça e Setor são aqueles que devem ser passados para o BIOS. Assim, se o BIOS estiver usando a tradução (modo LBA ou INT 13H Extensions Support), os valores podem não representar os valores físicos de CHS. Para discos rígidos grandes (superiores a 8,4 GB), os valores CHS podem ser inválidos. Esses valores geralmente devem ser ignorados e os valores absolutos do setor são usados.
A figura a seguir mostra o MBR de um disco com partições FAT32. A área destacada de 64 bytes no final da figura representa a Master Partition Table do MBR.
A codificação para o CHS inicial e final é a seguinte:
- No deslocamento 00H, 80 (Hex) representa que a partição é uma partição ativa.
- No deslocamento 01H, 01 (Hex) representa o número da cabeça inicial = 1.
- A combinação de dois bytes no deslocamento 02H e 03H formam o setor inicial
e número do cilindro da partição de acordo com a codificação fornecida a seguir:
Thus Iniciando C-H-S da partição= 0-0-1.
Da mesma forma, o número da cabeça para o final da partição é FE (Hex), que é 254 e a codificação para o cilindro final e o número do setor da partição foram fornecidos na tabela a seguir:
Assim, o final C-H-S da partição = 701-254-63.
O Byte 0B (Hex) no deslocamento 04H é o Byte Indicador do Sistema de Arquivos para a Partição. O Byte 0B (H) Representa que a Partição está tendo o sistema de arquivos FAT32. A tabela para vários sistemas de arquivos e seus bytes indicadores de sistema de arquivos são fornecidos a seguir:
File system Indicator Byte in Hexadecimal |
Partition/ File system Description |
00H |
Unused/Empty Partition-Table Entry
(Remember this is not used to designate unused area on the disk, but marks an unused partition table entry) |
01H |
DOS 12-bit fat
(The type 01H is for partitions up to 15 MB) |
02H |
XENIX: root file system |
03H |
XENIX /usr file system (obsolete)
(XENIX is an old part of Unix V7. Microsoft XENIX Operating System was announced in August 1980. It was a portable and commercial version of the Unix operating system for the Intel 8086, Zilog Z8000, Motorola M68000 and Digital Equipment PDP-11. Microsoft introduced XENIX 3.0 in April 1983. SCO delivered its first XENIX for 8088/8086 in 1983.) |
04H |
16-bit FAT, DOS 3.0+ (Partition size < 32M)
(Some old DOS versions have had a bug which required this partition to be located in the 1st physical 32 MB of the hard disk ) |
05H |
DOS Extended (DOS 3.3+ Extended Volume)
Supports at most 8.4 GB disks. With this type 05H DOS/Windows will not use the extended BIOS call, even if it is available.) |
06H |
16-bit FAT, DOS Big, DOS 3.31+ (Partition Size >= 32M)
(Partitions are at most 2 GB for DOS and Windows 95/98 with maximum 65536 clusters with each cluster, at most 32 KB. Windows NT can create up to 4 GB FAT16 partition using 64 KB clusters.) |
07H |
OS/2 IFS (Installable File System) (HPFS is the best known example of this file system. OS/2 only looks at partitions with ID 7 for any installed IFS this is the reason that EXT2 IFS packet includes a special "Linux partition filter" device driver to fool OS/2 into thinking Linux partitions have ID 07). |
07H |
Advanced Unix |
07H |
Windows NT NTFS |
07H |
QNX2.x (pre-1988)
(For the actual file system of partition type 07H, one should inspect the partition boot record) |
08H |
OS/2 (v1.0 to v1.3 only) |
08H |
AIX boot partition
[AIX (Advanced Interactive Executive) is the IBM's version of Unix] |
08H |
SplitDrive |
08H |
DELL partition spanning multiple drives |
08H |
Commodore DOS |
08H |
QNX 1.x and 2.x
("qny" according to QNX partitions) |
09H |
AIX data partition |
09H |
Coherent file system
[Coherent was a UNIX like Operating System for the 286-386-486 systems, marketed by Mark Williams Company led by Bob Swartz. It was renowned for its good documentation. It was introduced in 1980 and died 1 Feb 1995. The last versions are V3.2 for 286-386-486 and V4.0 (May 1992, using protected mode) for 386-486 only. It sold for $99 a copy and it is rumored that 40000 copies have been sold. A Coherent partition has to be primary. ] |
09H |
QNX 1.x and 2.x ("qnz" according to QNX Partitions) |
0aH |
OS/2 Boot Manager
(OS/2 is the operating system designed by Microsoft and IBM to be the successor of MS-DOS) |
0aH |
Coherent swap partition |
0aH |
OPUS
(Open Parallel Unisys Server) |
0bH |
WIN95 OSR2 32-bit FAT
(OSR2 stands for Microsoft’s “OEM Service Release 2”. It is for Partitions up to 2047GB. Almost always, Windows 95/98/ME have the same File system which is FAT-32, within the same partitions limits) |
0cH |
LBA-mapped WIN95 OSR2 32-bit FAT
(It is using Logical Block Addressing – mode of Interrupt 13H extensions therefore we can say that this is the Extended INT 13H equivalent of 0BH. Almost always, Windows 95/98/ME have the same File system which is FAT-32, within the same partitions limits) |
0eH |
LBA-mapped WIN95: DOS 16-bit FAT or Logical Block Addressable VFAT
(It is same as 06H but using LBA-mode of INT 13H) |
0fH |
LBA-mapped WIN95: Extended partition or Logical Block Addressable VFAT
(It is same as 05H but using LBA-mode of INT 13H. Windows 95 uses 0EH and 0FH as the extended INT13H equivalents of 06H and 05H. Windows NT does not recognize the four Windows 95/98/ME types 0BH, 0CH, 0EH and 0FH) |
10H |
OPUS
(Octal Program Updating System) |
11H |
Hidden DOS 12-bit FAT or OS/2 Boot Manager hidden 12-bit FAT partition or DOS Seen From OS/2 (When OS/2 Boot manager boots a DOS partition, it will hide all primary DOS partitions except the one that is booted, by changing its ID and 01H, 04H, 06H and 07H becomes 11H, 14H, 16H and 17H, respectively. |
12H |
Compaq Configuration/diagnostics partition
(It is used by Compaq for their configuration utility partition. It is a FAT-compatible partition that boots into their utilities, and can be added to a LILO menu as if it were MS-DOS. ) |
14H |
(Hidden DOS 16-bit FAT or OS/2 Boot Manager Hidden DOS 16-bit FAT) <32M Partition
(Partition size is less than 32M. ID 14H is resulted from using Novell DOS 7.0 FDISK to delete Linux Native partition. ) |
15H |
Hidden DOS-Extended |
16H |
(Hidden DOS 16-bit FAT or OS/2 Boot Manager hidden 16-bit FAT ) >=32M Partition |
17H |
OS/2 Boot Manager hidden HPFS partition or Hidden IFS (e.g., HPFS) |
17H |
Hidden NTFS partition |
18H |
AST SmartSleep Partition or AST special Windows swap file ("Zero-Volt Suspend" partition)
[AST Research, Inc. (named from first initials of the founders, Albert Wong, Safi Qureshey and Thomas Yuen). Ascentia laptops have a “Zero – Volt Suspend Partition” or `SmartSleep Partition' of size 2MB+memory size.] |
File system Indicator Byte in Hexadecimal |
Partition/ File system Description |
19H |
Willowtech Photon COS
(Code 19H is Claimed for Willowtech Photon COS by Willow Schlanger. |
1bH |
Hidden WIN95 OSR2 32-bit FAT or Hidden Windows 95 FAT32 Partition |
1cH |
LBA-mapped Hidden WIN95 OSR2 32-bit FAT
(It is hidden Windows95 FAT32 partition using LBA-mode of INT 13H Extensions) |
1eH |
LBA-mapped Hidden WIN95 16-bit FAT or Hidden LBA VFAT partition |
1FH |
LBA mapped Hidden WIN95 Extended or Hidden Extended LBA VFAT Partition |
20H |
OFSI
(Willowsoft Overture File System ) |
21H |
Officially listed as Reserved
(HP Volume Expansion, SpeedStor variant.) |
21H |
FSO2
(Claimed for FSO2 (Oxygen File System) by Dave Poirier) |
22H |
FSO2 Extended Partition
(Claimed for Oxygen Extended Partition by Dave Poirier) |
23H |
Officially listed as Reserved |
24H |
NEC DOS 3.x |
26H |
Officially listed as Reserved |
31H |
Officially listed as Reserved |
32H |
NOS (Network Operating System)
(32H is being used by the operating system NOS, being developed by Alien Internet Services in Melbourne Australia. The id 32H was chosen not only because of it was one of the few that are left available but also 32k is the size of the EEPROM the OS was originally targeted for. |
33H |
Officially listed as Reserved |
34H |
Officially listed as Reserved |
35H |
JFS on OS/2 or eCS
[35H is used by OS/2 Warp Server for e-Business, OS/2 Convenience Pack (aka version 4.5) and eComStation (eCS, an OEM version of OS/2 Convenience Pack) for the OS/2 implementation of JFS (IBM AIX Journaling File System)] |
36H |
Officially listed as Reserved |
38H |
THEOS v3.2 (2GB partition) |
39H |
Plan 9 partition
(Plan 9 is an operating system developed at Bell Labs for many architectures. Originally Plan 9 used an unallocated portion at the end of the disk. 3rd edition of Plan 9 uses partitions of type 39H, subdivided into sub partitions described in the Plan 9 partition table in the second sector of the partition.) |
39H |
THEOS v4 spanned partition |
3aH |
THEOS v4 (4GB partition) |
3bH |
THEOS v4 Extended partition
(THEOS is a multi-user multitasking Operating System for PCs founded by Timothy Williams in 1983.) |
3cH |
PartitionMagic recovery partition
(When a PowerQuest product like Partition Magic or Drive Image makes changes to the disk, it first changes the type flag to 3CH so that the Operating System will not try to modify it. At the end of the process, it is changed back to what it was at first. Therefore the only time you can see a 3CH type flag, is if the process was interrupted somehow such as power off, user reboot etc. If you change it back manually with a partition table editor or any disk editing program then most of the time everything is okay.) |
3dH |
Hidden NetWare |
40H |
Venix 80286
(It is a very old Unix-like operating system for PCs.) |
41H |
Linux/MINIX (sharing disk with DR-DOS)
(DR-DOS stands for Digital Research-Disk Operating System.) |
41H |
Personal RISC Boot |
41H |
PPC PReP (Power PC Reference Platform) Boot Partition |
42H |
Linux swap (sharing disk with DR-DOS) |
42H |
SFS (Secure File System)
(SFS is an encrypted file System driver for DOS on 386+ PCs, written by Peter Gutmann.) |
File system Indicator Byte in Hexadecimal |
Partition/ File system Description |
42H |
Windows 2000 Dynamic Extended Partition Marker
(If a partition table entry of type 42H is present in the legacy partition table, then Windows 2000 ignores the legacy partition table and uses a proprietary partition table and a proprietary partitioning scheme (LDM or DDM). Pure dynamic disks (those not containing any hard-linked partitions) have only a single partition table entry, type 42H to define the entire disk. Dynamic disks store their volume configuration in a database located in a 1-MB private region at the end of each dynamic disk.) |
43H |
Linux native (sharing disk with DR-DOS) |
44H |
GoBack partition
(GoBack is a utility that records changes made to the disk, allowing you to view or go back to some earlier state. It takes over disk I/O like a Disk Manager would, and stores its logs in its own partition.) |
45H |
Boot-US boot manager
(Boot-US (Ulrich Straub) boot manager can be installed to MBR, a separate primary partition or diskette. When installed to a primary partition this partition gets the ID 45H. This partition does not contain a file system, it contains only the boot manager and occupies a single cylinder (below 8.4 GB). ) |
45H |
Priam |
45H |
EUMEL/Elan |
46H |
EUMEL/Elan |
47H |
EUMEL/Elan |
48H |
EUMEL/Elan
(EUMEL, later known as Ergos L3, are the multi-user multitasking systems developed by Jochen Liedtke at GMD, using Elan programming Language. It was used at German schools for the computer science education.) |
4aH |
AdaOS Aquila |
4aH |
ALFS/THIN lightweight filesystem for DOS |
4cH |
Oberon partition |
4dH |
QNX4.x |
4eH |
QNX4.x 2nd partition |
4fH |
QNX4.x 3rd partition
(QNX is a POSIX (Portable Operating System Interface for Unix)-certified, microkernel, distributed, fault-tolerant Operating System for the 386 and later, including support for the 386EX in embedded applications.) |
4fH |
Oberon boot/data partition |
50H |
OnTrack Disk Manager (older versions), Read-Only Partition (Disk Manager is a program of OnTrack to enable people to use IDE disks that are larger than 504MB under DOS. Linux kernel versions older than 1.3.14 do not coexist with DM.) |
50H |
Lynx RTOS (Real-Time Operating System)
(Lynx RTOS gives users the ability to place up to 14 partitions of 2 GB each on both SCSI and IDE drives, for a total of up to 28 GB of file system space.) |
50H |
Native Oberon |
51H |
OnTrack Disk Manager (DM6.0 Aux1), Read/Write Partition |
51H |
Novell |
52H |
CP/M |
52H |
Microport SysV/AT or Microport System V/386 |
53H |
OnTrack Disk Manager (DM6.0 Aux3), Write-Only partition |
54H |
OnTrack Disk Manager 6.0 Dynamic Drive Overlay |
55H |
EZ-Drive Partition
(EZ-Drive is another disk manager like program developed by MicroHouse in 1992. Now It is marketed by StorageSoft.) |
56H |
Golden Bow VFeature Partitioned Volume.
(This is also a Disk Manager like Utility software. This is a Non-Standard DOS Volume.) |
56H |
DM converted to EZ-BIOS |
57H |
DrivePro
(DrivePro was developed by MicroHouse in 1992. Now It is marketed by StorageSoft.) |
57H |
VNDI Partition |
5cH |
Priam EDisk Partitioned Volume
(Priam EDisk is Disk Manager type utility software. This is a Non-Standard DOS Volume.) |
61H |
SpeedStor
(Storage Dimensions SpeedStor Partitioned Volume. This is a Non-Standard DOS Volume. It is Disk Manager type utility software.) |
63H |
Unix System V/386, 386/ix, SCO, ISC Unix, UnixWare, Mach, MtXinu BSD 4.3 on Mach, GNU Hurd |
64H |
Novell NetWare 286, 2.xx |
File system Indicator Byte in Hexadecimal |
Partition/ File system Description |
64H |
PC-ARMOUR protected partition
(64H is used by PC-ARMOUR disk protection by Dr. A. Solomon, intended to keep the disk inaccessible until the right password was given and then an INT 13H hook was loaded above top-of-memory that showed C-H-S = 0-0-2, with a copy of the real partition table, when 0-0-1 was requested). |
65H |
Novell NetWare 3.86, 3.xx or 4.xx
(Novell Netware 3.0 and later versions use one partition per drive. It allocates logical Volumes inside these partitions. The volumes can be split over several drives. The file system used is called Turbo FAT and it only very vaguely resembles the DOS FAT file system. Novell Netware used to be the main Network Operating System available. Netware 68 or S-Net (1983) was for a Motorola 68000, Netware 86 for an Intel 8086 or 8088. Netware 286 was for an Intel 80286 and existed in various versions that were later merged to Netware 2.2. Netware 386 was a rewrite in C for the Intel 386 which was later renamed to Netware 3.x (3.0, 3.1, 3.10, 3.11 and 3.12 etc) versions. Its successor Netware 4.xx had versions 4.00, 4.01, 4.02, 4.10 and 4.11. Then came Intranetware) |
66H |
Novell Netware SMS Partition
(SMS stands for Storage Management Services. It is not used now.) |
67H |
Novell |
68H |
Novell |
69H |
Novell Netware 5+ and Novell Netware NSS Partition
(NSS stands for Novell Storage Services.) |
70H |
DiskSecure Multi-Boot |
71H |
Officially listed as reserved |
73H |
Officially listed as reserved |
74H |
Officially listed as reserved |
74H |
Scramdisk partition
(Scramdisk is a disk encryption software. It supports container files, dedicated partitions type 74H and disks hidden in WAV audio files.) |
75H |
IBM PC/IX |
76H |
Officially listed as reserved |
77H |
M2FS/M2CS partition |
77H |
QNX 4.x |
78H |
XOSL File System
(XOSL Boot loader file system) |
78H |
QNY 4.x |
79H |
QNZ 4.x |
7EH |
F.I.X. |
7Fh |
Alt-OS-Development Partition Standard |
80H |
Old MINIX, MINIX v1.1 to v1.4a |
81H |
MINIX 1.4b and Later
(MINIX is a Unix-like operating system written by Andy Tanenbaum and students at the Vrije University, Amsterdam, around 1989-1991. It runs on PCs (8086 and up), Macintosh, Atari, Amiga, Sparc. |
81H |
Early Linux |
81H |
Mitac Advanced Disk Manager |
82H |
Prime |
82H |
Solaris x86
(Solaris creates a single partition with ID 82H and then uses Sun disk labels within the partition to split it further.) |
82H |
Linux Swap partition |
83H |
Linux Native Partition or Linux native file system or Linux Ext2fs
(Linux is a Unix-like operating system written by Linus Torvalds and many others on the internet since 1991. It runs on PCs 386 and later and a variety of other hardware. It is distributed under GPL (General Public License) . Various file system types like xiafs, ext2, ext3, reiserfs, etc. all use ID 83H.) |
84H |
OS/2 hidden C: drive or OS/2-renumbered type 04 partition.
(OS/2-renumbered type 04h partition is related to hiding DOS C: drive) |
84H |
Hibernation partition
(Reported for various laptop models, e.g., used on Dell Latitudes (with Dell BIOS) that use the MKS2D utility.) |
85H |
Linux Extended partition |
86H |
Old Linux RAID partition super block |
86H |
FAT16 volume/stripe set (Windows NT) or NTFS volume set
(It is Legacy Fault Tolerant FAT16 volume.) |
87H |
HPFS Fault-Tolerant mirrored partition or NTFS volume set or NTFS volume/stripe set
(Legacy Fault Tolerant NTFS volume. HPFS Fault-Tolerant mirrored partition. ) |
8aH |
Linux Kernel Partition
(It is used by AiR-BOOT) |
File system Indicator Byte in Hexadecimal |
Partition/ File system Description |
8bH |
Legacy Fault Tolerant FAT32 volume |
8cH |
Legacy Fault Tolerant FAT32 volume using BIOS Extended INT 13H. |
8dH |
Free FDISK hidden Primary DOS FAT12 partition
(Free FDISK is the FDISK used by FreeDOS. It hides types 01H, 04H, 05H, 06H, 0BH, 0CH, 0EH and 0FH by adding decimal Number 140 (8CH).) |
8eH |
Linux Logical Volume Manager partition |
90H |
Free FDISK hidden Primary DOS FAT16 partition |
91H |
Free FDISK hidden DOS extended partition |
92H |
Free FDISK hidden Primary DOS large FAT16 partition |
93H |
Hidden Linux native partition |
93H |
Amoeba file system |
94H |
Amoeba bad block table
(Amoeba is a distributed operating system written by Andy Tanenbaum, together with Frans Kaashoek, Sape Mullender, Robert van Renesse and others since 1981. It runs on PCs (386 and up), Sun3, Sparc, 68030. It is free for universities for research and teaching purposes.) |
95H |
MIT EXOPC native partition |
97H |
Free FDISK hidden Primary DOS FAT32 partition |
98H |
Free FDISK hidden Primary DOS FAT32 partition (LBA) |
99H |
Mylex EISA SCSI or DCE376 logical drive
(It is used by the Mylex DCE376 EISA SCSI adaptor for partitions which are beyond the 1024 cylinder of a drive.) |
9aH |
Free FDISK hidden Primary DOS FAT16 partition (LBA) |
9bH |
Free FDISK hidden DOS extended partition (LBA) |
9fH |
BSD/OS |
a0H |
Phoenix NoteBIOS Power Management "Save-to-Disk" partition or Laptop hibernation partition
(It is Reported for various laptops like IBM Thinkpad, Phoenix NoteBIOS, Toshiba under names like zero-volt suspend partition, suspend-to-disk partition, save-to-disk partition, power-management partition, hibernation partition, usually at the start or end of the disk area.) |
a1H |
Laptop hibernation partition
(Used as "Save-to-Disk" partition on a NEC 6000H notebook. Types A0H and A1H are used on systems with Phoenix BIOS. The Phoenix PHDISK utility is used with these.) |
a1H |
HP Volume Expansion (SpeedStor variant) |
a3H |
Officially listed as Reserved |
a4H |
Officially listed as Reserved |
a5H |
BSD/386, 386BSD, NetBSD, FreeBSD
(386BSD is a Unix-like operating system, a port of 4.3BSD Net/2 to the PC done by Bill Jolitz around 1991.) |
a6H |
OpenBSD
(OpenBSD, led by Theo de Raadt, split off from NetBSD. It tries to emphasize on security.) |
a7H |
NEXTSTEP
(NEXTSTEP is Based on Mach 2.6 and features of Mach 3.0. It is a true object-oriented operating system and user environment. |
a8H |
Mac OS-X
(Apple's OS-X uses this type for its file system partition) |
a9H |
NetBSD |
aaH |
Olivetti Fat 12 1.44MB Service Partition
(It Contains a bare DOS 6.22 and a utility to exchange types 06H and AAH in the partition table.) |
abH |
Mac OS-X Boot partition
(Apple's OS-X (Darwin Intel) uses this type for its boot partition.) |
abH |
GO! partition |
aeH |
ShagOS file system |
afH |
ShagOS swap partition |
b0H |
BootStar Dummy
(The boot manager BootStar manages its own partition table, with up to 15 primary partitions. It fills unused entries in the MBR with BootStar Dummy values.) |
b1H |
Officially listed as Reserved |
b3H |
Officially listed as Reserved |
b4H |
Officially listed as Reserved |
b6H |
Officially listed as Reserved |
B6H |
Windows NT mirror set (master), FAT16 file system |
b7H |
BSDI file system (secondarily swap), BSDI BSD/386 file system |
B7H |
Windows NT mirror set (master), NTFS file system |
File system Indicator Byte in Hexadecimal |
Partition/ File system Description |
b8H |
BSDI BSD/386 swap partition (secondarily file system)
(BSDI (Berkeley Software Design, Inc.) was founded by former CSRG (UCB Computer Systems Research Group) members. Their operating system, based on Net/2, was called BSD/386.) |
bbH |
Boot Wizard hidden |
beH |
Solaris 8 boot partition |
c0H |
DR-DOS/Novell DOS secured partition |
C0H |
CTOS |
c0H |
REAL/32 secure small partition |
c0H |
NTFT Partition |
c1H |
DR DOS 6.0 LOGIN.EXE-secured 12-bit FAT partition |
c2H |
Reserved for DR-DOS 7+ |
c2H |
Hidden Linux |
c3H |
Hidden Linux swap |
c4H |
DR DOS 6.0 LOGIN.EXE-secured 16-bit FAT partition |
c5H |
DRDOS/secured (Extended) |
c6H |
DRDOS/secured (FAT-16, >= 32M)
(DR-DOS 6.0 will add C0H to the partition type for a LOGIN.EXE - secured partition so that User can not avoid the password check by booting from an MS-DOS floppy. Otherwise it seems that the types C1H, C4H, C5H, C6H and D1H, D4H, D5H, D6H are used precisely like 1H, 4H, 5H, and 6H.) |
c6H |
Corrupted FAT16 volume/stripe set (Windows NT)
(NTFS will add C0H to the partition type for disabled parts of a Fault Tolerant set. Thus, one gets types C6H, C7H.) |
c7H |
Windows NT corrupted NTFS volume/stripe set |
c7H |
Syrinx boot |
c8H |
Officially listed as Reserved |
c9H |
Officially listed as Reserved |
caH |
Officially listed as Reserved |
cbH |
Reserved for DR-DOS secured FAT32 |
ccH |
Reserved for DR-DOS secured FAT32 (LBA) |
cdH |
CTOS Memdump |
ceH |
Reserved for DR-DOS secured FAT16 (LBA) |
d0H |
REAL/32 secure big partition
(REAL/32 is a continuation of DR Multi-user DOS.) |
d1H |
Old Multi-user DOS secured FAT12 |
d4H |
Old Multi-user DOS secured FAT16 <32M |
d5H |
Old Multi-user DOS secured extended partition |
d6H |
Old Multi-user DOS secured FAT16 >=32M |
d8H |
CP/M-86 |
daH |
Non-FS Data |
dbH |
Digital Research CP/M, Concurrent CP/M, Concurrent DOS |
dbH |
CTOS (Convergent Technologies OS -Unisys) |
dbH |
KDG Telemetry SCPU boot
(KDG Telemetry uses ID DBH to store a protected-mode binary image of the code to be run on a 'x86-based SCPU (Supervisory CPU) module from the DT800 range.) |
ddH |
Hidden CTOS Memdump |
deH |
Dell PowerEdge Server utilities (FAT) |
dfH |
DG/UX virtual disk manager partition |
dfH |
BootIt EMBRM
(The boot manager BootIt manages its own partition table, with up to 255 primary partitions.) |
e0H |
Reserved by ST Microelectronics for a file system called ST AVFS. |
e1H |
DOS access or SpeedStor 12-bit FAT extended partition
(It is a SSTOR partition on cylinders more than 1023.) |
E2H |
DOS Read-Only |
e3H |
Storage Dimensions |
e4H |
SpeedStor 16-bit FAT extended partition < 1024 cylinders |
e5H |
Officially listed as Reserved |
e5H |
Tandy DOS with logical sectored FAT |
e6H |
Officially listed as Reserved |
ebH |
BeOS BFS (BFS1)
(BeOS is an operating system that runs on Power PCs) |
edH |
Reserved for Matthias Paul’s Sprytix |
eeH |
Indication that this legacy MBR is followed by an EFI Header |
efH |
Partition that contains an EFI file system |
f0H |
Linux/PA-RISC boot loader |
f1H |
Storage Dimensions |
f2H |
DOS 3.3+ secondary partition |
f2H |
Unisys DOS with logical sectored FAT |
f3H |
Officially listed as Reserved |
f4H |
SpeedStor large partition |
F4H |
Prologue single-volume partition |
File system Indicator Byte in Hexadecimal |
Partition/ File system Description |
f5H |
Prologue multi-volume partition
(The type F4H partition contains one volume, and is not used anymore. The type F5H partition contains 1 to 10 volumes called MD0 to MD9. It supports one or more systems. Each volume can have as file system the NGF file system or TwinFS file system. ) |
f6H |
Officially listed as Reserved |
F6H |
Storage Dimensions SpeedStor |
faH |
MandrakeSoft's Bochs x86 emulator |
fbH |
VMware File System partition |
fcH |
VMware Swap partition
(VMware offers virtual machines in which one can run Linux, Windows, FreeBSD.) |
fdH |
Linux raid partition with auto detect using persistent super block |
feH |
SpeedStor more than 1024 cylinders |
feH |
LANstep |
feH |
IBM PS/2 IML (Initial Microcode Load) partition
(It is located at the end of the disk.) |
feH |
Windows NT Disk Administrator hidden partition
(Windows NT Disk Administrator marks hidden partitions, i.e. present but not to be accessed, as type FEH.) |
feH |
Linux Logical Volume Manager partition (old) |
ffH |
XENIX Bad Block Table |
Registro de inicialização do DOS (DBR) / Setor de inicialização do DOS
Após a tabela de partições, o DOS Boot Record (DBR) ou às vezes chamado DOS Boot Sector é a segunda informação mais importante em seu disco rígido. A maioria dos aplicativos comerciais para recuperação de disco são capazes de regenerar registros de inicialização destruídos
O DOS Boot Record (DBR) para a primeira partição em um disco rígido é geralmente encontrado no Setor Absoluto 63 (o 64º setor na unidade de disco) ou na forma CHS, podemos dizer C–H–S = 0–1–1 para a maioria das unidades.
No entanto, esta localização pode variar dependendo do SPT (Setores por Pista) do Drive. Por exemplo, em uma unidade antiga de 245 MB com apenas 31 SPT, o registro de inicialização estava localizado no 32º setor (Absolute Sector 31).
O DBR é criado pelo comando FORMAT do DOS. Este programa pode ser executado a partir de um disquete DOS (ou diretamente de outro volume, seguindo alguns limites do SO) para criar o DBR após o particionamento ser feito usando o comando FDISK.
O setor no qual o DBR reside torna-se o setor lógico 1 dessa partição específica para o DOS. O número do setor usado pelo DOS começa no setor físico no qual o DBR está localizado.
O primeiro setor lógico de cada partição DOS conterá um DOS Boot Record (DBR) ou DOS Boot Sector. O trabalho do DBR é carregar o sistema operacional do disco rígido para a memória principal do computador e dar o controle do sistema ao programa carregado.
Para fazer isso, o DBR contém um pequeno programa que é executado pelo programa executável Master Boot Record (MBR). Todas as partições DOS contêm o código do programa para inicializar a máquina, ou seja, carregar o sistema operacional, mas apenas essa partição recebe controle do Master Boot Record, que é especificado como partição ativa, na entrada da tabela de partições.
O programa de inicialização no DBR procura os dois arquivos de programa IBMBIO.COM ou IO.SYS e IBMDOS.COM ou MSDOS.SYS, no diretório raiz da partição. IBMBIO.COM e IBMDOS.COM são dois arquivos de programa de sistema ocultos nos sistemas PC-DOS ou sistemas IBM originais. Considerando que IO.SYS e MSDOS.SYS são dois arquivos de programa de sistema ocultos em um sistema operacional MS-DOS fornecido com sistemas compatíveis com IBM.
Depois disso, o programa IO.SYS (ou IBMBIO.COM) carrega o programa MSDOS.SYS (ou IBMDOS.COM) e o programa COMMAND.COM. Este processo completo é chamado de “inicialização” do computador. Se esses arquivos do sistema não estiverem disponíveis no diretório, este programa MBR exibirá mensagens de erro como:
“Invalid system disk or Disk I/O error,
Replace the disk, and then press any key…”
Na tela e espera que o usuário coloque um disco inicializável com os programas mencionados acima no drive de disquete e pressione uma tecla.
Como o disquete não possui partições, ele não possui MBR ou Master Partition Table em seu setor absoluto 0, em vez disso, ele contém o DBR em seu primeiro setor.
A tabela a seguir fornece um mapa simples do layout de um disquete de 3½ polegadas e 1,44 MB após ter sido formatado com o sistema de arquivos FAT12. Mostra onde estão localizados o Boot Record, ambas as cópias do FAT, o Root Directory e o início da Data Area:
Logical Map of 3½ Inches, 1.44 MB floppy disk, Formatted with the FAT12 File System and having 18 Sectors Per Track, 80 Tracks, 2 Sides and 512 bytes per Sector (using 1 Sector per Cluster). |
Absolute Sectors |
Contents |
0 |
Boot Record |
1 – 9 |
FAT 1 |
10 – 18 |
FAT 2 |
19 – 32 |
Root Directory |
33 – 2879 |
Data Area |
Você também pode criar subdiretórios na Área de Dados com arquivos que parecem estar contidos neles. Na verdade, os subdiretórios nada mais são do que um arquivo especial que lista todos os arquivos aparentemente contidos neste diretório e todos os dados relevantes sobre cada arquivo, como a localização do cluster inicial de cada arquivo, data, hora e tamanho do arquivo etc.
O DBR também contém algumas informações importantes sobre a geometria do disco. Essas informações estão localizadas no primeiro setor de cada partição, como:
- Código de salto + NOP
- Nome e versão do OEM
- Bytes por setor
- Setores por cluster
- Setores reservados
- Número de cópias do FAT
- Máximo de entradas de diretório raiz (mas não disponível para FAT32)
- Número de setores na partição menor que 32 MB (portanto, não disponível para FAT32)
- Descritor de mídia (F8h para discos rígidos)
- Setores por FAT (em sistemas FAT mais antigos e não disponíveis para FAT32)
- Setores por faixa
- Número de cabeças
- Número de setores ocultos na partição
- Número de setores na partição
- Número de setores por FAT
- Sinalizadores do descritor de informações FAT
- Versão da unidade FAT32
- Número do cluster do início do diretório raiz
- Número do setor do setor de informações do sistema de arquivos
- Número do setor de inicialização de backup
- Reservado
- Número de partição da unidade lógica
- Assinatura estendida (29H)
- Número de série da partição
- Nome do volume da partição
- Nome FAT
- Código executável
- Marcador executável ou número mágico (AAH 55H)
Os primeiros 3 Bytes do DBR contêm uma instrução JMP para pular as informações e possibilitar as extensões, pois o MBR carrega esse setor na memória e transfere a execução para ele. Normalmente, esses três bytes são números hexadecimais em formato algo como E9 XX XX (Hex) ou EB XX 90 (Hex).
Após a instrução JMP inicial, a ID do OEM é um campo de 8 bits que é reservado pela Microsoft para identificação do OEM. A ID OEM descreve o programa que criou o registro de inicialização. Geralmente é "MSWIN4.0" para Windows 95/98/ME, "IBM 20.0" para OS/2 e "MSDOS5.0" para MS-DOS 4.0 e posterior.
O terceiro componente principal do setor de inicialização é o BIOS Parameter Block (BPB). O bloco de parâmetros do disco é uma área de dados muito importante para o DOS. Ajuda o DOS a encontrar:
- Bytes por setor
- Setores por cluster
- Setores reservados
- Número de gordura
- Número de entradas do diretório raiz
FAT32 DOS Boot Record Format |
Offset |
Description |
Size |
00H |
Jump Code + NOP |
3 Bytes |
03H |
OEM Name and Version |
8 Bytes |
0BH |
Bytes Per Sector |
2 Bytes |
0DH |
Sectors Per Cluster |
1 Byte |
0EH |
Reserved Sectors |
2 Bytes |
10H |
Number of Copies of FAT |
1 Byte |
11H |
Maximum Root Directory Entries (but Not Available for FAT32) |
2 Bytes |
13H |
Number of Sectors in Partition Smaller than 32MB (Therefore Not Available for FAT32) |
2 Bytes |
15H |
Media Descriptor (F8H for Hard Disks) |
1 Byte |
16H |
Sectors Per FAT (In Older FAT Systems and Not Available for FAT32) |
2 Bytes |
18H |
Sectors Per Track |
2 Bytes |
1AH |
Number of Heads |
2 Bytes |
1CH |
Number of Hidden Sectors in Partition |
4 Bytes |
20H |
Number of Sectors in Partition |
4 Bytes |
24H |
Number of Sectors Per FAT |
4 Bytes |
28H |
Flags (Bits 0-4 Indicate Active FAT Copy) (Bit 7 Indicates whether FAT Mirroring is Enabled or Disabled <Clear is Enabled>) (If FAT Mirroring is Disabled, the FAT Information is only written to the copy indicated by bits 0-4) |
2 Bytes |
2AH |
Version of FAT32 Drive (High Byte = Major Version, Low Byte = Minor Version) |
2 Bytes |
2CH |
Cluster Number of the Start of the Root Directory |
4 Bytes |
30H |
Sector Number of the File System Information Sector (Referenced from the Start of the Partition) |
2 Bytes |
32H |
Sector Number of the Backup Boot Sector (Referenced from the Start of the Partition) |
2 Bytes |
34H |
Reserved |
12 Bytes |
40H |
Logical Drive Number of Partition |
1 Byte |
41H |
Unused (Could be High Byte of Previous Entry) |
1 Byte |
42H |
Extended Signature (29H) |
1 Byte |
43H |
Serial Number or 32 – Bit Binary ID of Partition
(Binary ID of 32 Bits provided by the OS itself) |
4 Bytes |
47H |
Volume Name of Partition |
11 Bytes |
52H |
FAT Name (FAT32 in this case) |
8 Bytes |
5AH |
Executable Code |
420 Bytes |
1FEH |
Executable Marker or Magic Number (AAH 55H) |
2 Bytes |
- Total de setores em volume lógico (pequeno, para tamanho de volume lógico menor ou igual a 32 MB)
- Byte do descritor de mídia
- Número de setores por FA
Esta informação nos ajuda a encontrar a localização do FAT e alguns outros valores importantes. Colocar informações erradas aqui ou corromper esses valores impossibilita a inicialização a partir da unidade de disco rígido. Às vezes, ter informações erradas no bloco de parâmetros do disco impedirá a inicialização da unidade de disco rígido, bem como da unidade de disquete.
Bytes por setor são quase sempre 512. Se não for assim, deve ser uma potência inteira de 2 (por exemplo, 64, 128 e 256).
O número de setores por cluster depende do tamanho do cluster. (Consulte a seção Clusters fornecida neste capítulo anterior). O número de cópias do FAT é quase sempre 2.
Número de diretórios raiz: depende do sistema de arquivos e do tamanho do volume. (Consulte os limites do sistema de arquivos fornecidos antes e a descrição do diretório raiz fornecida a seguir).
Número total de setores: Exclui setores ocultos. Se for 0 no BPB, o campo nas informações do registro de inicialização estendido é usado e vice-versa. Observe que é possível determinar se as informações estendidas (DOS 4.0 e posterior) estão disponíveis examinando o byte de assinatura no deslocamento 26H.
Quaisquer setores antes do setor de inicialização de uma unidade DOS lógica são considerados setores 'ocultos'. O DOS não interpreta setores ocultos. As unidades de disquete normais têm 0 setores ocultos. As partições do disco rígido terão um número refletindo sua localização na unidade. Observe que toda a primeira cabeça do primeiro cilindro é geralmente reservada para a tabela de partição, embora seja apenas o primeiro setor que é realmente usado.
Descritor de mídia: Usado para indicar a mídia ou o tipo de disco. Os valores normais são 0 para uma partição DOS estendida e F8H para um disco rígido. Os valores de Bytes do descritor de mídia foram fornecidos na tabela a seguir.
Media Descriptors |
Type |
Capacity |
Size and type |
F0H |
2.88 MB |
3.5", 2-Sided, 36 Sectors per Track |
F0H |
1.44 MB |
3.5", 2-Sided, 18 Sectors per Track |
F9H |
720 KB |
3.5", 2-Sided, 9 Sectors per Track |
F9H |
1.2 MB |
5.25", 2-Sided, 15 Sectors per Track |
FDH |
360 KB |
5.25", 2-Sided, 9 Sectors per Track |
FFH |
320 KB |
5.25", 2-Sided, 8 Sectors per Track |
FCH |
180 KB |
5.25", 1-Sided, 9 Sectors per Track |
FEH |
160 KB |
5.25", 1-Sided, 8 Sectors per Track |
F8H |
--------- |
Fixed Disk |
Número de Setores do FAT: Deve ser calculado. O método de cálculo do tamanho do FAT foi fornecido na descrição do FAT fornecida no capítulo.
O DBR de um sistema de arquivos FAT32 foi fornecido na figura a seguir:
Setores por Trilha (ou Setores por Cabeça): Setores por Cabeça é o número de setores agrupados sob uma cabeça. Da mesma forma, Cabeças por Cilindro reflete o número de cilindros por cabeça. Se esta partição for uma partição CHS, esses valores devem ser iguais aos retornados pelo BIOS. Se não forem iguais, deve-se considerar que o disco foi mal configurado e que a partição pode estar inutilizável.
Setores Ocultos: Como já discutimos, esse é o número de setores no disco físico que precede o início do volume, antes do próprio setor de inicialização. Ele é usado durante a sequência de inicialização para calcular o deslocamento absoluto para o diretório raiz e as áreas de dados. Pense nisso como o número de setores entre o início desta partição e a própria tabela de partição.
Este campo deve ser igual ao "número de setores que precedem a partição" na tabela de partições. Observe que não é necessariamente o endereço LBA físico do primeiro setor, pois podem existir partições secundárias.
Se os setores ocultos não forem os mesmos da tabela de partições, você pode considerar o setor de inicialização como corrompido e a partição inutilizável. Observe também que a palavra alta geralmente contém lixo em versões antigas do DOS.
Se você suspeitar que um setor de inicialização foi corrompido, verifique vários dos campos listados acima para ver se os valores listados fazem sentido.
Por exemplo, Bytes por Setor serão 512 na grande maioria dos casos. Você também pode esperar ver strings de texto na seção de código executável do setor de inicialização que são apropriadas para o sistema operacional que formatou o disco.
Por exemplo, strings de texto típicas em volumes FAT formatados pelo MS-DOS incluem: "Disco de sistema inválido.", "Erro de E/S de disco.", "Substitua o disco e pressione qualquer tecla", "Erro de disco ou disco não pertencente ao sistema", "Substitua e pressione qualquer tecla quando estiver pronto." e "Falha na inicialização do disco". As seqüências de texto em volumes FAT formatados pelo Windows NT incluem: "BOOT: Não foi possível (ou não) localizar NTLDR", "Erro de E/S ao ler disco". e "Insira outro disco."
Mas lembre-se de que você não deve considerar esta lista como abrangente. Se você encontrar outras mensagens no setor de inicialização, isso não indica necessariamente que há um problema com o setor de inicialização. Versões diferentes do MS-DOS e do Windows NT às vezes podem ter cadeias de mensagens ligeiramente diferentes em seus setores de inicialização.
Por outro lado, se você não encontrar nenhum texto, ou se o texto claramente não estiver relacionado ao MS-DOS ou Windows NT, você deve considerar a possibilidade de que seu setor de inicialização tenha sido infectado por um vírus ou que algum outra forma de corrupção de dados pode ter ocorrido.
Para recuperar de um setor de inicialização que foi infectado por um vírus, geralmente é melhor usar um programa antivírus comercial. Muitos vírus e cavalos de Troia farão muito mais do que apenas gravar dados no setor de inicialização, portanto, o reparo manual do setor de inicialização não é recomendado, pois pode não eliminar completamente o vírus ou o Trojan e, em alguns casos, pode causar mais danos do que benefícios. No entanto, vamos lidar com DBR na seção de programação deste livro.
Se você suspeitar que o setor de inicialização foi danificado por algum outro motivo, pode ser possível recuperar os danos do setor de inicialização sem reformatar a unidade modificando manualmente os campos descritos acima. Vamos tentar superar tais problemas com programação em técnicas de recuperação de programação neste livro.
Tabela de alocação de arquivos (FAT)
A seguir ao DBR estão as Tabelas de Alocação de Arquivos. A tabela de alocação de arquivos (FAT) foi introduzida em 1977 para armazenar dados em disquetes para o Disk Basic autônomo da Microsoft. O FAT foi modificado várias vezes para acomodar as necessidades de expansão. Ele foi desenvolvido para atender aos requisitos de um sistema rápido e flexível de gerenciamento de dados em mídias removíveis e fixas.
Em 1996, o FAT32 foi introduzido com o Windows 95 OSR2. Como discutimos anteriormente, o Windows 98/ME suporta FAT32 com o tamanho de discos rígidos. Agora, com esses sistemas operacionais, o sistema de arquivos FAT32 é comumente usado.
O primeiro sistema de arquivos DOS FAT (DOS 1.x) usava o sistema FAT de 12 bits que ainda está em uso hoje para disquetes. O DOS 2.x adicionou suporte para discos rígidos, mudou para entradas FAT de 16 bits devido a volumes maiores.
Por volta de 1987, o DOS 4.0 mudou o tratamento de setor de baixo nível para usar parâmetros de 32 bits para superar o problema de suporte a disco grande, pois já discutimos as limitações dos sistemas de arquivos.
FAT mantém um mapa da superfície completa da unidade de disco de tal forma que, qual área está livre, qual área está ruim, qual área é ocupada por qual arquivo etc. Quando alguns dados armazenados na superfície do disco devem ser acessados , o DOS consulta o FAT para descobrir as áreas da superfície do disco rígido que contém os dados.
O tipo de FAT a ser usado é decidido pelo programa FDISK durante a partição do disco rígido. Mas o FAT real é escrito pelo programa FORMAT do DOS.
O FAT não acompanha cada setor na superfície do disco, mas gerencia a área do disco em um grupo de setores chamado “cluster” ou “unidade de alocação” (consulte o Cluster discutido anteriormente, no mesmo capítulo).
Um cluster é a menor unidade de espaço de disco rígido que o DOS aloca para um arquivo, consiste em um ou mais setores, dependendo do tamanho da unidade. O tamanho do cluster é decidido e fixado pelo programa DOS FORMAT durante a formatação de alto nível do disco rígido. (Veja a discussão sobre “tamanho dos clusters”, dada anteriormente)
Na verdade, o FAT é um índice dos clusters de todo o volume. O FAT tem uma entrada para cada cluster. As duas primeiras entradas em um FAT contêm informações sobre o FAT. A terceira e as entradas subsequentes no FAT são atribuídas a clusters de espaço em disco, começando com o primeiro cluster disponível para uso por arquivos
Como o FAT é um item tão importante, o DOS mantém duas cópias do FAT, FAT ou FAT1 primário e FAT ou FAT2 secundário (normalmente há duas cópias, porém muitos novos sistemas operacionais criam mais de duas cópias de FAT).
Cada FAT ocupa setores contíguos no disco, com o 2º FAT imediatamente após o 1º FAT não faz o DOS usar o 2º FAT para corrigir o problema, ao invés disso quando o 1º FAT é atualizado o DOS copia para o 2º FAT, corrompendo o 2º FAT também, no processo.
Esta atualização é feita toda vez que o DOS descobre que o 1º e o 2º FAT não correspondem. Assim, em caso de qualquer corrupção do 1º FAT, deve-se fazer imediatamente o reparo usando algum software de edição de disco e comparando o 1º FAT com o 2º FAT. Isso deve ser feito antes que o DOS copie o FAT corrompido para o segundo FAT.
Com a introdução do FAT32, tanto as entradas FAT quanto a numeração do setor agora são de 32 bits. Isso significa que agora existem 4.294.967.296 valores distintos de 32 bits multiplicados por 512 bytes por setor, resultando em 2 terabytes (2.199.023.255.552 bytes) como o tamanho máximo de disco possível em FAT32.
O tamanho da entrada de diretório para cada arquivo em FAT 32 é de 4 bytes para conter o valor do cluster inicial do arquivo em vez dos 2 bytes necessários em FAT16. O valor maior acomoda o maior número de clusters possíveis.
Tradicionalmente, cada entrada de diretório é um registro de 32 bytes, e isso permanece o mesmo. No meio do registro do diretório há 10 bytes (bytes 12 a 21) que a Microsoft reservou para seu próprio uso futuro. Dois desses bytes agora são usados para acomodar os bytes extras necessários para especificar o cluster inicial em FAT32.
Como já discutimos, existem versões de 12 bits, 16 bits e 32 bits do FAT. Enquanto o FAT de 32 bits permite um armazenamento muito mais eficiente, que pode ser até 30% mais eficiente e o uso de discos rígidos maiores.
Quando o sistema de arquivos de um sistema operacional é invocado por um programa para localizar o conteúdo de um arquivo, o primeiro valor de cluster, na entrada de diretório desse arquivo, é lido e usado para localizar a cadeia FAT. A cadeia FAT é a lista de clusters que contém dados pertencentes a um arquivo.
FAT32 Drive Layout |
Offset |
Description |
Start of Partition |
Boot Sector |
Start of Partition + Number of Reserved Sectors |
FAT Tables |
Start of Partition + Number of Reserved Sector + (Number of Sectors Per FAT * 2)
[Assuming that FAT Mirroring is Enabled, this is almost always true] |
Root Directory |
Start of Partition + Number of Reserved Sectors + (Number of Sectors Per FAT * 2) + Number of Sectors in root directory |
Data Area |
As entradas FAT podem conter valores que indicam:
- O próximo cluster em uma cadeia FAT para um determinado arquivo
- Os clusters gratuitos, ou seja, os clusters que não estão em uso por nenhum arquivo
- As informações de setores defeituosos, ou seja, o cluster que contém um ou mais setores que estão fisicamente danificados e não devem ser usados.
- O cluster final de um arquivo
Entries of FAT Table |
Number (Hex.) |
Description |
0 |
Free cluster |
???? |
Cluster in use, next cluster in chain |
FF0-FF6 / FFF0-FFF6 |
Cluster is reserved |
FF7 /FFF7 |
Cluster contains bad sectors |
FF8-FFF / FFF8-FFFF |
End of file |
Cada entrada FAT representa um endereço de cluster e contém um ponteiro para o próximo endereço de cluster (entrada FAT) para o arquivo. A última entrada FAT de um arquivo contém o valor final do cluster em vez de um ponteiro. As duas primeiras entradas em um FAT contêm informações sobre o FAT. Esses Bytes do FAT contêm um byte descritor de mídia. Este byte pode ser usado para encontrar o tipo de mídia de disco da qual esta entrada FAT é.
A terceira e as entradas subsequentes no FAT são atribuídas a clusters de espaço em disco, começando com o primeiro cluster disponível para uso pelos arquivos. Uma entrada FAT pode ter qualquer um dos valores fornecidos na tabela acima, com base nas informações que deseja transmitir.
Um 000H em FAT de 12 bits ou 0000H em FAT de 16 bits indica que o cluster correspondente a esse local FAT não está alocado ou está vazio. Qualquer valor de FF8H a FFFH em FAT de 12 bits ou FFF8H a FFFFH em FAT de 16 bits indica que este cluster é o último cluster em uma cadeia de clusters de um arquivo.
Valor de FF0H a FF7H em 12 – Bit FAT indica clusters reservados. Um FF7H em um FAT de 12 bits ou FFF7H em um FAT de 16 bits indica que o cluster correspondente à localização do FAT é um cluster defeituoso, ou seja, este é basicamente um cluster contendo setores defeituosos. Este cluster não é usado para armazenamento de dados.
Qualquer outro valor na tabela FAT é um ponteiro para o próximo cluster na cadeia de alocação de arquivos.
Como o Windows detecta o Impróprio – Desligamento
É uma coisa muito comum e espero que você tenha notado muitas vezes ao usar o Windows que, se houver algum problema - Desligamento incorreto no computador, devido a qualquer motivo, como falha de energia, corrupção de software, desligamento acidental etc., quando você reinicie ainda mais o computador, a mensagem Imprópria – Desligamento é exibida na tela durante o processo de inicialização e o sistema operacional verifica se há erros no disco.
As próximas duas figuras mostram os 256 bytes do início de um FAT de 32 bits, no entanto, precisamos apenas de 8 bytes iniciais para discutir isso.
Na verdade, quando o sistema operacional Windows é carregado na memória, ou seja, o Windows foi iniciado, o 8º byte (ou deslocamento 7H) de FAT se torna 07H ou F7H de 0FH ou FFH.
A Microsoft usa o byte 0FH apenas para o volume que contém o sistema operacional em execução e o byte FFH para qualquer outro volume que esteja acessando.
Quando o Windows inicia a inicialização, o 8º Byte é alterado para 07H ou F7H, que será definido de volta para 0FH ou FFH somente se o Windows for desligado corretamente.
Se houver uma falha de energia, ou o botão Power do computador for desligado acidentalmente ou o sistema for reinicializado manualmente devido a algum problema de software, então este byte permanecerá como 07H ou F7H que informa o Sistema Operacional Windows da próxima vez quando é inicializado que houve algum tipo de desligamento incorreto e, em seguida, o Windows usa seu programa de verificação de disco (Scandisk) para verificar se há erros no disco.
Diretório raiz
Após o último FAT está o Diretório Raiz. O diretório raiz é como um índice das informações armazenadas na unidade de disco rígido. A localização do diretório raiz pode ser facilmente estabelecida somando-se os valores do registro de inicialização, pois ele é posicionado seguindo os FATs.
A área do diretório mantém as informações sobre o nome do arquivo, data e hora da criação do arquivo, atributo do arquivo, tamanho do arquivo e cluster inicial do arquivo em particular. Cada entrada de diretório que descreve essas informações sobre um arquivo é uma informação de 32 bytes.
O diretório raiz contém informações sobre os arquivos e diretórios ramificados do diretório raiz. Todos os outros diretórios são armazenados como arquivos, no mesmo formato do diretório raiz. Anteriormente, o diretório raiz costumava ser fixo em tamanho e localizado em uma posição fixa no disco, mas agora é livre para crescer conforme necessário, pois agora é tratado como um arquivo.
O número de arquivos que podem ser armazenados no diretório raiz depende do tipo de FAT que está sendo usado. Por exemplo, para um disquete de 3½ polegadas e 1,44Mb com FAT de 12 bits, ele é limitado a 224 entradas, se alguém tentar armazenar o 225º arquivo, o DOS exibirá um “erro de criação de arquivo”. Quando um FAT de 16 bits é usado, pode-se ter um total de 512 entradas no diretório raiz. Cada diretório principal em um disquete ou disco rígido também atua como uma entrada de diretório raiz.
A tabela a seguir lista os limites de entradas raiz para diferentes mídias e FAT:
Media and File System Description |
Maximum Root Directory Entries |
Single-sided 5¼ Inch 180K FDD |
64 |
Double-sided 5¼ Inch 320K FDD |
64 |
Double-sided 5¼ Inch 360K FDD |
112 |
Double-sided 3½ Inch 720K FDD |
112 |
Double-sided 5¼ Inch 1.2-megabyte FDD |
224 |
Double-sided 3½ Inch 1.44-megabyte FDD |
224 |
Double-sided 3½ Inch 1.68-megabyte DMF format disks (This is why Microsoft created CAB Files!) |
16 |
Double-sided 3½ Inch 2.88-megabyte FDD |
240 |
Hard Drives (FAT12 & FAT16) |
512 |
Hard Drives with FAT 32 (As it treats the route directory as a file) |
65,536 |
Isso não significa que com o FAT de 16 bits se limita a armazenar apenas 512 arquivos no disco rígido. Pode-se usar subdiretórios para armazenar qualquer número de arquivos limitado apenas pelo tamanho da unidade.
Lembre-se de que o rótulo do volume de um disquete geralmente é armazenado no setor de inicialização, mas o rótulo do volume de um disco rígido é armazenado como uma entrada de diretório raiz e o espaço reservado no setor de inicialização é deixado em branco com espaços. O comando DIR do DOS retorna o que está no diretório, se estiver presente, ou o do setor de inicialização, se não estiver.
As entradas do diretório contêm a entrada na cadeia de clusters e o nome do arquivo. Portanto, as entradas de diretório mais importantes são do diretório raiz, pois contém índices de cluster que apontam para todos os subdiretórios.
Todos os diretórios contêm duas entradas, "." para o diretório atual (este subdiretório) e ".." para o diretório pai (diretório pai deste subdiretório). Podemos rastrear essas entradas facilmente, pois elas sempre serão posicionadas no início de um cluster se o cluster contiver um diretório.
A tabela a seguir mostra o formato de uma entrada de diretório no diretório raiz. A tabela a seguir mostra como os 32 bytes de entrada de diretório de um arquivo no diretório raiz são divididos para armazenar as várias informações sobre ele:
Offset |
Size |
Description |
00H |
8 Bytes |
Filename
(Also see the next table for the special meaning of first character of file name) |
08H |
3 Bytes |
Extension |
0BH |
1 Byte |
File attributes(See The Table Of File Attributes) |
0CH |
10 Bytes |
Reserved |
16H |
2 Bytes |
Time Created or Last Updated (See Date–Time Format Table) |
18H |
2 Bytes |
Date Created or Last Updated (See Date–Time Format Table) |
1AH |
2 Bytes |
Starting or First cluster of file
(The value 0000H is used in Parent Directory ('..') entries to indicate that the Parent Directory is the Root Directory) |
1CH |
4 Bytes |
File size in Bytes. |
Nome do arquivo contém o nome em letras maiúsculas e se o tamanho do nome do arquivo for menor que 8 caracteres, os espaços serão preenchidos com caracteres de espaço de ASCII Número 32. O campo Extensão contém a extensão do arquivo, em letras maiúsculas.
Se o nome do arquivo for maior que 8 caracteres, o Windows cria um nome de arquivo curto a partir de um nome longo, truncando-o para seis caracteres maiúsculos e adicionando "~1" ao final do nome do arquivo base.
Se já houver outro nome de arquivo com os mesmos seis primeiros caracteres, o número será incrementado. A extensão é mantida a mesma, e qualquer caractere que era ilegal em versões anteriores do Windows e DOS é substituído por um sublinhado.
Os nomes de arquivos longos são armazenados em entradas de diretório de nome de arquivo longo de 32 bytes (LFN) especialmente formatadas, marcadas com bytes de atributo definidos como 0FH. Para um determinado arquivo ou subdiretório, um grupo de uma ou mais entradas de diretório de nome de arquivo longo precede imediatamente a única entrada de diretório 8.3 no disco.
Cada entrada de diretório LFN contém até 13 caracteres do nome de arquivo longo, e o sistema operacional agrupa quantos forem necessários para compor um nome de arquivo longo inteiro.
Esta é a causa pela qual os nomes de arquivo longos diminuem o número máximo possível de entradas do diretório raiz em um sistema de arquivos. Como o Windows suporta nomes de arquivos longos, discutiremos em detalhes posteriormente neste capítulo.
O primeiro Byte do nome do arquivo também pode conter algumas informações importantes sobre o arquivo. As informações fornecidas por este byte podem ser uma das fornecidas na tabela a seguir:
First Character of File Name |
Value |
Meaning |
00H |
Indicates that this directory entry is unused. |
05H |
Indicates that 1st character of filename is character E5H But actually the file has not been deleted. (See the Meaning of E5H) |
E5H |
The file has been Erased and this directory entry is a deleted file’s directory entry. The data area previously occupied by that file is now free for allocation for another new file. |
2EH |
This is a Sub-directory. The cluster number field of this entry will contain the cluster number of the directory. |
2EH 2EH |
Two 2EH in a directory entry indicate the parent directory entry of a Sub–Directory. The cluster number of this entry will contain the cluster number of the parent directory of this directory. The cluster number will be zero 0000H if the parent directory is root directory. |
Os atributos são um campo codificado binário de 8 bits. A tabela a seguir informa sobre o Status para sinalizador de atributos para o arquivo fornecido:
Attribute Bits |
Attribute |
Bit |
Binary |
Hex |
Read Only File Flag |
0 |
.......? |
01H |
Hidden File Flag |
1 |
......?. |
02H |
System File Flag |
2 |
.....?.. |
04H |
Volume Label Flag
(Indicates that the entry is a volume label) |
3 |
....?... |
08H |
Sub–directory
(in same format as directory) |
4 |
...?.... |
10H |
Archive Bit
(File Modified Since Last Backup) |
5 |
..?..... |
20H |
Reserved (Contains 0) |
6 |
.0...... |
- |
Reserved (Contains 0) |
7 |
0....... |
- |
Um arquivo pode ter vários atributos. Por exemplo, um único arquivo pode ser somente leitura e também um arquivo oculto ou um único arquivo pode ter ambos os atributos, o arquivo de sistema e o arquivo oculto. (Veja o exemplo dado a seguir para a codificação de entradas de diretório).
Hora e Data é um campo especialmente codificado de 32 bits (16 bits de hora e 16 bits de data). A divisão desta codificação de Bits para compor a Hora de criação ou última atualização e a Data de criação ou última atualização de um Arquivo, foi dada na tabela a seguir:
A entrada para Hora de Criação ou Última Atualização do arquivo, que é o 16º e 17º Byte na entrada do diretório, tem o formato fornecido na tabela acima. A codificação é a seguinte:
- H é o número binário para hora, que pode variar de 0 a 23
- M é um número binário para minuto, que pode variar de 0 a 59
- S é um número binário para segundos em incrementos de 2 segundos
- A entrada para Data of Create ou Last Update of File, que é o 18º e
- 19º Byte na entrada do diretório, tem o seguinte formato:
- Y é um número binário entre 0 e 127 ou ano de 1980 a 2107
- M é o número binário do mês, podendo variar de 1 a 12
- D é um número binário para data, que pode variar de 1 a 31
Esta entrada de diretório está vinculada à entrada FAT com base no primeiro valor do cluster. Uma vez que o DOS tenha o valor de cluster inicial de qualquer arquivo do diretório, o DOS pode descobrir o arquivo completo usando o FAT. O cluster de entrada na cadeia é o primeiro cluster que compõe o arquivo. Se o sinalizador de diretório dos atributos estiver definido, este campo aponta para uma nova entrada de diretório.
A entrada de Tamanho do arquivo é de 4 Bytes. Com isso, podemos calcular como o FAT32 suporta o tamanho máximo de um arquivo de até 4.294.967.295 Bytes, o que equivale a cerca de 4 GiB. Os 4 Bytes têm 32 Bits e o tamanho máximo possível do arquivo composto por qualquer Binário de 32 bits pode ser,
= 11111111 11111111 11111111 11111111 (B) Bytes
= 4,294,967,295 (D) Bytes
~ 4 GiB
Assim, o FAT32 suporta o tamanho máximo do arquivo de até 4 GiB.
O tamanho do arquivo e o cluster inicial do arquivo podem ser um recurso valioso para recuperação de dados na recuperação de arquivos danificados, pois podemos calcular em quantos clusters o arquivo deve consistir.
A figura dada antes mostra a entrada do diretório raiz para sete arquivos diferentes. A codificação para essas entradas foi fornecida na tabela a seguir:
Nome de arquivo longo (LFN)
Como já discutimos anteriormente na discussão do diretório raiz, anteriormente o diretório raiz costumava ser fixo em tamanho e localizado em uma posição fixa no disco, mas agora está livre para crescer conforme necessário, pois agora é tratado como um arquivo.
Isso é muito importante para nomes de arquivos longos porque cada nome de arquivo longo usa várias entradas de diretório. Adicionar suporte a nome de arquivo longo a um sistema operacional que usa nomes de arquivo 8.3 não é tão simples quanto expandir entradas de diretório para conter mais de 11 caracteres.
Se este novo sistema operacional retornar nomes de arquivo de 255 caracteres, muitos aplicativos mais antigos, que esperam não receber mais de 11 caracteres, travarão porque um programa precisa reservar memória para armazenar os nomes de arquivo que lê, e se 16 Bytes para um nome de arquivo e o sistema operacional copia (digamos) 32 caracteres nesse espaço, então outros dados são substituídos. Uma maneira segura de quebrar um aplicativo é copiar dados aleatórios em seu espaço de dados.
Para superar esse problema, uma solução inteligente foi encontrada no Windows 95, para o problema de oferecer suporte a nomes de arquivos longos, preservando a compatibilidade com versões anteriores de aplicativos DOS e Windows.
Quando a maioria dos aplicativos (exceto utilitários de disco de baixo nível, como o Norton Disk Doctor) consulta o sistema em busca de nomes de arquivos e subdiretórios, eles o fazem não lendo entradas de diretório diretamente do disco, mas usando funções de enumeração incorporadas o sistema operacional.
Como sabemos, uma entrada de diretório é marcada com a combinação de Bits de atributos de rótulo somente leitura, oculto, sistema e volume. Provavelmente, se o byte de atributo da entrada de diretório tiver o valor 0FH, as funções de enumeração incorporadas em todas as versões existentes do DOS e todas as versões anteriores ao Windows 95 do Windows ignorarão essa entrada de diretório como se ela não estivesse lá.
Então, a solução foi armazenar dois nomes para cada arquivo e subdiretório, um nome curto visível para todos os aplicativos e um nome longo visível apenas para aplicativos do Windows 95 (e posterior) e para aplicativos que foram reescritos para adicionar suporte para nomes de arquivos longos. Nomes de arquivo curtos são armazenados em formatos 8.3 em entradas de diretório convencionais de 32 bytes.
Já discutimos que o Windows cria um nome de arquivo curto a partir de um nome longo, truncando-o para seis caracteres maiúsculos e adicionando "~1" ao final do nome do arquivo base.
Se já houver outro nome de arquivo com os mesmos seis primeiros caracteres, o número será incrementado. A extensão é mantida a mesma, e qualquer caractere que era ilegal em versões anteriores do Windows e DOS é substituído por um sublinhado.
Os nomes de arquivos longos são armazenados em entradas de diretório de nome de arquivo longo de 32 bytes (LFN) especialmente formatadas marcadas com bytes de atributo definidos como 0FH. Para um determinado arquivo ou subdiretório, um grupo de uma ou mais entradas de diretório Long File Name precede imediatamente a única entrada de diretório 8.3 no disco.
Cada entrada de diretório de nome de arquivo longo contém até 13 caracteres do nome de arquivo longo, e o sistema operacional agrupa quantos forem necessários para compor um nome de arquivo longo inteiro.
Para uma entrada de diretório de nome de arquivo longo, os nomes de arquivo são armazenados no formato Unicode, que requer 2 bytes por caractere em vez de 1 byte de ASCII. Os caracteres do nome do arquivo são distribuídos em três campos separados:
- Os primeiros 10 bytes (cinco caracteres) de comprimento,
- Os segundos 12 bytes (seis caracteres),
- Os terceiros 4 Bytes (dois caracteres).
- Os cinco bits mais baixos do primeiro byte da entrada do diretório contêm um número de sequência que identifica a posição da entrada do diretório em relação aos outros
- Entradas de diretório de nome de arquivo longo associadas ao mesmo arquivo.
Se um nome de arquivo longo requer três entradas de diretório LFN, o número de sequência do primeiro será 1, o do segundo será 2 e o número de sequência do terceiro será 3 e o Bit 6 do primeiro Byte do terceiro entrada é definida como 1 para indicar que é a última entrada na sequência.
O campo de atributo aparece no mesmo local nas entradas de diretório LFN que nas entradas de diretório 8.3 porque o sistema de arquivos não sabe com qual tipo de entrada de diretório está lidando até examinar o byte de atributo. O campo do número do cluster inicial também aparece no mesmo local, mas nas entradas do diretório LFN seu valor é sempre 0. O campo do indicador de tipo também contém 0 em cada nome de arquivo longo.
Um dos problemas com nomes de arquivos longos é que eles consomem mais espaço em disco do que nomes curtos. Isso não é grande coisa quando nomes longos são armazenados em subdiretórios, porque enquanto o espaço em disco estiver disponível, os subdiretórios podem crescer para acomodar entradas de diretório adicionadas, mas o número máximo de entradas de diretório disponíveis no diretório raiz é fixo e os nomes de arquivos longos são desperdiçados espaço no diretório raiz que é limitado em tamanho.
Agora, por exemplo, se o diretório raiz de um disco rígido contiver no máximo 512 entradas de diretório, porque um nome de 128 caracteres requer 11 entradas, 10 para o nome longo e 1 para o nome curto, você pode criar apenas 46 arquivos e subdiretórios no diretório raiz se cada um recebeu um nome de 128 caracteres.
O problema desaparece para o FAT32 também porque o diretório raiz no FAT32 também pode crescer porque no sistema FAT32 o diretório raiz é tratado como um arquivo que pode aumentar de tamanho.
Área de dados (ou área de arquivos)
Seguindo o Diretório Raiz, inicia-se a Área de Dados (ou Área de Arquivos). Em vez disso, podemos dizer que o restante do volume após o diretório raiz é a área de dados.
A área de dados contém os dados reais armazenados na superfície do disco. O DOS usa o cluster número 2 para o primeiro setor da área de dados, portanto, devemos ter em mente ao realizar vários cálculos que o número do cluster deve começar em 2.
Quando formatamos um disco rígido, o comando FORMAT do DOS não destrói ou sobrescreve os dados na área de dados. O comando FORMAT apenas remove a entrada do diretório e as entradas FAT e não toca na área de dados real.
Isso possibilita a recuperação de unidades de disco rígido formatadas acidentalmente, o que não é possível em todos os casos de disquetes formatados acidentalmente. Como no formato completo do Windows, a área de dados do disquete é preenchida por caracteres F6H e todas as informações são sobrescritas.
O DOS usa um ponteiro de 16 bits/32 bits chamado ponteiro “Último cluster usado” (LCU) para armazenar o último número de cluster usado. Inicialmente esse valor de ponteiro é zero, quando alguma informação é escrita em um determinado cluster, esse número de cluster é armazenado no ponteiro LCU.
Depois disso, toda vez que a nova informação for escrita, o DOS procura por um cluster livre a partir do número LCU em diante. Isso força os novos dados gravados no disco a permanecerem contíguos à medida que os dados são gravados na nova área não utilizada.
Agora, entender os dados em caso de exclusão acidental seria muito mais fácil, pois o arquivo está em uma área contígua do disco. Quando o fim do disco é atingido ou o sistema é redefinido, o valor do ponteiro LCU é redefinido para zero.
Mas o problema não dura aqui. Não é praticamente possível que você crie apenas novos arquivos em seu disco e nunca exclua ou modifique nenhum arquivo dos armazenados anteriormente. Usar apenas LCU tem problemas se você fizer muita criação e exclusão de arquivos, pois isso forçará os novos dados a se moverem cada vez mais para as faixas internas do disco rígido.
Portanto, se algum arquivo que estava armazenado no disco for movido ou excluído, os clusters na área de dados que estavam ocupados pelo arquivo agora são definidos como clusters não alocados disponíveis na área de dados e prontos para serem gravados novos dados neles. Ao fazer isso, o sistema operacional não precisa mover todos os dados para as trilhas internas do disco.
Mas muita exclusão e criação de arquivos fragmenta os dados no disco e isso causa a Fragmentação nos dados.
Dados fragmentados e desfragmentados
Já discutimos que cada arquivo no disco é armazenado como uma lista vinculada de clusters pelos quais os dados contidos em um arquivo podem ser localizados em qualquer lugar do disco. Se você tiver um arquivo de 10 MB armazenado em um disco usando clusters de 4.096 bytes, ele estará usando 2.560 clusters. Esses clusters podem estar em diferentes trilhas, diferentes pratos do disco, na verdade, podem estar em qualquer lugar.
Embora um arquivo possa ser espalhado por todo o disco, isso está longe de ser a situação preferida. A razão é o desempenho lento indesejável. Os discos rígidos são dispositivos relativamente lentos, principalmente porque contêm partes mecânicas. Cada vez que o disco rígido precisa mover as cabeças para uma trilha diferente, leva um tempo equivalente a milhares e milhares de ciclos de processador.
Portanto, queremos minimizar o grau em que cada arquivo é espalhado pelo disco. No caso ideal, cada arquivo seria de fato completamente contíguo. Isso significa que cada cluster usado estaria localizado um após o outro no disco. Isso permitiria que todo o arquivo fosse lido, se necessário, sem muitos movimentos mecânicos do disco rígido.
Na verdade, o sistema de arquivos começa com todos ou a maior parte de seus arquivos contíguos, mas como resultado da criação e exclusão de arquivos durante um período de tempo, os dados no disco ficam cada vez mais fragmentados.
Vamos considerar um exemplo simples para entender a fragmentação. A tabela abaixo representa o uso dos 12 clusters. Inicialmente, a tabela está vazia:
cluster 1 |
cluster 2 |
cluster 3 |
cluster 4 |
cluster 5 |
cluster 6 |
cluster 7 |
cluster 8 |
cluster 9 |
cluster 10 |
cluster 11 |
cluster 12 |
Now let us suppose that we create four files, File A, B, C and D in this disk. File A takes 1 cluster, file B takes 4, file C takes 2, and file D takes 3. We store them in the free available space, and they start out all contiguous as shown in the next figure:
After some time let we delete the file C and by doing this, both the clusters which were occupied by file C, are now free or unallocated. This leaves the disk looking like the following figure:
Now, we create a new File E that needs 3 clusters. But, as there are no contiguous blocks on the disk left that are 3 clusters long, so we have to split E into two fragments, using part of the space formerly occupied by C. Now our disk is going to look like the figure given next:
After a slice of time period, let we delete files A and E and create file F which takes up 5 clusters. The disk now looks like the figure given below:
Now we see that the file F ends up being broken into three fragments. This type of data in the disk is called the fragmented data. The example given above is a very simplified example of fragmentation, because the real disks have thousands of files and thousands of clusters, so the problem there is magnified. This gives you the general idea of what happens though.
What a defragmentation program (Like Microsoft’s DEFRAG Program, Norton’s SpeedDisk) does is to rearrange the disk to get the files back into contiguous form. After running the disk defragmentation utility, the Defragmented data on the disk which we were talking about will look like the figure given below:
Os dados Fragmentados e Desfragmentados têm muita importância durante a recuperação de dados, em muitos casos.
Vamos considerar que temos dois discos travados para recuperação de dados, um com dados fragmentados e outro desfragmentado recentemente. E você tem que fazer a recuperação de dados coletando os dados da superfície de ambos os discos, pois as informações FAT e Root dos arquivos estão danificadas. Nesse tipo de casos, a porcentagem de recuperação será proporcional à desfragmentação dos dados no disco.
Obviamente, a recuperação de dados do disco desfragmentado será fácil e a porcentagem de recuperação de dados também será alta, mas por outro lado, a recuperação de dados do disco fragmentado será difícil e demorada, bem como a porcentagem de os dados recuperados também serão decepcionantes.
Identificando a causa da corrupção de dados
Existem alguns passos específicos que, se seguidos em sequência, podem nos ajudar a encontrar a área de corrupção. Essas etapas foram descritas com o procedimento de recuperação da seguinte forma:
Inicialize o sistema com disquete inicializável
Inicie seu sistema com um disquete ou CD inicializável do sistema operacional que você estava usando. Tente ler as unidades lógicas C: ou D: ou qualquer outra coisa. Se a(s) unidade(s) estiver(ão) acessível(is), basta copiar todos os dados da unidade. Agora você pode descobrir por que o disco não está inicializando corretamente, com menos estresse.
Verifique as informações do MBR
O primeiro e mais importante dado no disco rígido é o MBR e a tabela que ele carrega dentro dele, a tabela de partição. A pequena ferramenta de edição de disco chamada “TTEDITOR.EXE” foi fornecida no disco incluído neste livro. Ou você pode usar qualquer outro programa para analisar o disco rígido.
Diskedit será o programa mais adequado para analisar o disco para fins de recuperação de dados. Bem, qualquer programa que você se sinta fácil de usar está sobre você. Tente ler o MBR e especialmente sua tabela de partições.
Como você viu na descrição do MBR, discutida neste capítulo, na segunda metade do MBR, há algum texto legível que é exibido como mensagem de erro por isso, se houver algo errado com ele. Essas mensagens de texto são exibidas algo como:
“Invalid partition table, Setup can not continue”
“Error loading operating system, Setup can not continue”
Se essas mensagens de erro não estiverem disponíveis, isso indica a corrupção do MBR. Também pode haver alguma mensagem ilegal em vez disso, como "Seu sistema foi invadido por..." ou qualquer outra mensagem inesperada. Isso indica que há algo seriamente errado com o MBR e, provavelmente, é devido a alguma infecção VIRAL
Agora verifique a tabela de partição do MBR após os 446 bytes iniciais. Se a tabela de partição estiver em branco, você não verá nenhuma mensagem de erro no momento da inicialização. O DOS ignora uma unidade não particionada. Se não houver nenhum disquete inicializável na unidade A:, o sistema solicitará que um disquete inicializável seja inserido na unidade A:.
O importante a ser observado aqui é que a tabela de partições não deve ficar em branco em uma unidade que estava funcionando anteriormente, então algo a apagou. Se a tabela de partição estiver em branco, restaure o MBR do backup.
Se o backup não funcionar, mesmo após a conclusão bem-sucedida do processo de restauração, há danos físicos neste setor. Experimente as técnicas de programação de recuperação de dados, apresentadas nos próximos capítulos para recuperar os dados. Se você não é um programador, é melhor ir a qualquer bom centro de recuperação de dados.
Se você não tiver nenhum backup do MBR tente escrever a tabela de partições manualmente com alguma ferramenta de edição de disco, como Diskedit, porém em alguns casos é muito difícil fazê-lo.
Para aqueles usuários que não são programadores e também não possuem nenhum backup, podem utilizar o método que venho utilizando desde o tempo de desenvolvimento do meu projeto de recuperação de dados, na época da faculdade.
O que você precisa fazer é procurar no computador perto de você, que tem quase o mesmo tamanho de disco, com o mesmo número de partições e o mais importante o mesmo sistema operacional que estava no seu computador.
No entanto, funciona completamente, na maioria das vezes. Mas se não for assim, pelo menos pode ajudá-lo a acessar a primeira partição do seu disco. Até mesmo seu sistema operacional também irá inicializar normalmente, caso tenha sido instalado na primeira partição e se as demais informações não estiverem corrompidas.
Se o MBR estiver correto, verifique o DBR
Se o MBR estiver correto, verifique o DBR (DOS Boot Record). Como já discutimos, este é o primeiro setor na partição DOS e contém um pequeno programa que carrega os arquivos ocultos e inicializa o sistema operacional.
O DBR também contém informações muito importantes sobre o FAT, clusters de diretório raiz e tamanho da partição etc. Use algum utilitário como Diskedit para ler as informações do DBR se o DBR estiver corrompido ou tiver alguma informação ilegal restaurar o DBR do Backup .
Todos os softwares profissionais para recuperação de dados são capazes de reescrever o DBR. Discutiremos sobre como reescrever o DBR da partição com programação nos próximos capítulos do livro.
Você também pode reescrever o DBR da partição com a ajuda do Diskedit fornecendo as informações apropriadas.
Há também uma maneira muito fácil de descobrir a área de corrupção. As mensagens de erro exibidas na tela têm alguma causa específica para serem exibidas. A descrição de algumas mensagens de erro importantes é a seguinte:
Message |
Description |
“Sector not found reading drive” |
This message can appear during any DOS operation. Generally, it is caused either by fading or the loss of a sector ID. |
“Data error reading drive” |
This message can appear during any DOS operation. It is caused by failing the data check – CRC (Cyclic Redundancy Check) or ECC (Error Correction Code). This “Data check” refers to the mechanism used to check whether the data read from the disk is reliable. |
“ 0 hard disk(s) found" |
It is displayed if the hard disk is not detected by the BIOS of the computer. Check the power and data cable connections of the hard disk. If connections are all right, the problem may be due to some hardware error of hard disk. |
“Hard Drive failure, press F1 to continue” |
Same as above |
“Invalid drive specification” |
It is displayed in the condition when either the system does not recognize the hardware, or there is no partition information, or the device driver of the drive is missing. |
“Invalid configuration press F1 to continue” |
If the hard disk is available, Either the battery in the motherboard is dead, and the system has lost its configuration SETUP information or the disk is not responding. |
“Invalid partition table” |
This is the MBR error message. It is displayed when the partition table of the MBR does not have the valid partition information. |
“Error loading operating system” |
This is the MBR error message. It is displayed due to any type of MBR information corruption. |
“Missing operating system” |
Same as above. |
“Disk boot failure” |
It is the DBR error message. Normally, The Hard drive should be accessible if you boot from the floppy. Though it is not bootable but that should not affect the access to the data of the drive. |
“non system disk or disk error” |
Same as above. |
“Bad or missing command interpreter” |
This message is displayed due to Bad or Missing Command Interpreter. For example if the operating do not find the command.com in current path or the command.com is corrupted. |
Página modificada em: 05/01/2022