Capítulo – 3
Uma abordagem lógica para discos e sistemas operacionais
Um disco rígido não pode controlar seu hardware por conta própria e requer dois programas principais para executar suas operações: BIOS (Basic Input/Output System) e DOS (ou Operating System). O sistema operacional do disco não interage diretamente com o hardware e o disco rígido do computador, mas requer o BIOS entre eles. É por isso que o BIOS desempenha um papel importante em um computador.
BIOS
A principal tarefa 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 executado nele. Ele desempenha várias funções importantes no gerenciamento de acesso aos discos rígidos, como
- Rotinas de interrupção do BIOS
- Detectando e configurando seu disco rígido
- Suporte ao modo de interface de disco rígido
Para permitir a interoperabilidade entre diferentes produtos de hardware e software, o BIOS de um sistema é personalizado de acordo com as necessidades do seu hardware e fornece uma maneira padrão para o software acessar o hardware. Eles são chamados de serviços BIOS e são usados por muitos sistemas operacionais e programas aplicativos. Eles fornecem uma interface única 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. Os programas BIOS modernos podem detectar unidades IDE/ATA modernas, determinar essas configurações e configurá-las 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.
Interface INT 13H e extensões INT 13H
A interface primária para o BIOS é a interrupção de software 13H, comumente conhecida como INT 13H, onde INT significa interrupção e 13H é o número 19 em notação hexadecimal.
Estudaremos e discutiremos o uso de interrupções na programação em detalhes durante a fase de programação deste livro. A interface Int13H suporta uma variedade de comandos diferentes que podem ser fornecidos ao BIOS, que então os repassa ao disco rígido. A interrupção 13H inclui a maioria das tarefas que precisamos executar no disco, como leitura, gravação, formatação, etc.
Usar e trabalhar com o Int13H requer que o programa de chamada conheça os parâmetros específicos do disco rígido e forneça às rotinas endereçamento preciso de cabeça, cilindro e setor para acessar o disco.
O BIOS usa a geometria do disco rígido conforme configurada no programa de configuração do BIOS. A interface Int13H aloca 24 bits para especificar a geometria do disco, dividida da seguinte forma:
- 10 bits para o número do cilindro, ou 1024 cilindros no total.
- 8 bits para número de cabeças, ou 256 cabeças no total.
- 6 bits para número de setor, ou 63 setores no total.
Assim, o número máximo possível de setores em um disco pode ser
= 1024 * 256 * 63
= 16515072
Como podemos ver aqui, a interface INT 13H pode suportar unidades contendo até 16515072 setores a 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 um tamanho de disco de aproximadamente 8,456 GB (ou 7,875 GiB).
Hoje em dia, a maioria dos usuários de computador usa discos rígidos com capacidades muito maiores que 8 GB, então 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 extensões INT 13H. Entretanto, o INT 13H ainda pode ser usado pelo DOS e alguns outros sistemas operacionais mais antigos, e para outros propósitos de compatibilidade.
Extensões Int 13H
É realmente interessante que, quando a interface INT 13H foi projetada, ninguém esperava ter 8 GB de armazenamento em um disco rígido. No entanto, hoje podemos sentir que um disco rígido de 8 GB tem muito menos capacidade, mesmo para um computador pessoal doméstico.
O antigo padrão tem uma limitação importante: ele usa 24 bits de informação de endereçamento e, portanto, só pode lidar com unidades contendo até 16.515.072 setores a 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 era possível expandir a interface INT13H BIOS existente porque se tentássemos fazer isso, muito hardware e software antigos parariam de funcionar. E, na prática, não há esperança de obter um lugar respeitável no mundo da computação com muito hardware e software antigos não funcionando com seu desenvolvimento.
Portanto, uma nova interface foi desenvolvida para substituir 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.
Aprenderemos 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 primeiros dias. 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 BIOSes 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), o 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 estão acessíveis.
O limite de 33,8 GB
Essa barreira de tamanho de disco rígido foi notada no início de 1999. Discos grandes relatam 16 cabeças, 63 setores/trilha e 16383 cilindros. Muitos BIOSes calculam um número real de cilindros dividindo a capacidade total por 16*63.
Para discos maiores que 33,8 GB, isso leva a um número de cilindros maior que 65535. Neste caso específico, algumas versões do Award BIOS não conseguem lidar com drives que tenham 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 resulta em uma capacidade de cerca de 33,8 GB ou 31,5 GiB antes que o problema ocorra.
A solução é atualizar o BIOS ou 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, ela usa apenas 28 bits para especificar um número de setor. No entanto, ATA-6 define uma extensão 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ças contando de 0 a 15 e 255 setores por trilha contando de 1 a 255, a capacidade total máxima do disco,
= 65535 * 16 * 255 Setores
= 267386880 Setores
= 136902082560 Bytes (Setor de 512 Bytes Cada)
~ 137 GB
Suporte para BIOS IDE 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 sempre que a máquina é inicializada, dependendo do BIOS.
O BIOS do sistema fornece suporte nativo para discos rígidos IDE/ATA, portanto, pode haver uma série de 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 um 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 unidades de disco rígido com mais de 8 GB não podem ser descritas usando parâmetros de geometria tradicionais do BIOS IDE/ATA, 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 definir 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 podem nem estar mais presentes:
- Tipo de disco: originalmente era usado para permitir que o usuário escolhesse seu disco rígido em uma lista predefinida, mas agora é usado para controlar a configuração automática ou manual de parâmetros para a unidade.
- Tamanho: Tamanho do 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, cada um com 512 bytes, 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 as cabeças são estacionadas 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 suas cabeças automaticamente, isso raramente é necessário hoje em dia.
- 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 saber, fornecidas 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 armazenar no máximo 4.086 clusters, o que é igual a 2 12 menos alguns valores reservados para serem usados em FAT. (Discutiremos isso em detalhes na estrutura lógica do disco fornecida a seguir neste capítulo). Portanto, o FAT12 é mais adequado para volumes menores. Ele é 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 armazenar no máximo 65.526 clusters, o que é igual a 2 16 menos alguns valores reservados para serem usados no FAT. (Discutiremos isso em detalhes na estrutura lógica do disco fornecida a seguir neste capítulo). O FAT16 é usado para volumes de disco rígido variando em tamanho de 16 MB a 2.048 MB. Volumes FAT16 maiores que 2 GB não são acessíveis a partir de computadores executando MS-DOS, Windows 95/98/ME e muitos outros sistemas operacionais. Essa limitação ocorre porque esses sistemas operacionais não suportam tamanhos de cluster maiores que 32 KB, o que resulta no limite de 2 GB. (Consulte o limite de Clusters fornecido a seguir neste capítulo).
- FAT32: Em teoria, os volumes FAT32 máximos 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 suportará unidades de até 2 TB de tamanho. No entanto, para fazer isso, o tamanho do FAT cresce muito. (Vamos discutir isso nos tópicos fornecidos a seguir neste capítulo).
A comparação dos tipos de FAT é 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 Sistema de Arquivos NTFS está além dos limites deste livro, porém algumas limitações dele foram apresentadas na tabela a seguir:
Descrição
|
Limite |
Tamanho máximo do arquivo
|
16 Exabytes – 1 KB (2 64 Bytes – 1 KB) |
Tamanho máximo do volume
|
(2 64 – 1) aglomerados |
Arquivos (e pastas) por volume
|
4.294.967.295 (2 32 – 1 ) Moscas e Pastas |
Conjunto
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 cada arquivo é atribuído a tantos setores individuais quantos 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. Há vários motivos de desempenho para isso. Quando o DOS grava alguma informação no disco rígido, ele não aloca o espaço por setor, em vez disso, ele usa uma nova unidade de armazenamento chamada cluster.
O 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 em vez disso é agrupar setores em blocos maiores que são chamados 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 manter o controle de tantas informações consome tempo e recursos. No entanto, alguns sistemas operacionais alocam espaço para arquivos por setor, mas eles 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 apenas um byte de informação longa no disco, é necessária no mínimo uma área de cluster na superfície do disco.
Se um cluster pode armazenar 512 bytes de informação, então para armazenar 513 bytes você precisará de dois clusters. Cada arquivo deve ser alocado a um número inteiro de clusters. Isso significa que se um volume usa clusters que contêm 4.096 bytes, então um arquivo de 610 bytes usará um cluster, portanto, 4.096 bytes no disco, mas um arquivo de 4.097 bytes usa 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 maiores de cluster resultam em mais espaço desperdiçado.
A figura dada a seguir mostra as propriedades de um arquivo chamado BINARY.C e esclarece o fato do espaço usado pelo arquivo no disco. O tamanho real do arquivo é 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 feito de um ou mais setores. Depende do tipo de disco que está sendo usado. Como um cluster pode ser feito de mais de um setor, o uso de clusters como unidade de alocação reduz o tamanho da File Allocation Table 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 for 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).
Os 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, então 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 eles estão diretamente relacionados, têm 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 disponíveis, como o Partition Magic, 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 do cluster são selecionados, ele é fixo.
Como discutimos anteriormente, o número do cilindro ou da trilha começa em 0 e o primeiro número do setor é sempre considerado 1. Mais uma coisa que você deve lembrar é que o primeiro número do cluster é sempre considerado 2.
Tamanho do cluster
Clusters são usados para alocar a área de armazenamento somente para a área de dados. FAT e área de diretório não são alocadas 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:
Unidade de disquete (FDD) |
Tipos de unidade |
Setores/Cluster |
Tamanho total do cluster em bytes (setores de 512 bytes cada) |
5,25” 360Kb FDD |
2 setores |
1.024 |
5,25”1,2 Mb FDD |
1 setor |
512 |
3,5” 720 KB FDD |
2 setores |
1.024 |
3,5”1,44 Mb FDD |
1 setor |
512 |
3,5”2,88 MB de disco rígido |
2 setores |
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 ele pode suportar. Quanto menor o tamanho do cluster, mais eficientemente um disco armazena informações porque o espaço não utilizado dentro de um cluster não pode ser usado por outros arquivos.
A tabela a seguir mostra os tamanhos de cluster padrão para partição do sistema de arquivos FAT16, FAT32 e NTFS. O FAT 32 permite um armazenamento e uso muito mais eficientes de discos rígidos maiores, o FAT de 32 bits é compatível apenas com o 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 do cluster e, portanto, fornece um armazenamento eficiente. Embora o FAT32 permita o uso de discos rígidos maiores e tamanhos de cluster muito reduzidos, há uma consideração importante de desempenho no uso do FAT32: os enormes discos rígidos 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 essa partição for configurada no FAT16, isso 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 grande tamanho do cluster realmente resultará em um grande desperdício de espaço em disco. Portanto, será recomendado que 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 previamente desperdiçado. Geralmente é a coisa certa a fazer nessa situação. No entanto, tem outro lado. Não obtemos esse tamanho de cluster reduzido de graça.
Como cada cluster é menor, tem que 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 no FAT32 têm 32 bits de largura (cada entrada de 4 bytes), enquanto as entradas do FAT16 têm 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 e FAT 32 para volume de disco de 2.048 MB |
Tipo de gordura |
FAT16 |
FAT32 |
Tamanho do cluster |
32 KiB |
4 KiB |
Número de entradas FAT |
65.526 |
524.208 |
Tamanho da gordura |
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 manter o FAT. Porque somente fazendo isso ele está economizando muito mais espaço do que reduzindo o tamanho do FAT. O problema real é que o FAT mantém todos os ponteiros de cluster para cada arquivo no volume. Ter o FAT aumentando muito em tamanho pode impactar negativamente a velocidade do sistema.
Por esse motivo, é importante limitar o tamanho da File Allocation Table a um número de tamanho razoável. Na verdade, na maioria dos casos, é uma questão de encontrar um equilíbrio entre o tamanho do cluster e o tamanho do FAT. Uma boa ilustração disso são as seleções de tamanho do cluster feitas pelo próprio FAT32.
Como o FAT32 pode manipular 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 em fazer isso é que o tamanho do FAT ultrapassaria 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 então clusters maiores são usados conforme mostrado na tabela dada antes, para Cluster Sizes. O tamanho máximo de partição suportado pelo FAT32, que é oficialmente declarado, é 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 cinco termos lógicos a seguir:
- 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 que formam a estrutura lógica de um disco rígido:
Estrutura lógica de um disco rígido
O Master Boot Record (MBR) ou às vezes chamado de 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 Master boot Record 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 setor 1 e se houver mais de uma partição presente no disco, há Registros Mestres de Inicialização Estendidos, localizados no início de cada volume de partição estendida (veja a figura a seguir).
O MBR é criado na unidade de disco rígido executando o comando FDISK.EXE do DOS. No entanto, há muitos outros softwares disponíveis para fazer a mesma tarefa. Usando o FDISK, qualquer uma dessas partições pode ser tornada ativa ou inicializável.
Isso permite que o setor de boot da partição ativa receba o controle quando o sistema é iniciado. Como o disquete não tem 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 juntos 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 para a memória e então o executa. Primeiro, o MBR verifica o Disco Rígido para uma Partição Ativa, então ele carrega o DOS Boot Record (DBR) na memória e passa o controle para o código de Boot do Sistema Operacional e então o código do Operating System Boot Record carrega o resto do Sistema Operacional para a Memória.
Formato do Master Boot Record
Formato do Master Boot Record
Podemos particionar o Hard Disk Drive em várias unidades lógicas que geralmente recebem sua própria letra de unidade pelo DOS. Apenas uma partição por vez pode ser marcada como a Partição ativa (ou inicializável).
Formato do Master Boot Record
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 Partition Table principal, exceto que não há código de inicialização.
No Master Boot Record 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 são quebrados como segue, dado na Tabela:
Desvio |
Descrição |
Tamanho |
000H |
Carregador de programa inicial (IPL), código executável (fornece a primeira inicialização do computador) |
446 bytes |
1BEH |
Primeira entrada de partição (consulte a próxima tabela) |
16 bytes |
1CEH |
Segunda entrada de partição |
16 bytes |
1DEH |
Terceira entrada de partição |
16 bytes |
1EEH |
Quarta entrada de partição |
16 bytes |
1FEH |
Marcador executável ou assinatura do setor inicializável ou número mágico (AAH 55H) |
2 bytes |
Total = 512 bytes |
Todas as partições estendidas devem existir dentro do espaço reservado pela entrada de partição estendida. Apenas duas das partições estendidas devem ser usadas, a primeira como uma partição normal e a segunda como outra partição estendida, se existir. Assim, com a ajuda de uma Master Partition Table, podemos obter a localização de outra Extended Master Partition Table próxima a ela, se presente.
Formato de entrada da tabela de partição
O formato da entrada da tabela de partição de qualquer Partição no MBR foi dado na próxima tabela. Cada Entrada de Partição de qualquer MBR pode ser quebrada 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 além destes não seja esperada, ainda assim, 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 – Número do Setor da Partição (3 Bytes): Quando calculamos o CHS (Cilindro, Cabeça e Setor) de qualquer disco, o CHS Físico é contado 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 (Veja o Capítulo Anterior para Detalhes)
- O Byte no deslocamento 01H representa o Número de Cabeçalho inicial no Sistema hexadecimal para a partição.
Os 6 bits menos significativos do byte no deslocamento 02H formam o número do setor inicial da partição e a combinação dos 2 bits restantes (como os dois bits mais significativos) mais 8 bits de outro byte no deslocamento 03H (os 8 bits menos significativos restantes do número de 10 bits) formam o número do cilindro inicial da partição.
Desvio |
Significado |
Tamanho |
Descrição |
00H |
Byte indicador do tipo de inicialização |
1 Byte |
Se Byte for 00H, a partição está inativa e se Byte for 80H , a partição está ativa (ou inicializável) |
01H |
Número de Cabeçalho do Início da Partição |
1 Byte |
Número inicial do cabeçalho da partição no sistema hexadecimal |
02H |
Setor e Número do Cilindro do Início da Partição |
2 bytes |
6 bits do primeiro byte formam o número do setor inicial e a combinação dos 2 bits restantes (como os dois bits mais significativos) mais 8 bits de outro byte (os 8 bits menos significativos restantes do número de 10 bits) formam o número do cilindro inicial da partição |
04H |
Indicador do sistema de arquivos Byte |
1 Byte |
Byte indicador do sistema de arquivos no sistema hexadecimal (consulte a tabela a seguir para indicadores) |
05H |
Número de Cabeçalho do Fim da Partição |
1 Byte |
Número de Cabeçalho Final da Partição no Sistema Hexadecimal |
06H |
Setor e Número do Cilindro do Fim da Partição |
2 bytes |
6 bits do primeiro byte formam o número do setor final e a combinação dos 2 bits restantes (como os dois bits mais significativos) mais 8 bits de outro byte (os 8 bits menos significativos restantes do número de 10 bits) formam o número do cilindro final da partição |
08H |
Número relativo do setor do início da partição |
4 bytes |
Número de setores entre o MBR e o primeiro setor na partição |
0CH |
Número de setores da partição |
4 bytes |
Número de setores na partição |
Total = 16 bytes |
A codificação de cilindro e 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): O Byte Indicador do Sistema de Arquivos no deslocamento 04H representa o sistema de arquivos daquela partição. A tabela, listando o Byte Indicador do Sistema de Arquivos para vários Sistemas de Arquivos foi dada 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 relativo do setor do início da partição (4 bytes): Número de setores entre o MBR e o primeiro setor na partição no sistema hexadecimal.
Número de Setores da Partição (4 Bytes): Número de Setores na Partição no sistema Hexadecimal.
Deve-se sempre lembrar que os números de Cilindro, Cabeça e Setor são aqueles que devem ser passados para o BIOS. Assim, se o BIOS estiver usando tradução (modo LBA ou Suporte a Extensões INT 13H), os valores podem não representar os valores físicos do CHS. Para discos rígidos grandes (maiores que 8,4 GB), os valores do CHS podem ser inválidos. Esses valores geralmente devem ser ignorados e os valores absolutos do setor são usados em vez disso.
A figura dada 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 nos deslocamentos 02H e 03H formam o setor inicial e o número do cilindro da partição, conforme a codificação fornecida a seguir:
MBR de um disco com partições FAT32
Portanto, o CHS inicial 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 próxima tabela:
Portanto, o CHS final 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 do sistema de arquivos foram fornecidos a seguir:
Byte indicador do sistema de arquivos em hexadecimal |
Descrição da partição/sistema de arquivos |
00H |
Entrada de tabela de partição não utilizada/vazia
(lembre-se de que isso não é usado para designar uma área não utilizada no disco, mas marca uma entrada de tabela de partição não utilizada) |
01H |
DOS 12 bits fat
(O tipo 01H é para partições de até 15 MB) |
02H |
XENIX: sistema de arquivos raiz |
03H |
Sistema de arquivos XENIX /usr (obsoleto)
(XENIX é uma parte antiga do Unix V7. O Sistema Operacional Microsoft XENIX foi anunciado em agosto de 1980. Era uma versão portátil e comercial do sistema operacional Unix para Intel 8086, Zilog Z8000, Motorola M68000 e Digital Equipment PDP-11. A Microsoft introduziu o XENIX 3.0 em abril de 1983. A SCO entregou seu primeiro XENIX para 8088/8086 em 1983.) |
04H |
FAT de 16 bits, DOS 3.0+ (tamanho da partição < 32M)
(Algumas versões antigas do DOS tinham um bug que exigia que esta partição estivesse localizada nos primeiros 32 MB físicos do disco rígido) |
05H |
DOS estendido ( DOS 3.3+ Volume estendido)
Suporta no máximo discos de 8,4 GB. Com esse tipo, o 05H DOS/Windows não usará a chamada estendida do BIOS, mesmo que esteja disponível.) |
06H |
FAT de 16 bits, DOS Big, DOS 3.31+ (Tamanho da partição >= 32 M)
(As partições têm no máximo 2 GB para DOS e Windows 95/98 com no máximo 65536 clusters com cada cluster, no máximo 32 KB. O Windows NT pode criar até 4 GB de partição FAT16 usando clusters de 64 KB.) |
07H |
OS/2 IFS (Installable File System) (HPFS é o exemplo mais conhecido desse sistema de arquivos. O OS/2 só verifica partições com ID 7 para qualquer IFS instalado. Essa é a razão pela qual o pacote EXT2 IFS inclui um driver de dispositivo especial "filtro de partição Linux" para enganar o OS/2, fazendo-o pensar que as partições Linux têm ID 07). |
07H |
Unix avançado |
07H |
Windows NT NTFS |
07H |
QNX2.x (pré-1988)
(Para o sistema de arquivos real do tipo de partição 07H, deve-se inspecionar o registro de inicialização da partição) |
08H |
OS/2 (somente v1.0 a v1.3) |
08H |
Partição de inicialização AIX
[AIX (Advanced Interactive Executive) é a versão do Unix da IBM] |
08H |
Unidade dividida |
08H |
Partição DELL abrangendo várias unidades |
08H |
Commodore DOS |
08H |
QNX 1.x e 2.x
("qny" de acordo com as partições QNX) |
09H |
Partição de dados AIX |
09H |
Sistema de arquivos Coherent
[Coherent era um sistema operacional semelhante ao UNIX para os sistemas 286-386-486, comercializado pela Mark Williams Company liderada por Bob Swartz. Era conhecido por sua boa documentação. Foi introduzido em 1980 e morreu em 1º de fevereiro de 1995. As últimas versões são V3.2 para 286-386-486 e V4.0 (maio de 1992, usando modo protegido) apenas para 386-486. Ele foi vendido por US$ 99 a cópia e há rumores de que 40.000 cópias foram vendidas. Uma partição Coherent tem que ser primária. ] |
09H |
QNX 1.x e 2.x ("qnz" de acordo com as partições QNX ) |
0aH |
OS/2 Boot Manager
(OS/2 é o sistema operacional projetado pela Microsoft e IBM para ser o sucessor do MS-DOS) |
0aH |
Partição de swap coerente |
0aH |
OPUS
(Servidor Unisys Paralelo Aberto) |
0bH |
WIN95 OSR2 32-bit FAT
(OSR2 significa “OEM Service Release 2” da Microsoft. É para partições de até 2047 GB. Quase sempre, o Windows 95/98/ME tem o mesmo sistema de arquivos que é FAT-32, dentro dos mesmos limites de partições) |
0cH |
LBA-mapped WIN95 OSR2 32-bit FAT
(Ele está usando o endereçamento de bloco lógico – modo de extensões de interrupção 13H, portanto, podemos dizer que este é o equivalente INT 13H estendido de 0BH . Quase sempre, o Windows 95/98/ME tem o mesmo sistema de arquivos que é FAT-32, dentro dos mesmos limites de partições) |
0eH |
WIN95 mapeado por LBA: DOS 16 bits FAT ou VFAT endereçável por bloco lógico
(é o mesmo que 06H , mas usa o modo LBA do INT 13H) |
0fH |
WIN95 mapeado por LBA: partição estendida ou VFAT endereçável por bloco lógico
(É o mesmo que 05H , mas usa o modo LBA do INT 13H. O Windows 95 usa 0EH e 0FH como equivalentes INT13H estendidos de 06H e 05H . O Windows NT não reconhece os quatro tipos do Windows 95/98/ME 0BH , 0CH , 0EH e 0FH ) |
10H |
OPUS
(Sistema de Atualização de Programas Octal) |
11H |
Partição oculta FAT de 12 bits do DOS ou partição FAT de 12 bits do OS/2 Boot Manager ou DOS vista do OS/2 (Quando o gerenciador de inicialização do OS/2 inicializa uma partição DOS, ele oculta todas as partições DOS primárias, exceto aquela que é inicializada, alterando sua ID e 01H , 04H , 06H e 07H se tornam 11H , 14H , 16H e 17H , respectivamente. |
12H |
Partição de configuração/diagnóstico da Compaq
(usada pela Compaq para sua partição de utilitário de configuração. É uma partição compatível com FAT que inicializa em seus utilitários e pode ser adicionada a um menu LILO como se fosse MS-DOS.) |
14H |
(DOS oculto 16 bits FAT ou OS/2 Boot Manager oculto DOS 16 bits FAT) Partição <32M
(O tamanho da partição é menor que 32M. O ID 14H é resultado do uso do Novell DOS 7.0 FDISK para excluir a partição nativa do Linux.) |
15H |
DOS oculto-estendido |
16H |
(DOS oculto 16 bits FAT ou OS/2 Boot Manager oculto 16 bits FAT) >= Partição de 32M |
17H |
Partição HPFS oculta do OS/2 Boot Manager ou IFS oculto (por exemplo, HPFS) |
17H |
Partição NTFS oculta |
18H |
Partição AST SmartSleep ou arquivo de swap especial do Windows AST (partição "Zero-Volt Suspend")
[AST Research, Inc. (nomeado a partir das iniciais dos fundadores, Albert Wong, Safi Qureshey e Thomas Yuen). Os laptops Ascentia têm uma "Partição Zero – Volt Suspend" ou `Partição SmartSleep' de tamanho 2 MB + tamanho de memória.] |
Byte indicador do sistema de arquivos em hexadecimal |
Descrição da partição/sistema de arquivos |
19H |
Willowtech Photon COS
(Código 19H é reivindicado para Willowtech Photon COS por Willow Schlanger. |
1bH |
Partição oculta WIN95 OSR2 32 bits FAT ou partição oculta Windows 95 FAT32 |
1cH |
LBA-mapped Hidden WIN95 OSR2 32-bit FAT
(É uma partição Windows95 FAT32 oculta usando o modo LBA das extensões INT 13H) |
1eH |
Partição WIN95 16 bits FAT oculta mapeada por LBA ou partição LBA VFAT oculta |
1FH |
Partição LBA VFAT Oculta WIN95 Estendida ou Oculta Estendida LBA mapeada |
20H |
OFSI
(Sistema de Arquivos Willowsoft Overture) |
21H |
Oficialmente listado como Reservado
(HP Volume Expansion, variante SpeedStor). |
21H |
FSO2
(Reivindicado para FSO2 (Oxygen File System) por Dave Poirier) |
22H |
Partição estendida FSO2
(reivindicada para partição estendida de oxigênio por Dave Poirier) |
23H |
Oficialmente listado como Reservado |
24H |
NEC DOS 3.x |
26H |
Oficialmente listado como Reservado |
31H |
Oficialmente listado como Reservado |
32H |
NOS (Sistema Operacional de Rede)
( 32H está sendo usado pelo sistema operacional NOS, sendo desenvolvido pela Alien Internet Services em Melbourne, Austrália. O id 32H foi escolhido não apenas por ser um dos poucos que ainda estão disponíveis, mas também porque 32k é o tamanho da EEPROM para a qual o sistema operacional foi originalmente destinado. |
33H |
Oficialmente listado como Reservado |
34H |
Oficialmente listado como Reservado |
35H |
JFS no OS/2 ou eCS
[ 35H é usado pelo OS/2 Warp Server para e-Business, OS/2 Convenience Pack (também conhecido como versão 4.5) e eComStation (eCS, uma versão OEM do OS/2 Convenience Pack) para a implementação do OS/2 do JFS (IBM AIX Journaling File System)] |
36H |
Oficialmente listado como Reservado |
38H |
THEOS v3.2 (partição de 2 GB) |
39H |
Plano 9 partição
( O Plan 9 é um sistema operacional desenvolvido no Bell Labs para muitas arquiteturas. Originalmente, o Plan 9 usava uma porção não alocada no final do disco. A 3ª edição do Plan 9 usa partições do tipo 39H , subdivididas em subpartições descritas na tabela de partições do Plan 9 no segundo setor da partição.) |
39H |
Partição estendida THEOS v4 |
3aH |
THEOS v4 (partição de 4 GB) |
3bH |
Partição estendida THEOS v4
( THEOS é um sistema operacional multitarefa multiusuário para PCs fundado por Timothy Williams em 1983.) |
3cH |
Partição de recuperação PartitionMagic
(Quando um produto PowerQuest como Partition Magic ou Drive Image faz alterações no disco, ele primeiro altera o sinalizador de tipo para 3CH para que o sistema operacional não tente modificá-lo. No final do processo, ele é alterado de volta para o que era inicialmente. Portanto, a única vez que você pode ver um sinalizador de tipo 3CH é se o processo foi interrompido de alguma forma, como desligamento, reinicialização do usuário, etc. Se você alterá-lo de volta manualmente com um editor de tabela de partição ou qualquer programa de edição de disco, na maioria das vezes tudo ficará bem.) |
3dH |
NetWare oculto |
40H |
Venix 80286
(É um sistema operacional muito antigo, semelhante ao Unix, para PCs.) |
41H |
Linux/MINIX (compartilhamento de disco com DR-DOS)
(DR-DOS significa Digital Research-Disk Operating System.) |
41H |
Inicialização RISC pessoal |
41H |
Partição de inicialização PPC PReP (Power PC Reference Platform) |
42H |
Troca de Linux (compartilhamento de disco com DR-DOS) |
42H |
SFS (Secure File System)
( SFS é um driver de sistema de arquivos criptografado para DOS em PCs 386+, escrito por Peter Gutmann.) |
Byte indicador do sistema de arquivos em hexadecimal |
Descrição da partição/sistema de arquivos |
42H |
Marcador de partição estendida dinâmica do Windows 2000
(se uma entrada de tabela de partição do tipo 42H estiver presente na tabela de partição herdada, o Windows 2000 ignorará a tabela de partição herdada e usará uma tabela de partição proprietária e um esquema de particionamento proprietário (LDM ou DDM). Discos dinâmicos puros (aqueles que não contêm nenhuma partição vinculada fisicamente) têm apenas uma única entrada de tabela de partição, tipo 42H, para definir o disco inteiro. Discos dinâmicos armazenam sua configuração de volume em um banco de dados localizado em uma região privada de 1 MB no final de cada disco dinâmico.) |
43H |
Linux nativo (compartilhando disco com DR-DOS) |
44H |
Partição GoBack
( GoBack é um utilitário que registra alterações feitas no disco, permitindo que você visualize ou volte a algum estado anterior. Ele assume a E/S do disco como um Gerenciador de Disco faria e armazena seus logs em sua própria partição.) |
45H |
Gerenciador de inicialização Boot-US
( o gerenciador de inicialização Boot-US (Ulrich Straub) pode ser instalado no MBR, em uma partição primária separada ou em um disquete. Quando instalado em uma partição primária, essa partição obtém o ID 45H . Essa partição não contém um sistema de arquivos, ela contém apenas o gerenciador de inicialização e ocupa um único cilindro (abaixo de 8,4 GB).) |
45H |
Diretamente |
45H |
EUMEL/Anúncio |
46H |
EUMEL/Anúncio |
47H |
EUMEL/Anúncio |
48H |
EUMEL/Elan
( EUMEL , mais tarde conhecido como Ergos L3 , são os sistemas multitarefa multiusuário desenvolvidos por Jochen Liedtke na GMD, usando a linguagem de programação Elan . Foi usada em escolas alemãs para educação em ciência da computação.) |
4aH |
AdaOS Aquila |
4aH |
Sistema de arquivos leve ALFS/THIN para DOS |
4cH |
Partição Oberon |
4dH |
QNX4.x |
4eH |
QNX4.x 2ª partição |
4fH |
QNX4.x 3ª partição
( QNX é um sistema operacional distribuído, tolerante a falhas, com certificação POSIX ( Portable Operating System Interface for Unix ) para o 386 e versões posteriores, incluindo suporte para o 386EX em aplicativos embarcados.) |
4fH |
Partição de inicialização/dados Oberon |
50H |
OnTrack Disk Manager (versões mais antigas), Partição somente leitura ( o Disk Manager é um programa do OnTrack que permite que as pessoas usem discos IDE maiores que 504 MB no DOS. Versões do kernel Linux anteriores à 1.3.14 não coexistem com o DM.) |
50H |
Lynx RTOS (Sistema Operacional em Tempo Real)
( O Lynx RTOS oferece aos usuários a capacidade de colocar até 14 partições de 2 GB cada em unidades SCSI e IDE, para um total de até 28 GB de espaço no sistema de arquivos.) |
50H |
Nativo Oberon |
51H |
OnTrack Disk Manager (DM6.0 Aux1) , Partição de leitura/gravação |
51H |
Novell |
52H |
CP/M |
52H |
Microport SysV/AT ou Microport System V/386 |
53H |
OnTrack Disk Manager (DM6.0 Aux3), partição somente gravação |
54H |
Sobreposição de unidade dinâmica do OnTrack Disk Manager 6.0 |
55H |
Partição EZ-Drive
( EZ-Drive é outro programa gerenciador de disco desenvolvido pela MicroHouse em 1992. Agora é comercializado pela StorageSoft .) |
56H |
Golden Bow VFeature Partitioned Volume.
(Este também é um software utilitário do tipo Disk Manager. Este é um volume DOS não padrão.) |
56H |
DM convertido para EZ-BIOS |
57H |
DrivePro
( DrivePro foi desenvolvido pela MicroHouse em 1992. Agora é comercializado pela StorageSoft .) |
57H |
Partição VNDI |
5cH |
Volume particionado Priam EDisk
( Priam EDisk é um software utilitário do tipo Gerenciador de Disco. Este é um volume DOS não padrão.) |
61H |
SpeedStor
( Dimensões de armazenamento SpeedStor Volume particionado. Este é um volume DOS não padrão. É um software utilitário do tipo Gerenciador de disco.) |
63H |
Sistema Unix V/386, 386/ix, SCO, ISC Unix, UnixWare, Mach, MtXinu BSD 4.3 em Mach, GNU Hurd |
64H |
Novell NetWare 286, 2.xx |
Byte indicador do sistema de arquivos em hexadecimal |
Descrição da partição/sistema de arquivos |
64H |
Partição protegida pelo PC-ARMOUR
( 64H é usada pela proteção de disco do PC-ARMOUR pelo Dr. A. Solomon, com a intenção de manter o disco inacessível até que a senha correta fosse fornecida e então um gancho INT 13H fosse carregado acima do topo da memória que mostrava CHS = 0-0-2, com uma cópia da tabela de partição real, quando 0-0-1 era solicitado). |
65H |
Novell NetWare 3.86, 3.xx ou 4.xx
( O Novell Netware 3.0 e versões posteriores usam uma partição por unidade. Ele aloca volumes lógicos dentro dessas partições. Os volumes podem ser divididos em várias unidades. O sistema de arquivos usado é chamado Turbo FAT e lembra vagamente o sistema de arquivos DOS FAT. O Novell Netware costumava ser o principal sistema operacional de rede disponível. O Netware 68 ou S-Net (1983) era para um Motorola 68000, o Netware 86 para um Intel 8086 ou 8088. O Netware 286 era para um Intel 80286 e existia em várias versões que mais tarde foram mescladas ao Netware 2.2 . O Netware 386 foi uma reescrita em C para o Intel 386 que mais tarde foi renomeado para versões Netware 3.x (3.0, 3.1, 3.10, 3.11 e 3.12 etc). Seu sucessor Netware 4.xx tinha as versões 4.00, 4.01, 4.02, 4.10 e 4.11. Depois veio o Intranetware) |
66H |
Partição Novell Netware SMS
( SMS significa Storage Management Services. Não é usado atualmente.) |
67H |
Novell |
68H |
Novell |
69H |
Novell Netware 5+ e Novell Netware NSS Partition
( NSS significa Novell Storage Services). |
70H |
DiskSecure Multi-Inicialização |
71H |
Oficialmente listado como reservado |
73H |
Oficialmente listado como reservado |
74H |
Oficialmente listado como reservado |
74H |
Partição Scramdisk
( Scramdisk é um software de criptografia de disco. Ele suporta arquivos de contêiner, partições dedicadas tipo 74H e discos ocultos em arquivos de áudio WAV.) |
75H |
IBM PC/IX |
76H |
Oficialmente listado como reservado |
77H |
Partição M2FS/M2CS |
77H |
QNX 4.x |
78H |
Sistema de arquivos XOSL
( sistema de arquivos do carregador de inicialização XOSL ) |
78H |
QNY 4.x |
79H |
QNZ 4.x |
7EH |
CONSERTAR |
7Fh |
Padrão de partição Alt-OS-Development |
80H |
MINIX antigo, MINIX v1.1 a v1.4a |
81H |
MINIX 1.4b e posteriores
( MINIX é um sistema operacional semelhante ao Unix escrito por Andy Tanenbaum e alunos da Universidade Vrije, Amsterdã, por volta de 1989-1991. Ele roda em PCs (8086 e superiores), Macintosh, Atari, Amiga, Sparc. |
81H |
Linux antigo |
81H |
Gerenciador de Disco Avançado Mitac |
82H |
Melhor |
82H |
Solaris x86
( o Solaris cria uma única partição com ID 82H e então usa rótulos de disco Sun dentro da partição para dividi-la ainda mais.) |
82H |
Partição de swap do Linux |
83H |
Linux Native Partition ou sistema de arquivos nativo do Linux ou Linux Ext2fs
(Linux é um sistema operacional semelhante ao Unix escrito por Linus Torvalds e muitos outros na internet desde 1991. Ele roda em PCs 386 e posteriores e em uma variedade de outros hardwares. Ele é distribuído sob GPL (General Public License). Vários tipos de sistemas de arquivos como xiafs, ext2, ext3, reiserfs, etc. todos usam ID 83H .) |
84H |
Unidade C: oculta do OS/2 ou partição tipo 04 renumerada do OS/2.
( A partição tipo 04h renumerada do OS/2 está relacionada à ocultação da unidade C: do DOS) |
84H |
Partição de hibernação
(relatada para vários modelos de laptop, por exemplo, usada em Dell Latitudes (com BIOS Dell) que usam o utilitário MKS2D.) |
85H |
Partição estendida do Linux |
86H |
Super bloco de partição RAID Linux antigo |
86H |
Conjunto de volumes/faixas FAT16 (Windows NT) ou conjunto de volumes NTFS
(é um volume FAT16 tolerante a falhas herdadas). |
87H |
Partição espelhada tolerante a falhas HPFS ou conjunto de volumes NTFS ou conjunto de volumes/faixas NTFS
(volume NTFS tolerante a falhas legado. Partição espelhada tolerante a falhas HPFS.) |
8aH |
Partição do kernel Linux
(é usada pelo AiR-BOOT) |
Byte indicador do sistema de arquivos em hexadecimal |
Descrição da partição/sistema de arquivos |
8bH |
Volume FAT32 tolerante a falhas legado |
8cH |
Volume FAT32 tolerante a falhas legado usando BIOS Extended INT 13H. |
8dH |
Partição primária DOS FAT12 oculta do FDISK gratuito
( o FDISK gratuito é o FDISK usado pelo FreeDOS . Ele oculta os tipos 01H , 04H , 05H , 06H , 0BH , 0CH , 0EH e 0FH adicionando o número decimal 140 (8CH) .) |
8eH |
Partição do Gerenciador de Volume Lógico do Linux |
90H |
Partição primária DOS FAT16 oculta FDISK gratuita |
91H |
Partição estendida DOS oculta FDISK gratuita |
92H |
Partição FAT16 grande DOS primária oculta FDISK gratuita |
93H |
Partição nativa Linux oculta |
93H |
Sistema de arquivos ameba |
94H |
Tabela de blocos inválidos do Amoeba
(Amoeba é um sistema operacional distribuído escrito por Andy Tanenbaum, juntamente com Frans Kaashoek, Sape Mullender, Robert van Renesse e outros desde 1981. Ele roda em PCs (386 e superiores), Sun3, Sparc, 68030. É gratuito para universidades para fins de pesquisa e ensino.) |
95H |
Partição nativa MIT EXOPC |
97H |
Partição primária DOS FAT32 oculta FDISK gratuita |
98H |
Partição FAT32 DOS primária oculta gratuita do FDISK (LBA) |
99H |
Unidade lógica Mylex EISA SCSI ou DCE376
(usada pelo adaptador Mylex DCE376 EISA SCSI para partições que estão além do cilindro 1024 de uma unidade.) |
9aH |
Partição primária DOS FAT16 oculta (LBA) gratuita do FDISK |
9bH |
Partição estendida DOS oculta FDISK gratuita (LBA) |
9fH |
BSD/OS |
a0H |
Partição "Salvar em disco" do Phoenix NoteBIOS Power Management ou partição de hibernação de laptop
(é relatada para vários laptops como IBM Thinkpad , Phoenix NoteBIOS , Toshiba sob nomes como partição de suspensão zero-volt , partição de suspensão em disco , partição de salvar em disco , partição de gerenciamento de energia , partição de hibernação , geralmente no início ou no fim da área do disco.) |
a1H |
Partição de hibernação de laptop
(Usada como partição "Salvar em disco" em um notebook NEC 6000H. Os tipos A0H e A1H são usados em sistemas com Phoenix BIOS. O utilitário Phoenix PHDISK é usado com eles.) |
a1H |
Expansão de volume HP (variante SpeedStor) |
a3H |
Oficialmente listado como Reservado |
a4H |
Oficialmente listado como Reservado |
a5H |
BSD/386, 386BSD, NetBSD, FreeBSD
(386BSD é um sistema operacional semelhante ao Unix, uma porta do 4.3BSD Net/2 para o PC feita por Bill Jolitz por volta de 1991.) |
a6H |
OpenBSD
(OpenBSD, liderado por Theo de Raadt, separado do NetBSD. Ele tenta enfatizar a segurança.) |
a7H |
NEXTSTEP
( NEXTSTEP é baseado no Mach 2.6 e recursos do Mach 3.0 . É um verdadeiro sistema operacional orientado a objetos e ambiente de usuário. |
a8H |
Mac OS-X
( o OS-X da Apple usa esse tipo para sua partição do sistema de arquivos) |
a9H |
NetBSD |
aaH |
Partição de serviço Olivetti Fat 12 1.44MB
(contém um DOS 6.22 simples e um utilitário para trocar os tipos 06H e AAH na tabela de partição.) |
abH |
Partição de inicialização do Mac OS-X
(o OS-X da Apple (Darwin Intel) usa esse tipo para sua partição de inicialização.) |
abH |
Partição GO! |
morto |
Sistema de arquivos ShagOS |
por H |
Partição de swap do ShagOS |
b0H |
BootStar Dummy
(O gerenciador de boot BootStar gerencia sua própria tabela de partição, com até 15 partições primárias. Ele preenche entradas não utilizadas no MBR com valores BootStar Dummy.) |
b1H |
Oficialmente listado como Reservado |
b3H |
Oficialmente listado como Reservado |
b4H |
Oficialmente listado como Reservado |
b6H |
Oficialmente listado como Reservado |
B6H |
Conjunto de espelhos do Windows NT (mestre), sistema de arquivos FAT16 |
b7H |
Sistema de arquivos BSDI (troca secundária), sistema de arquivos BSDI BSD/386 |
B7H |
Conjunto de espelhos do Windows NT (mestre), sistema de arquivos NTFS |
Byte indicador do sistema de arquivos em hexadecimal |
Descrição da partição/sistema de arquivos |
b8H |
Partição swap BSDI BSD/386 (sistema de arquivos secundário)
(BSDI (Berkeley Software Design, Inc.) foi fundada por antigos membros do CSRG (UCB Computer Systems Research Group). Seu sistema operacional, baseado em Net/2, era chamado BSD/386.) |
bbH |
Assistente de inicialização oculto |
Bem |
Partição de inicialização do Solaris 8 |
c0H |
Partição segurada DR-DOS/Novell DOS |
C0H |
CTOS |
c0H |
REAL/32 partição pequena segura |
c0H |
Partição NTFT |
c1H |
Partição FAT de 12 bits protegida pelo DR DOS 6.0 LOGIN.EXE |
c2H |
Reservado para DR-DOS 7+ |
c2H |
Linux oculto |
c3H |
Troca oculta do Linux |
c4H |
Partição FAT de 16 bits protegida pelo DR DOS 6.0 LOGIN.EXE |
c5H |
DRDOS/seguro (estendido) |
c6H |
DRDOS/seguro (FAT-16, >= 32M)
( o DR-DOS 6.0 adicionará C0H ao tipo de partição para uma partição segura LOGIN.EXE para que o usuário não possa evitar a verificação de senha inicializando a partir de um disquete MS-DOS. Caso contrário, parece que os tipos C1H , C4H , C5H , C6H e D1H , D4H , D5H , D6H são usados precisamente como 1H , 4H , 5H e 6H .) |
c6H |
Conjunto de volumes/faixas FAT16 corrompidos (Windows NT)
(o NTFS adicionará C0H ao tipo de partição para partes desabilitadas de um conjunto tolerante a falhas. Assim, obtém-se os tipos C6H , C7H .) |
c7H |
Conjunto de volumes/faixas NTFS corrompido do Windows NT |
c7H |
Bota Syrinx |
c8H |
Oficialmente listado como Reservado |
c9H |
Oficialmente listado como Reservado |
caH |
Oficialmente listado como Reservado |
cbH |
Reservado para DR-DOS protegido FAT32 |
CCH |
Reservado para DR-DOS segurado FAT32 (LBA) |
CDH |
CTOS Memdump |
ceH |
Reservado para DR-DOS segurado FAT16 (LBA) |
d0H |
Partição grande segura REAL/32
(REAL/32 é uma continuação do DR Multi-user DOS.) |
d1H |
Antigo DOS multiusuário protegido FAT12 |
d4H |
Antigo DOS multiusuário protegido FAT16 <32M |
d5H |
Partição estendida segura DOS multiusuário antiga |
d6H |
Antigo DOS multiusuário protegido FAT16 >=32M |
d8H |
CP/M-86 |
já |
Dados não-FS |
DAP |
Pesquisa Digital CP/M, CP/M Concorrente, DOS Concorrente |
DAP |
CTOS (Convergent Technologies OS -Unisys) |
DAP |
Inicialização SCPU da Telemetria KDG
(a Telemetria KDG usa o ID DBH para armazenar uma imagem binária de modo protegido do código a ser executado em um módulo SCPU (CPU de supervisão) baseado em x86 da linha DT800.) |
ddH |
CTOS Memdump oculto |
deH |
Utilitários do servidor Dell PowerEdge (FAT) |
dfH |
Partição do gerenciador de disco virtual DG/UX |
dfH |
BootIt EMBRM
(O gerenciador de boot BootIt gerencia sua própria tabela de partição, com até 255 partições primárias.) |
e0H |
Reservado pela ST Microelectronics para um sistema de arquivos chamado ST AVFS. |
e1H |
Acesso DOS ou partição estendida FAT de 12 bits do SpeedStor
(É uma partição SSTOR em cilindros maiores que 1023). |
E2H |
DOS somente leitura |
e3H |
Dimensões de armazenamento |
e4H |
Partição estendida FAT de 16 bits do SpeedStor < 1024 cilindros |
e5H |
Oficialmente listado como Reservado |
e5H |
Tandy DOS com FAT setorizado lógico |
e6H |
Oficialmente listado como Reservado |
ebH |
BeOS BFS (BFS1)
( BeOS é um sistema operacional que roda em Power PCs) |
edH |
Reservado para Sprytix de Matthias Paul |
ei |
Indicação de que este MBR legado é seguido por um cabeçalho EFI |
seH |
Partição que contém um sistema de arquivos EFI |
f0H |
Carregador de inicialização Linux/PA-RISC |
f1H |
Dimensões de armazenamento |
f2H |
Partição secundária DOS 3.3+ |
f2H |
Unisys DOS com FAT setorizado lógico |
f3H |
Oficialmente listado como Reservado |
f4H |
Partição grande do SpeedStor |
F4H |
Partição de volume único do prólogo |
Byte indicador do sistema de arquivos em hexadecimal |
Descrição da partição/sistema de arquivos |
f5H |
Partição multivolume Prologue
(A partição do tipo F4H contém um volume e não é mais usada. A partição do tipo F5H contém de 1 a 10 volumes chamados MD0 a MD9 . Ela suporta um ou mais sistemas. Cada volume pode ter como sistema de arquivos o sistema de arquivos NGF ou o sistema de arquivos TwinFS .) |
f6H |
Oficialmente listado como Reservado |
F6H |
Dimensões de armazenamento SpeedStor |
faH |
Emulador Bochs x86 da MandrakeSoft |
fbH |
Partição do sistema de arquivos VMware |
fcH |
Partição VMware Swap
(a VMware oferece máquinas virtuais nas quais é possível executar Linux , Windows , FreeBSD .) |
FdH-Federação das Índias Ocidentais |
Partição RAID Linux com detecção automática usando superbloco persistente |
feH |
SpeedStor mais de 1024 cilindros |
feH |
LANstep |
feH |
Partição IBM PS/2 IML (Initial Microcode Load)
(localizada no final do disco). |
feH |
Partição oculta do Administrador de Disco do Windows NT
(o Administrador de Disco do Windows NT marca partições ocultas, ou seja, presentes, mas não para serem acessadas, como tipo FEH .) |
feH |
Partição do Linux Logical Volume Manager (antigo) |
ffH |
Tabela de blocos inválidos do XENIX |
Registro de inicialização do DOS (DBR) / Setor de inicialização do DOS
Depois da tabela de partição, o DOS Boot Record (DBR) ou às vezes chamado DOS Boot Sector é a segunda informação mais importante no 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 no formato CHS, podemos dizer C–H–S = 0–1–1 para a maioria das unidades.
No entanto, esse local pode variar dependendo do SPT (Sectors per Track) do Drive. Por exemplo, em um drive antigo de 245 MB com apenas 31 SPT, o Boot Record 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 se torna o setor lógico 1 daquela 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 Master Boot Record (MBR) Executable. Todas as partições DOS contêm o código do programa para inicializar a máquina, ou seja, carregar o sistema operacional, mas somente essa partição recebe o controle do Master Boot Record, que é especificado como partição ativa, na entrada da tabela de partições.
O programa Boot 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. Enquanto 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. Esse processo completo é chamado de “boot” do computador. Se esses arquivos de sistema não estiverem disponíveis no diretório, esse programa MBR exibe mensagens de erro calmantes como,
“Disco de sistema inválido ou erro de E/S de disco,
Substitua o disco e pressione qualquer tecla…”
Na tela e aguarda que o usuário coloque um disco inicializável com os programas acima mencionados na unidade de disquete e pressione uma tecla.
Como o disquete não possui partições, ele não possui MBR ou Tabela de Partição Mestre 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. Ela mostra onde o Boot Record, ambas as cópias do FAT, o Root Directory e o início da Data Area estão localizados:
Mapa lógico de disquete de 3½ polegadas, 1,44 MB, formatado com o sistema de arquivos FAT12 e com 18 setores por trilha, 80 trilhas, 2 lados e 512 bytes por setor (usando 1 setor por cluster). |
Setores Absolutos |
Conteúdo |
0 |
Registro de inicialização |
1 – 9 |
GORDURA 1 |
10 – 18 |
GORDURA 2 |
19 – 32 |
Diretório raiz |
33 – 2879 |
Área de Dados |
Você também pode criar subdiretórios na Data Area com arquivos que parecem estar contidos dentro deles. Na verdade, Subdiretórios nada mais são do que um arquivo especial que lista todos os arquivos aparentemente contidos dentro deste diretório e todos os dados relevantes sobre cada arquivo, como, a localização do Starting Cluster 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
- Entradas máximas do diretório raiz (mas não disponíveis 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ível para FAT32)
- Setores por trilha
- 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 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 tornar as extensões possíveis porque 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).
Seguindo a instrução JMP inicial, OEM ID é um campo de 8 bits reservado pela Microsoft para identificação OEM. O OEM ID 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 posteriores.
O terceiro componente principal do setor de inicialização é o BIOS Parameter Block (BPB). O bloco de parâmetros de disco é uma área de dados muito importante para o DOS. Ele ajuda o DOS a encontrar:
- Bytes por setor
- Setores por cluster
- Setores Reservados
- Número de FAT
- Número de entradas do diretório raiz
Formato de registro de inicialização FAT32 DOS |
Desvio |
Descrição |
Tamanho |
00H |
Código de salto + NOP |
3 bytes |
03H |
Nome e versão do OEM |
8 bytes |
0BH |
Bytes por setor |
2 bytes |
0DH |
Setores por cluster |
1 Byte |
0EH |
Setores Reservados |
2 bytes |
10H |
Número de cópias do FAT |
1 Byte |
11H |
Entradas máximas do diretório raiz (mas não disponíveis para FAT32) |
2 bytes |
13H |
Número de setores na partição menor que 32 MB (portanto, não disponível para FAT32) |
2 bytes |
15H |
Descritor de mídia (F8H para discos rígidos) |
1 Byte |
16H |
Setores por FAT (em sistemas FAT mais antigos e não disponível para FAT32) |
2 bytes |
18H |
Setores por trilha |
2 bytes |
1 AH |
Número de cabeças |
2 bytes |
1 canal |
Número de setores ocultos na partição |
4 bytes |
20H |
Número de setores na partição |
4 bytes |
24H |
Número de setores por FAT |
4 bytes |
28H |
Sinalizadores (bits 0-4 indicam cópia FAT ativa) (bit 7 indica se o espelhamento FAT está habilitado ou desabilitado <Limpar está habilitado>) (se o espelhamento FAT estiver desabilitado, as informações FAT serão gravadas somente na cópia indicada pelos bits 0-4) |
2 bytes |
2 AH |
Versão da unidade FAT32 (byte alto = versão principal, byte baixo = versão secundária) |
2 bytes |
2 canais |
Número do cluster do início do diretório raiz |
4 bytes |
30H |
Número do setor do setor de informações do sistema de arquivos (referenciado a partir do início da partição) |
2 bytes |
32H |
Número do setor do setor de inicialização de backup (referenciado a partir do início da partição) |
2 bytes |
34H |
Reservado |
12 bytes |
40H |
Número de partição da unidade lógica |
1 Byte |
41H |
Não utilizado (pode ser byte alto da entrada anterior) |
1 Byte |
42H |
Assinatura Estendida (29H) |
1 Byte |
43H |
Número de série ou ID binário de 32 bits da partição
(ID binário de 32 bits fornecido pelo próprio sistema operacional) |
4 bytes |
47H |
Nome do volume da partição |
11 bytes |
52H |
Nome FAT (FAT32 neste caso) |
8 bytes |
5 AH |
Código executável |
420 bytes |
1FEH |
Marcador executável ou número mágico (AAH 55H) |
2 bytes |
- Total de setores no 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
Essas informações nos ajudam a encontrar a localização do FAT e alguns outros valores importantes. Colocar informações erradas aqui ou corromper esses valores torna a inicialização a partir do disco rígido impossível. Às vezes, ter informações erradas no bloco de parâmetros do disco impedirá a inicialização a partir do disco rígido, bem como a partir do disco flexível.
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. (Veja a seção Clusters dada neste capítulo anteriormente). 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. (Veja Limites do sistema de arquivos fornecidos anteriormente e 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 posteriores) estão disponíveis examinando o byte de assinatura no deslocamento 26H.
Quaisquer setores antes do setor de boot de uma unidade lógica DOS são considerados setores 'ocultos'. O DOS não interpreta setores ocultos. Unidades de disquete normais têm 0 setores ocultos. Partições de 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, mesmo que seja apenas o primeiro setor que é realmente usado.
Descritor de mídia: Usado para dar uma indicação do tipo de mídia ou 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.
Descritores de mídia |
Tipo |
Capacidade |
Tamanho e tipo |
F0H |
2,88 MB |
3,5", 2 lados, 36 setores por trilha |
F0H |
1,44 MB |
3,5", 2 lados, 18 setores por trilha |
F9H |
720 KB |
3,5", 2 lados, 9 setores por trilha |
F9H |
1,2 MB |
5,25", 2 lados, 15 setores por trilha |
FDH |
360 KB |
5,25", 2 lados, 9 setores por trilha |
FFH |
320 KB |
5,25", 2 lados, 8 setores por trilha |
FCH |
180 KB |
5,25", 1 lado, 9 setores por trilha |
FEH |
160 KB |
5,25", 1 lado, 8 setores por trilha |
F8H |
--------- |
Disco Fixo |
Número de Setores de FAT: Deve ser calculado. O método de cálculo do tamanho de FAT foi dado na descrição de FAT dada no capítulo.
O DBR de um sistema de arquivos FAT32 é fornecido na figura a seguir:
Setores do FAT
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, estes valores devem ser os mesmos que aqueles retornados pelo BIOS. Se eles não forem os mesmos, você deve considerar que o disco foi mal configurado e que a partição pode estar inutilizável.
Hidden Sectors: Como já discutimos, este é o número de setores no disco físico que precede o início do volume, antes do próprio setor de boot. Ele é usado durante a sequência de boot para calcular o deslocamento absoluto para o diretório raiz e á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 o mesmo que o "número de setores que precedem a partição" na tabela de partições. Note que não é necessariamente o endereço LBA físico do primeiro setor, pois partições secundárias podem existir.
Se os Hidden Sectors não forem os mesmos da tabela de partição, você pode considerar o setor de boot como corrompido e a partição inutilizável. Note também que a palavra high geralmente contém lixo em versões antigas do DOS.
Se você suspeitar que um setor de inicialização foi corrompido, você pode verificar vários dos campos listados acima para ver se os valores listados ali fazem sentido.
Por exemplo, Bytes per Sector será 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 boot que são apropriadas para o sistema operacional que formatou o disco.
Por exemplo, sequências 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", "Disco sem sistema ou erro de disco", "Substitua e pressione qualquer tecla quando estiver pronto." e "Falha na inicialização do disco." As sequências de texto em volumes FAT formatados pelo Windows NT incluem: "BOOT: Não foi possível (ou não foi possível) encontrar NTLDR", "Erro de E/S ao ler o disco." e "Insira outro disco."
Mas lembre-se de que você não deve considerar esta lista como sendo completa. Se você encontrar outras mensagens no setor de boot, isso não indica necessariamente que há um problema com o setor de boot. Versões diferentes do MS-DOS e do Windows NT podem, às vezes, ter strings de mensagens ligeiramente diferentes em seus setores de boot.
Por outro lado, se você não encontrar nenhum texto, ou se o texto claramente não estiver relacionado ao MS-DOS ou ao Windows NT, você deve considerar a possibilidade de que seu setor de inicialização possa ter sido infectado por um vírus ou que alguma outra forma de corrupção de dados possa ter ocorrido.
Para recuperar de um setor de boot que foi infectado por um vírus, geralmente é melhor usar um programa antivírus comercial. Muitos vírus e trojans farão muito mais do que apenas gravar dados no setor de boot, então o reparo manual do setor de boot não é recomendado, pois pode não eliminar completamente o vírus ou trojan e, em alguns casos, pode fazer mais mal do que bem. No entanto, vamos lidar com DBR na seção de programação deste livro.
Se você suspeitar que o setor de boot foi danificado por algum outro motivo, pode ser possível recuperar o dano do setor de boot sem reformatar a unidade, modificando manualmente os campos descritos acima. Tentaremos superar esses problemas com programação em técnicas de programação de recuperação neste livro.
Tabela de alocação de arquivos (FAT)
Seguindo DBR estão as File Allocation Tables. A File Allocation Table (FAT) foi introduzida em 1977 para armazenar dados em disquetes para o Microsoft Disk Basic autônomo. A FAT foi modificada várias vezes para acomodar necessidades de expansão. Ela foi desenvolvida para atender aos requisitos de um sistema rápido e flexível para gerenciar dados em mídia removível e fixa.
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 é usado 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 alterou o tratamento de setores de baixo nível para usar parâmetros de 32 bits para superar o problema de suporte a discos grandes, pois já discutimos as limitações dos sistemas de arquivos.
O FAT mantém um mapa da superfície completa da unidade de disco, de modo que, qual área está livre, qual área está danificada, qual área está 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 rastreia cada setor na superfície do disco, em vez disso, ele gerencia a área do disco em um grupo de setores chamado “cluster” ou “unidade de alocação” (veja 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, ele consiste em um ou mais setores dependendo do tamanho do disco. 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 antes)
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, o FAT primário ou FAT1 e o FAT secundário ou FAT2 (normalmente há duas cópias, no entanto muitos sistemas operacionais novos criam mais de duas cópias do FAT).
Cada FAT ocupa setores contíguos no disco, com a segunda FAT imediatamente após a primeira FAT não fazendo com que o DOS use a segunda FAT para corrigir o problema; em vez disso, quando a primeira FAT é atualizada, o DOS a copia para a segunda FAT, corrompendo a segunda FAT também no processo.
Esta atualização é feita toda vez que o DOS descobre que a 1ª e a 2ª FAT não correspondem. Então, em caso de qualquer corrupção da 1ª FAT, deve-se fazer o reparo imediatamente usando algum software editor de disco e comparando a 1ª FAT com a 2ª FAT. Isso deve ser feito antes que o DOS copie a FAT corrompida para a segunda FAT.
Com a introdução do FAT32, tanto as entradas FAT quanto a numeração de setores agora são de 32 bits. Isso significa que agora há 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 possível de disco sob o FAT32.
O tamanho da entrada de diretório para cada arquivo no FAT 32 é de 4 bytes para conter o valor do cluster inicial do arquivo em vez dos 2 bytes necessários no 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 continua o mesmo. No meio do registro de 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, houve 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 uso de discos rígidos maiores.
Quando o Sistema de Arquivos de um Sistema Operacional é invocado por um programa para encontrar o conteúdo de um arquivo, o primeiro valor de cluster, na entrada de diretório para esse arquivo, é lido e usado para encontrar a cadeia FAT. A cadeia FAT é a lista de clusters que contêm dados pertencentes a um arquivo.
Layout da unidade FAT32 |
Desvio |
Descrição |
Início da Partição |
Setor de inicialização |
Início da Partição + Número de Setores Reservados |
Tabelas FAT |
Início da partição + Número de setores reservados + (Número de setores por FAT * 2)
[Supondo que o espelhamento FAT esteja habilitado, isso quase sempre é verdade] |
Diretório raiz |
Início da partição + Número de setores reservados + (Número de setores por FAT * 2) + Número de setores no diretório raiz |
Área de Dados |
As entradas FAT podem conter valores que indicam:
- O próximo cluster em uma cadeia FAT para um determinado arquivo
- Os clusters livres, 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
Entradas da Tabela FAT |
Número (Hex.) |
Descrição |
0 |
Cluster grátis |
???? |
Cluster em uso, próximo cluster na cadeia |
FF0-FF6 / FFF0-FFF6 |
O cluster está reservado |
FF7 /FFF7 |
O cluster contém setores defeituosos |
FF8-FFF / FFF8-FFFF |
Fim do arquivo |
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 para 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. Esse byte pode ser usado para encontrar o tipo de mídia de disco da qual essa 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 por 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 esse cluster é o último cluster em uma cadeia de clusters de um arquivo.
O valor de FF0H a FF7H em FAT de 12 bits indica clusters reservados. Um FF7H em FAT de 12 bits ou FFF7H em FAT de 16 bits indica que o cluster correspondente ao local do FAT é um cluster ruim, ou seja, é basicamente um cluster contendo setores ruins. 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 desligamento incorreto
É algo muito comum e espero que você tenha notado isso muitas vezes ao usar o Windows que, se houver algum desligamento incorreto no seu computador, devido a qualquer motivo, como falha de energia, corrupção de software, desligamento acidental, etc., quando você reinicia o computador, a mensagem de desligamento incorreto é exibida na tela durante o processo de inicialização e o sistema operacional verifica o disco em busca de erros.
As duas figuras a seguir mostram os 256 bytes do início de uma FAT de 32 bits, porém precisamos apenas dos 8 bytes iniciais para discutir isso.
Na verdade, quando o sistema operacional Windows é carregado na memória, ou seja, o Windows é iniciado, o 8º byte (ou deslocamento 7H) do FAT se torna 07H ou F7H de 0FH ou FFH.
A Microsoft usa o byte 0FH somente para o volume que contém o sistema operacional em execução e o byte FFH para qualquer outro volume que esteja acessando.
Assim que o Windows inicia a inicialização, o 8º byte é alterado para 07H ou F7H, que será redefinido para 0FH ou FFH somente se o Windows for desligado corretamente.
Se houver uma falha de energia, ou o botão Liga/Desliga do computador for desligado acidentalmente ou o sistema for reinicializado manualmente devido a algum problema de software, esse byte permanecerá como 07H ou F7H, o que informa ao sistema operacional Windows, na próxima vez que for inicializado, que houve algum tipo de desligamento incorreto e, então, 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 uma tabela de conteúdo para as informações armazenadas na unidade de disco rígido. A localização do Diretório Raiz pode ser facilmente estabelecida somando os valores do registro de inicialização, pois ele é posicionado após os FATs.
A área de 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 que se ramificam 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 ele está livre para crescer conforme necessário, pois agora é tratado como um arquivo.
O número de arquivos que se pode armazenar no diretório raiz depende do tipo de FAT que está sendo usado. Por exemplo, para um disquete de 3½ polegadas de 1,44 Mb 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:
Descrição do sistema de mídia e arquivo |
Entradas máximas do diretório raiz |
180K FDD de 5¼ polegadas de um lado |
64 |
Dupla face 5¼ polegadas 320K FDD |
64 |
Dupla face 5¼ polegadas 360K FDD |
112 |
Dupla face 3½ polegadas 720K FDD |
112 |
FDD de 5¼ polegadas e 1,2 megabytes frente e verso |
224 |
FDD de 3½ polegadas e 1,44 megabytes, frente e verso |
224 |
Discos de formato DMF de 3½ polegadas e 1,68 megabytes de dupla face (É por isso que a Microsoft criou os arquivos CAB!) |
16 |
FDD de 3½ polegadas e 2,88 megabytes frente e verso |
240 |
Discos rígidos (FAT12 e FAT16) |
512 |
Discos rígidos com FAT 32 (pois trata o diretório de rota como um arquivo) |
65.536 |
Isso não significa que com FAT de 16 bits a pessoa esteja limitada a armazenar apenas 512 arquivos no disco rígido. É possível usar subdiretórios para armazenar qualquer número de arquivos limitado apenas pelo tamanho do disco.
Lembre-se de que o rótulo de volume para um disquete é geralmente armazenado dentro do setor de boot, mas o rótulo de volume para um disco rígido é armazenado como uma entrada de diretório raiz e o espaço reservado no setor de boot é deixado em branco com espaços. O comando DIR do DOS retorna o que está no diretório, se presente, ou o que está no setor de boot, se não estiver.
As entradas de 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, porque ele 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 da entrada de diretório de um arquivo no diretório raiz são fatiados para armazenar as várias informações sobre ele:
Desvio |
Tamanho |
Descrição |
00H |
8 bytes |
Nome do arquivo
(veja também a próxima tabela para o significado especial do primeiro caractere do nome do arquivo) |
08H |
3 bytes |
Extensão |
0BH |
1 Byte |
Atributos de arquivo (consulte a tabela de atributos de arquivo) |
0CH |
10 bytes |
Reservado |
16H |
2 bytes |
Hora de criação ou última atualização (consulte a tabela de formato de data e hora) |
18H |
2 bytes |
Data de criação ou última atualização (consulte a tabela de formato de data e hora) |
1 AH |
2 bytes |
Início ou primeiro cluster de arquivo
(O valor 0000H é usado nas entradas do Diretório Pai (' .. ') para indicar que o Diretório Pai é o Diretório Raiz) |
1 canal |
4 bytes |
Tamanho do arquivo em bytes. |
O 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 do número ASCII 32. O campo Extensão contém a extensão do arquivo em letras maiúsculas.
Se o nome do arquivo tiver mais de 8 caracteres, o Windows criará um nome de arquivo curto a partir de um 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 é 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.
Nomes de arquivo longos são armazenados em entradas de diretório LFN (Long File Name) de 32 bytes 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 filename precede imediatamente a única entrada de diretório 8.3 no disco.
Cada entrada do diretório LFN contém até 13 caracteres do nome de arquivo longo, e o sistema operacional junta tantos quantos forem necessários para formar um nome de arquivo longo inteiro.
Esta é a causa pela qual os nomes longos de arquivo diminuem o número máximo possível de entradas de diretório raiz em um sistema de arquivos. Como o Windows suporta nomes longos de arquivo, discutiremos em detalhes, mais adiante 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 esse byte podem ser uma das fornecidas na tabela a seguir:
Primeiro caractere do nome do arquivo |
Valor |
Significado |
00H |
Indica que esta entrada de diretório não está sendo utilizada. |
05H |
Indica que o primeiro caractere do nome do arquivo é o caractere E5H, mas na verdade o arquivo não foi excluído. (Veja o significado de E5H) |
E5H |
O arquivo foi Erased e esta entrada de diretório é uma entrada de diretório de arquivo deletado. A área de dados anteriormente ocupada por aquele arquivo agora está livre para alocação para outro arquivo novo. |
2EH |
Este é um Subdiretório. O campo de número de cluster desta entrada conterá o número de cluster do diretório. |
2EH 2EH |
Dois 2EH em uma entrada de diretório indicam a entrada do diretório pai de um Subdiretório. O número do cluster dessa entrada conterá o número do cluster do diretório pai desse diretório. O número do cluster será zero 0000H se o diretório pai for o diretório raiz. |
Os Atributos são um campo codificado binário de 8 bits. A tabela a seguir informa sobre o Status para o sinalizador de atributos para o arquivo fornecido:
Bits de Atributo |
Atributo |
Pedaço |
Binário |
Hex |
Sinalizador de arquivo somente leitura |
0 |
.......? |
01H |
Sinalizador de arquivo oculto |
1 |
......?. |
02H |
Sinalizador de arquivo do sistema |
2 |
.....?.. |
04H |
Sinalizador de rótulo de volume
(indica que a entrada é um rótulo de volume) |
3 |
....?... |
08H |
Subdiretório
(no mesmo formato do diretório) |
4 |
...?.... |
10H |
Bit de arquivo
(arquivo modificado desde o último backup) |
5 |
...?..... |
20H |
Reservado (contém 0) |
6 |
.0...... |
- |
Reservado (contém 0) |
7 |
0....... |
- |
Um arquivo pode ter múltiplos atributos. Por exemplo, um único arquivo pode ser somente leitura e também 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).
Time and Date é um campo especialmente codificado de 32 bits (16 bits de Time e 16 bits para Date). A divisão desses bits de codificação para compor o Time de criação ou última atualização e a Date de criação ou última atualização para um File, foi dada na tabela a seguir:
A entrada para Time of Create ou Last Update do arquivo, que é o 16º e 17º Byte na entrada do diretório, tem o formato dado na tabela acima. A codificação é a seguinte:
- H é um 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 de Criação ou Última Atualização do Arquivo, 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 é um número binário para mês, que pode 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 é vinculada à entrada FAT com base no primeiro valor de 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 é 4 Bytes. Com isso, podemos calcular como o FAT32 suporta o tamanho máximo de um arquivo de até 4.294.967.295 Bytes, que é cerca de 4 GiB. Os 4 Bytes têm 32 Bits e o tamanho máximo possível de Arquivo composto por qualquer Binário de 32 Bits poderia ser,
= 11111111 11111111 11111111 11111111 (B) Bytes
= 4.294.967.295 (D) Bytes
~ 4 GB
Portanto, o FAT32 suporta o tamanho máximo de arquivo de até 4 GiB.
Entrada do diretório raiz
O tamanho do arquivo e o cluster inicial do arquivo podem ser recursos valiosos para recuperação de dados na recuperação de arquivos danificados, pois podemos calcular 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 dada na tabela a seguir:
Nome de arquivo longo (LFN)
Como já discutimos anteriormente em Discussão sobre o diretório raiz, anteriormente o diretório raiz costumava ter um tamanho fixo e estava localizado em uma posição fixa no disco, mas agora ele está livre para crescer conforme necessário, pois agora é tratado como um arquivo.
Isso é muito importante para nomes de arquivo longos porque cada nome de arquivo longo usa várias entradas de diretório. Adicionar suporte a nomes de arquivo longos 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 esse novo sistema operacional retornar nomes de arquivo de 255 caracteres, muitos aplicativos mais antigos, que esperam receber no máximo 11 caracteres, travariam porque um programa tem que reservar memória para armazenar os nomes de arquivo que lê, e se ele reservar 16 bytes para um nome de arquivo e o sistema operacional copiar (digamos) 32 caracteres para esse espaço, então outros dados serão substituídos. Uma maneira segura de quebrar um aplicativo é copiar dados aleatórios para seu espaço de dados.
Para superar esse problema, uma solução inteligente foi encontrada no Windows 95, para o problema de suportar nomes de arquivos longos, preservando a compatibilidade com versões anteriores dos aplicativos DOS e Windows.
Quando a maioria dos aplicativos (exceto utilitários de disco de baixo nível, como o Norton Disk Doctor) consultam o sistema em busca de nomes de arquivos e subdiretórios, eles não o fazem lendo entradas de diretório diretamente do disco, mas usando funções de enumeração incorporadas ao sistema operacional.
Como sabemos, uma entrada de diretório é marcada com a combinação de atributos somente leitura, oculto, sistema e rótulo de volume Bits. Provavelmente, se o byte de atributo de Directory Entry contiver 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 pularã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 que é visível para todos os aplicativos e um nome longo que é visível apenas para aplicativos do Windows 95 (e posteriores) e para aplicativos que foram reescritos para adicionar suporte a nomes de arquivo 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 longo, truncando-o para seis caracteres maiúsculos e adicionando "~1" ao final do nome de arquivo base.
Se já houver outro nome de arquivo com os mesmos seis primeiros caracteres, o número é 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 arquivo longos são armazenados em entradas de diretório LFN (Long File Name) de 32 bytes 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 LFN (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 junta quantos caracteres forem necessários para formar um nome de arquivo longo inteiro.
Para uma entrada de diretório Long File Name, os nomes de arquivo são armazenados no formato Unicode, que requer 2 bytes por caractere, em oposição a 1 byte de ASCII. Os caracteres de nome de arquivo são distribuídos entre 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 a outras
- Entradas de diretório de nome de arquivo longo associadas ao mesmo arquivo.
Se um nome de arquivo longo exigir três entradas de diretório LFN, o número de sequência da primeira será 1, o da segunda será 2 e o número de sequência da terceira será 3, e o Bit 6 do primeiro Byte da terceira entrada será definido como 1 para indicar que é a última entrada na sequência.
O campo de atributo aparece no mesmo local nas entradas do diretório LFN como nas entradas do diretório 8.3 porque o sistema de arquivos não sabe com qual tipo de entrada de diretório está lidando até depois de examinar o byte de atributo. O campo de número de cluster inicial também aparece no mesmo local, mas nas entradas do diretório LFN seu valor é sempre 0. O campo indicador de tipo também contém 0 em cada nome de arquivo longo.
Um dos problemas com nomes de arquivo longos é que eles consomem mais espaço em disco do que os curtos. Isso não é um grande problema quando nomes longos são armazenados em subdiretórios, porque enquanto houver espaço em disco 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 nomes de arquivo longos desperdiçam 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, como um nome de 128 caracteres requer 11 entradas, 10 para o nome longo e 1 para o nome curto, você poderá criar apenas 46 arquivos e subdiretórios no diretório raiz se cada um receber um nome de 128 caracteres.
O problema desaparece no FAT32 também porque o diretório raiz no FAT32 também pode crescer, pois 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 Root Directory, a Data Area (ou Files Area) começa. Em vez disso, podemos dizer que o restante do volume após o Root Directory é a Data Area.
A área de dados contém os dados reais armazenados na superfície do disco. O DOS usa o número de cluster 2 para o primeiro setor da área de dados, portanto, devemos ter em mente, ao executar 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 remove apenas a entrada do diretório e as entradas FAT e não toca na área de dados real.
Isso torna possível a recuperação de uma unidade de disco rígido formatada acidentalmente, o que não é possível em todos os casos de disquete formatado acidentalmente. Como no Format completo pelo 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 “Last Cluster Used” (LCU) para armazenar o último número de cluster usado. Inicialmente, o valor desse ponteiro é zero, quando alguma informação é escrita em um cluster específico, esse número de cluster é armazenado no ponteiro LCU.
Depois disso, toda vez que a nova informação for gravada, o DOS procura um cluster livre a partir do número LCU em diante. Isso força os novos dados gravados no disco a permanecerem contíguos, pois os dados são gravados na nova área não utilizada.
Agora, a compreensão dos dados em caso de exclusão acidental seria muito mais fácil, pois o arquivo está em uma área contígua no disco. Uma vez que o fim do disco é atingido ou o sistema é reiniciado, o valor do ponteiro LCU é reiniciado para zero.
Mas o problema não dura aqui. Não é praticamente possível que você crie apenas novos arquivos no 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 trilhas internas do disco rígido.
Portanto, se qualquer arquivo, que foi armazenado no disco, for movido ou excluído, os clusters na área de dados que foram 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 muitas exclusões e criações de arquivos fragmentam os dados no disco e isso causa 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ê tem um arquivo de 10 MB armazenado em um disco usando clusters de 4.096 bytes, ele está usando 2.560 clusters. Esses clusters podem estar em trilhas diferentes, diferentes pratos do disco, na verdade, eles podem estar em qualquer lugar.
Embora um arquivo possa ser espalhado por todo o disco, isso está longe de ser a situação preferida. O motivo é o desempenho lento indesejável. Discos rígidos são dispositivos relativamente lentos, principalmente porque têm peças mecânicas neles. Cada vez que o disco rígido tem que mover as cabeças para uma trilha diferente, leva um tempo equivalente a milhares e milhares de ciclos do 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 que ele usa seria localizado um após o outro no disco. Isso permitiria que o arquivo inteiro fosse lido, se necessário, sem muito movimento mecânico pelo disco rígido.
Na verdade, o sistema de arquivos começa com todos ou a maioria dos seus arquivos contíguos, mas como resultado da criação e exclusão de arquivos ao longo do tempo, os dados no disco se tornam 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:
grupo 1 |
grupo 2 |
grupo 3 |
aglomerado 4 |
aglomerado 5 |
aglomerado 6 |
aglomerado 7 |
aglomerado 8 |
aglomerado 9 |
grupo 10 |
aglomerado 11 |
aglomerado 12 |
Agora vamos supor que criamos quatro arquivos, Arquivo A, B, C e D neste disco. O arquivo A ocupa 1 cluster, o arquivo B ocupa 4, o arquivo C ocupa 2 e o arquivo D ocupa 3. Nós os armazenamos no espaço livre disponível, e eles começam todos contíguos, como mostrado na próxima figura:
Depois de algum tempo, vamos deletar o arquivo C e, ao fazer isso, ambos os clusters que estavam ocupados pelo arquivo C, agora estão livres ou não alocados. Isso deixa o disco com a aparência da figura a seguir:
Agora, criamos um novo Arquivo E que precisa de 3 clusters. Mas, como não há blocos contíguos no disco restantes que tenham 3 clusters de comprimento, então temos que dividir E em dois fragmentos, usando parte do espaço anteriormente ocupado por C. Agora nosso disco vai se parecer com a figura dada a seguir:
Após um período de tempo, vamos deletar os arquivos A e E e criar o arquivo F que ocupa 5 clusters. O disco agora se parece com a figura abaixo:
Agora vemos que o arquivo F acaba sendo quebrado em três fragmentos. Esse tipo de dado no disco é chamado de dado fragmentado. O exemplo dado acima é um exemplo muito simplificado de fragmentação, porque os discos reais têm milhares de arquivos e milhares de clusters, então o problema ali é ampliado. Isso lhe dá uma ideia geral do que acontece.
O que um programa de desfragmentação (como o programa DEFRAG da Microsoft, o SpeedDisk da Norton) faz é reorganizar o disco para obter os arquivos de volta em forma contígua. Após executar o utilitário de desfragmentação de disco, os dados desfragmentados no disco sobre os quais estávamos falando ficarão como a figura abaixo:
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 quebrados para recuperação de dados, um tem dados fragmentados e um foi 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 caso, 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, e a porcentagem de dados recuperados também será decepcionante.
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. Esses passos foram descritos com o procedimento de recuperação da seguinte forma:
Inicialize o sistema com disquete inicializável
Inicialize 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. Se a(s) unidade(s) estiver(em) acessível(eis), 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 pedaço de dados 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.
O Diskedit será o programa mais adequado para analisar o disco para fins de recuperação de dados. Bem, qualquer programa que você ache fácil de usar está com você. Tente ler o MBR e especialmente sua tabela de partição.
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 mais ou menos assim:
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 hackeado por…” ou qualquer outra mensagem inesperada. Isso indica que há algo seriamente errado com o MBR e, muito 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 notado aqui é que a tabela de partição não deve estar 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. Tente as técnicas de programação de recuperação de dados, fornecidas 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 gravar a tabela de partições manualmente com alguma ferramenta de edição de disco, como o Diskedit, porém, em alguns casos, é muito difícil fazer isso.
Para os usuários que não são programadores e também não têm nenhum backup, podem usar o método que venho usando desde a época do desenvolvimento do meu projeto de recuperação de dados, na época da faculdade.
O que você precisa fazer é procurar um computador perto de você que tenha quase o mesmo tamanho de disco, o mesmo número de partições e, o mais importante, o mesmo sistema operacional que estava no seu computador.
No entanto, ele funciona completamente, na maioria das vezes. Mas se não, pelo menos pode ajudar você a acessar a primeira partição do seu disco. Até mesmo seu sistema operacional também inicializará normalmente, se ele foi instalado na primeira partição e se as outras 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 muitas informações importantes sobre o FAT, clusters de diretório raiz e tamanho da partição, etc. Use algum utilitário como o Diskedit para ler as informações do DBR se o DBR estiver corrompido ou tiver alguma informação ilegal e restaure o DBR a partir 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 informações apropriadas.
Há também uma maneira muito fácil de descobrir a área de corrupção. As mensagens de erro que são exibidas na tela têm alguma causa específica para serem exibidas. A descrição de algumas mensagens de erro importantes é a seguinte:
Mensagem |
Descrição |
“Setor não encontrado lendo unidade” |
Esta mensagem pode aparecer durante qualquer operação DOS. Geralmente, é causada por desbotamento ou perda de um ID de setor. |
“Erro de dados ao ler a unidade” |
Esta mensagem pode aparecer durante qualquer operação DOS. Ela é causada pela falha na verificação de dados – CRC (Cyclic Redundancy Check) ou ECC (Error Correction Code). Esta “Verificação de dados” se refere ao mecanismo usado para verificar se os dados lidos do disco são confiáveis. |
“0 disco(s) rígido(s) encontrado(s)” |
É exibido se o disco rígido não for detectado pelo BIOS do computador. Verifique as conexões do cabo de energia e dados do disco rígido. Se as conexões estiverem corretas, o problema pode ser devido a algum erro de hardware do disco rígido. |
“Falha no disco rígido, pressione F1 para continuar” |
O mesmo que acima |
“Especificação de unidade inválida” |
Ele é exibido na condição em que o sistema não reconhece o hardware, ou não há informações de partição, ou o driver de dispositivo da unidade está ausente. |
“Configuração inválida, pressione F1 para continuar” |
Se o disco rígido estiver disponível, a bateria da placa-mãe está descarregada e o sistema perdeu suas informações de configuração SETUP ou o disco não está respondendo. |
“Tabela de partição inválida” |
Esta é a mensagem de erro do MBR. Ela é exibida quando a tabela de partição do MBR não tem as informações de partição válidas. |
“Erro ao carregar o sistema operacional” |
Esta é a mensagem de erro do MBR. Ela é exibida devido a qualquer tipo de corrupção de informação do MBR. |
“Sistema operacional ausente” |
O mesmo que acima. |
“Falha na inicialização do disco” |
Esta é uma mensagem de erro do DBR. Normalmente, o disco rígido deve estar acessível se você inicializar a partir de um disquete. Embora não seja inicializável, isso não deve afetar o acesso aos dados no disco. |
"disco sem sistema ou erro de disco" |
O mesmo que acima. |
"Interpretador de comando inválido ou ausente" |
Esta mensagem é exibida devido a um interpretador de comandos inválido ou ausente. Por exemplo, se o sistema operacional não encontrar command.com no caminho atual ou command.com estiver corrompido. |