O sistema de arquivos do MS-DOS
O sistema de arquivos do MS-DOS é o sistema com
o qual os primeiros PCs da IBM vinham instalados. Foi o principal
sistema de arquivos até o Windows 98 e o Windows ME. Ainda é aceito
no Windows 2000, Windows XP e Windows Vista, embora não seja mais
padrão nos novos PCs exceto para discos flexíveis. No entanto, ele
e uma extensão dele (FAT-32) tomaram-se amplamente usados para
muitos sistemas embarcados. Muitos players de MP3 o usam
exclusivamente, além de câmeras digitais. O popular iPod da Apple o
usa como o sistema de arquivos padrão, embora hackers que conhecem
do assunto conseguem refomatar o iPod e instalar um sistema de
arquivos diferente. Desse modo, o número de dispositivos eletrônicos
usando o sistema de arquivos MS-DOS é muito maior agora do que em
qualquer momento no passado e, decerto, muito maior do que o número
usando o sistema de arquivos NTFS mais moderno.
Para ler um arquivo, um programa de MS-DOS deve
primeiro fazer uma chamada de sistema open para abri-lo. A chamada de
sistema open especifica um caminho, o qual pode ser absoluto ou
relativo ao diretório de trabalho atual. O caminho é analisado
componente a componente até que o diretório final seja localizado e
lido na memória. Ele então é vasculhado para encontrar
o arquivo a ser aberto.
o arquivo a ser aberto.
Embora os diretórios de MS-DOS tenham tamanhos
variáveis, eles usam uma entrada de diretório de 32 bytes de
tamanho fixo. Ele contém o nome do arquivo, atributos, data e
horário de criação, bloco de partida e tamanho exato do arquivo.
Nomes de arquivos mais curtos do que 8 + 3 caracteres são ajustados
à esquerda e preenchidos com espaços à direita, separadamente em
cada campo. O campo Atributos é novo e contém bits para indicar que
um arquivo é somente de leitura, precisa ser arquivado, está
escondido ou é um arquivo de sistema. Arquivos somente de leitura
não podem ser escritos. Isso é para protegê-los de danos
acidentais. O bit arquivado não tem uma função de sistema
operacional real (isto é, o MS-DOS não o examina ou o altera). A
intenção é permitir que programas de arquivos em nível de usuário
o desliguem quando efetuarem o backup de um arquivo e que os outros
programas o liguem quando modificarem um arquivo. Dessa maneira, um
programa de backup pode apenas examinar o bit desse atributo em cada
arquivo para ver quais arquivos devem ser copiados. O bit oculto pode
ser alterado para evitar que um arquivo apareça nas listagens de
diretório. Seu uso principal é evitar confundir usuários novatos
com arquivos que eles possam não compreender. Por fim, o bit sistema
também oculta arquivos. Além disso, arquivos de sistema não podem
ser removidos acidentalmente usando o comando del. Os principais
componentes do MS-DOS têm esse bit ligado.
A entrada de diretório também contém a data e
o horário em que o arquivo foi criado ou modificado pela última
vez. O tempo é preciso apenas até ±2 segundos, pois ele está
armazenado em um campo de 2 bytes, que pode armazenar somente 65.536
valores únicos (um dia contém 86.400 segundos). O campo do tempo é
subdividido em segundos (5 bits), minutos (6 bits) e horas (5 bits).
A data conta em dias usando três subcampos: dia (5 bits), mês (4
bits) e ano - 1980 (7 bits). Com um número de 7 bits para o ano e o
tempo começando em 1980, o maior valor que pode ser representado é
2107. Então, o MS-DOS tem um problema Y2108 em si. Para evitar a
catástrofe, seus usuários devem atentar para esse problema o mais
cedo possível. Se o MS-DOS tivesse usado os campos data e horário
combinados como um contador de 32 bits, ele teria representado cada
segundo exatamente e atrasado a catástrofe até 2116.
O MS-DOS armazena o tamanho do arquivo como um
número de 32 bits, portanto na teoria os arquivos podem ser de até
4 GB. No entanto, outros limites ( descritos a seguir) restringem o
tamanho máximo do arquivo a 2 GB ou menos. Uma parte
surpreendentemente grande da entrada (10 bytes) não é usada.
O MS-DOS monitora os blocos de arquivos mediante
uma tabela de alocação de arquivos na memória principal. A entrada
do diretório contém o número do primeiro bloco de arquivos. Esse
número é usado como um índice em uma FAT de 64 K entradas na
memória principal. Seguindo o encadeamento, todos os blocos podem
ser encontrados.
O sistema de arquivos FAT vem em três versões:
FAT-12, FAT-16 e FAT-32, dependendo de quantos bits um endereço de
disco contém. Na realidade, FAT-32 não é um nome adequado, já que
apenas os 28 bits menos significativos dos endereços de disco são
usados. Ele deveria chamar-se FAT-28, mas as potências de dois soam
bem melhor.
Outra variante do sistema de arquivos FAT é o
exFAT, que a Microsoft introduziu para dispositivos removíveis
grandes. A Apple licenciou o exFAT, de maneira que há um sistema de
arquivos moderno que pode ser usado para transferir arquivos entre
computadores Windows e OS X. O exFAT é de propriedade da Microsoft e
a especificação não foi liberada pela empresa.
Para todas as FATs, o bloco de disco pode ser
alterado para algum múltiplo de 512 bytes (possivelmente diferente
para cada partição), com o conjunto de tamanhos de blocos
permitidos (chamado cluster sizes - tamanhos de aglomerado - pela
Microsoft) sendo diferente para cada variante. A primeira versão do
MS-DOS usava a FAT-12 com blocos de 512 bytes, dando um tamanho de
partição máximo de 212 x 512 bytes (na realidade somente 4086 x
512 bytes, pois 10 dos endereços de disco foram usados como
marcadores especiais, como fim de arquivo, bloco defeituoso etc.).
Com esses parâmetros, o tamanho de partição de disco máximo era
em tomo de 2 MB e o tamanho da tabela FAT na memória era de 4096
entradas de 2 bytes cada. Usar uma entrada de tabela de 12 bits teria
sido lento demais.
Esse sistema funcionava bem para discos
flexíveis, mas quando os discos rígidos foram lançados, ele
tornou-se um problema. A Microsoft solucionou o problema permitindo
tamanhos de blocos adicionais de 1 KB, 2 KB e 4 KB. Essa mudança
preservou a estrutura e o tamanho da tabela FAT-12, mas pennitiu
partições de disco de até 16 MB.
Como o MS-DOS dava suporte para quatro partições
de disco por unidade de disco, o novo sistema de arquivos FAT-12
funcionava para discos de até 64 MB. Além disso, algo tinha de
ceder. O que aconteceu foi a introdução do FAT-16, com ponteiros de
disco de 16 bits. Adicionalmente, tamanhos de blocos de 8 KB, 16 KB e
32 KB foram permitidos. (32.768 é a maior potência de dois que pode
ser representada em 16 bits.) A tabela FAT-16 ocupava 128 KB de
memória principal o tempo inteiro, mas com as memórias maiores
então disponíveis, ela era amplamente usada e logo substituiu o
sistema de arquivos FAT-12. A maior partição de disco a que o
FAT-16 pode dar supotte é 2 GB (64 K entradas de 32 KB cada) e o
maior disco, 8 GB, a saber quatro partições de 2 GB cada. Por um
bom tempo, isso foi o suficiente.
Mas não para sempre. Para cartas comerciais,
esse limite não é um problema, mas para armazenar vídeos digitais
usando o padrão DV, um arquivo de 2 GB contém apenas um pouco mais
de 9 minutos de vídeo. Como um disco de PC suporta apenas quatro
partições, o maior vídeo que pode ser armazenado em disco é de
mais ou menos 38 minutos, não importa o tamanho do disco. Esse
limite também significa que o maior vídeo que pode ser editado
on-line é de menos de 19 minutos, pois ambos os arquivos de entrada
e saída são necessários.
A partir da segunda versão do Windows 95, foi
introduzido o sistema de arquivos FAT-32 com seus endereços de disco
de 28 bits e a versão do MS-DOS subjacente ao Windows 95 foi
adaptada para dar suporte à FAT-32. Nesse sistema, as partições
poderiam ser teoricamente 228 x 215 bytes, mas na realidade elas eram
limitadas a 2TB (2048 GB), pois internamente o sistema monitora os
tamanhos de partições em setores de 512 bytes usando um número de
32 bits, e 29 x 232 é 2 TB.
Além de dar suporte a discos maiores, o sistema
de arquivos FAT-32 tem duas outras vantagens sobre o FAT-16.
Primeiro, um disco de 8 GB usando FAT-32 pode ter uma única
partição. Usando o FAT-16 ele tem quatro partições, o que aparece
para o usuário do Windows como C:, D:, E: e F: unidades de disco
lógicas. Cabe ao usuário decidir qual arquivo colocar em qual
unidade e monitorar o que está onde.
A outra vantagem do FAT-32 sobre o FAT-16 é que
para um determinado tamanho de partição de disco, um tamanho de
bloco menor pode ser usado. Por exemplo, para uma partição de disco
de 2 GB, o FAT-16 deve usar blocos de 32 KB; de outra maneira, com
apenas 64K endereços de disco disponíveis, ele não pode cobrir
toda a partição. Em comparação, o FAT-32 pode usar, por exemplo,
blocos de 4 KB para uma partição de disco de 2 GB. A vantagem de um
tamanho de bloco menor é que a maioria dos arquivos é muito mais
curta do que 32 KB. Se o tamanho do bloco for 32 KB, um arquivo de 10
bytes imobiliza 32 KB de espaço de disco. Se o arquivo médio for,
digamos, 8 KB, então com um bloco de 32 KB, três quartos do disco
serão desperdiçados, o que não é uma maneira muito eficiente de
se usar o disco. Com um arquivo de 8 KB e um bloco de 4 KB, não há
desperdício de disco, mas o preço pago é mais RAM consumida pelo
FAT. Com um bloco de 4 KB e uma partição de disco de 2 GB, há 512
K blocos, de maneira que o FAT precisa ter 512K entradas na memória
(ocupando 2 MB de RAM).
O MS-DOS usa a FAT para monitorar blocos de disco
livres. Qualquer bloco que no momento não esteja alocado é marcado
com um código especial. Quando o MS-DOS precisa de um novo bloco de
disco, ele pesquisa a FAT para uma entrada contendo esse código.
Desse modo, não são necessários nenhum mapa de bits ou lista de
livres.
O sistema de arquivos do UNIX V7
Mesmo as primeiras versões do UNIX tinham um
sistema de arquivos multiusuário bastante sofisticado, já que era
derivado do MULTICS. A seguir discutiremos o sistema de arquivos V7,
aquele do PDP-11 que tomou o UNIX famoso.
O sistema de arquivos tem forma de uma árvore
começando no diretório-raiz, com a adição de ligações, formando
um gráfico orientado acíclico. Nomes de arquivos podem ter até 14
caracteres e contêm quaisquer caracteres ASCII exceto / (porque se
trata de um separador entre componentes em um caminho) e NUL (pois é
usado para preencher os espaços que sobram nos nomes mais curtos que
14 caracteres). NUL tem o valor numérico de 0.
Uma entrada de diretório UNIX contém uma
entrada para cada arquivo naquele diretório. Cada entrada é
extremamente simples, pois o UNIX usa o esquema i-node. Uma entrada
de diretório contém apenas dois campos: o nome do arquivo (14
bytes) e o número do i-node para aquele arquivo (2 bytes). Esses
parâmetros limitam o número de arquivos por sistema a 64 K.
Assim o i-node do UNIX contém alguns atributos.
Os atributos contêm o tamanho do arquivo, três horários (criação,
último acesso e última modificação), proprietário, grupo,
informação de proteção e uma contagem do número de entradas de
diretórios que apontam para o i-node. Este último campo é
necessário para as ligações. Sempre que uma ligação nova é
feita para um i-node, o contador no i-node é incrementado. Quando
uma ligação é removida, o contador é decrementado. Quando ele
chega a 0, o i-node é reivindicado e os blocos de disco são
colocados de volta na lista de livres.
O monitoramento dos blocos de disco é feito
usando uma generalização a fim de lidar com arquivos muito grandes.
Os primeiros 10 endereços de disco são armazenados no próprio
i-node, então para pequenos arquivos, todas as informações
necessárias estão diretamente no i-node, que é buscado do disco
para a memória principal quando o arquivo é aberto. Para arquivos
um pouco maiores, um dos endereços no i-node é o de um bloco de
disco chamado bloco indireto simples. Esse bloco contém endereços
de disco adicionais. Se isso ainda não for suficiente, outro
endereço no i-node, chamado bloco indireto duplo, contém o endereço
de um bloco com uma lista de blocos indiretos simples. Cada um desses
blocos indiretos simples aponta para algumas centenas de blocos de
dados. Se mesmo isso não for suficiente, um bloco indireto triplo
também pode ser usado.
Quando um arquivo é aberto, o sistema deve tomar
o nome do arquivo fornecido e localizar seus blocos de disco. Vamos
considerar como o nome do caminho /usr/ast/mbox é procurado.
Usaremos o UNIX como exemplo, mas o algoritmo é basicamente o mesmo
para todos os sistemas de diretórios hierárquicos. Primeiro, o
sistema de arquivos localiza o diretório-raiz. No UNIX o seu i-node
está localizado em um local fixo no disco. A partir desse i-node,
ele localiza o diretório-raiz, que pode estar em qualquer lugar, mas
digamos bloco 1.
Em seguida, ele lê o diretório-raiz e procura o
primeiro componente do caminho, usr, no diretório-raiz para
encontrar o número do i-node do arquivo /usr. Localizar um i-node a
partir desse número é algo direto, já que cada i-node tem uma
localização fixa no disco. A partir desse i-node, o sistema
localiza o diretório para /usr e pesquisa o componente seguinte,
ast, nele. Quando encontrar a entrada para ast, ele terá o i-node
para o diretório /usr/ast. A partir desse i-node ele pode fazer uma
busca no próprio diretório e localizar mbox. O i-node para esse
arquivo é então lido na memória e mantido ali até o arquivo ser
fechado.
Nomes de caminhos relativos são procurados da
mesma maneira que os absolutos, apenas partindo do diretório de
trabalho em vez de do diretório-raiz. Todo diretório tem entradas
para . e .. que são colocadas ali quando o diretório é criado. A
entrada . Tem o número de i-node para o diretório atual, e a
entrada para .. tem o número de i-node para o diretório pai. Desse
modo, uma rotina procurando ../dick/prog.c apenas procura .. no
diretório de trabalho, encontra o número de i-node do diretório
pai e busca pelo diretório dick. Nenhum mecanismo especial é
necessário para lidar com esses nomes. No que diz respeito ao
sistema de diretórios, eles são apenas cadeias ASCII comuns, como
qualquer outro nome. A única questão a ser observada aqui é que ..
no diretório-raiz aponta para si mesmo.
Sistemas de arquivos para CD-ROM
Como nosso último exemplo de um sistema de
arquivos, vamos considerar aqueles usados nos CD-ROMs. Eles são
particulannente simples, pois foram projetatos para meios de escrita
única. Entre outras coisas, por exemplo, eles não têm provisão
para monitorar blocos livres, pois em um arquivo de CD-ROM arquivos
não podem ser liberados ou adicionados após o disco ter sido
fabricado. Embora os CD-ROMs estejam ultrapassados, eles são também
simples, e os sistemas de arquivos usados em DV Ds e Blu-ray são
baseados nos usados para CD-ROMs.
Alguns anos após o CD-ROM ter feito sua estreia,
foi introduzido o CD-R (CD Recordable - CD gravável). Diferentemente
do CD-ROM, ele permite adicionar arquivos após a primeira gravação,
que são apenas adicionados ao final do CD-R. Arquivos nunca são
removidos (embora o diretório possa ser atualizado para esconder
arquivos existentes). Como consequência desse sistema de arquivos
"somente adicionar", as propriedades fundamentais não são
alteradas. Em particular, todo o espaço livre encontra-se em uma
única parte contígua no fim do CD.
O
sistema de arquivos ISO 9660
O padrão mais comum para sistemas de arquivos de
CD-ROM foi adotado como um Padrão Internacional em 1988 sob o nome
ISO 9660. Virtualmente, todo CD-ROM no mercado é compatível com
esse padrão, às vezes com extensões. Uma meta desse padrão era
tomar todo CD-ROM legível em todos os computadores, independente do
ordenamento de bytes e do sistema operacional usado. Em consequência,
algumas limitações foram aplicadas ao sistema de arquivos para
possibilitar que os sistemas operacionais mais fracos (como MS-DOS)
pudessem lê-los.
Os CD-ROMs não têm cilindros concêntricos como
os discos magnéticos. Em vez disso, há uma única espiral contúrna
contendo os bits em uma sequência linear (embora seja possível
buscar transversalmente às espirais). Os bits ao longo da espiral
são divididos em blocos lógicos (também chamados setores lógicos)
de 2352 bytes. Alguns desses bytes são para preâmbulos, coneção
de erros e outros destinos. A porção líquida (payload) de cada
bloco lógico é 2048 bytes. Quando usados para música, os CDs têm
as posições iniciais, finais e espaços entre as trilhas, mas eles
não são usados para CD-ROMs de dados. Muitas vezes a posição de
um bloco ao longo da espiral é representada em minutos e segundos.
Ela pode ser convertida para um número de bloco linear usando o
fator de conveisão de 1 s = 75 blocos.
O ISO 9660 dá suporte a conjuntos de CD-ROM com
até 216 - 1 CDs no conjunto. Os CD-ROMs individuais também podem
ser divididos em volumes lógicos (partições). No entanto, a
seguir, nos concentraremos no ISO 9660 para um único CD-ROM não
particionado.
Todo CD-ROM começa com 16 blocos cuja função
não é definida pelo padrão ISO 9660. Um fabricante de CD-ROMs
poderia usar essa área para oferecer um programa de inicialização
que permitisse que o computador fosse inicializado pelo CD-ROM, ou
para algum outro propósito nefando. Em seguida vem um bloco contendo
o descritor de volume primário, que contém algumas informações
gerais sobre o CD-ROM. Entre essas informações estão o
identificador do sistema (32 bytes), o identificador do volume (32
bytes), o identificador do editor (128 bytes) e o identificador do
preparador dos dados (128 bytes). O fabricante pode preencher esses
campos da maneira que quiser, exceto que somente letras maiúsculas,
dígitos e um número muito pequeno de caracteres de pontuação
podem ser usados para assegurar a compatibilidade entre as
plataformas.
O descritor do volume primário também contém
os nomes de três arquivos, que podem conter um resumo, uma
notificação de direitos autorais e informações bibliográficas,
respectivamente. Além disso, deteiminados números-chave também
estão presentes, incluindo o tamanho do bloco lógico (normalmente
2048, mas 4096, 8192 e valores maiores de potências de 2 são
permitidos em alguns casos), o número de blocos no CD-ROM e as datas
de criação e expiração do CD-ROM. Por fim, o descritor do volume
primário também contém uma entrada de diretório para o
diretório-raiz, dizendo onde encontrá-lo no CD-ROM (isto é, em
qual bloco ele começa). A partir desse diretório, o resto do
sistema de arquivos pode ser localizado.
Além do descritor de volume primário, um CD-ROM
pode conter um descritor de volume complementar. Ele contém
informações similares ao descritor primário.
O diretório-raiz, e todos os outros diretórios,
quanto a isso, consistem em um número variável de entradas, a
última das quais contém um bit marcando-a como a entrada final. As
entradas de diretório em si também são de tamanhos variáveis.
Cada entrada de diretório consiste em 10 a 12 campos, dos quais
alguns são em ASCII e outros são numéricos binários. Os campos
binários são codificados duas vezes, uma com os bits menos
significativos nos primeiros bytes - little-endian (usados nos
Pentiums, por exemplo) e outra com os bits mais significativos nos
primeiros bytes - big endian (usados nas SPARCs, por exemplo). Desse
modo, um número de 16 bits usa 4 bytes e um número de 32 bits usa 8
bytes.
O uso dessa codificação redundante era
necessário para evitar ferir os sentimentos alheios quando o padrão
foi desenvolvido. Se o padrão tivesse estabelecido little-endian,
então as pessoas de empresas cujos produtos eram big-endian se
sentiriam desvalorizadas e não teriam aceitado o padrão. O conteúdo
emocional de um CD-ROM pode, portanto, ser quantificado e mensurado
exatamente em quilo bytes/hora de espaço desperdiçado.
Como entradas de diretório têm comprimentos
variáveis, o primeiro campo é um byte indicando o tamanho da
entrada. Esse byte é definido com o bit de ordem mais alta à
esquerda para evitar qualquer ambiguidade.
Entradas de diretório podem opcionalmente ter
atributos estendidos. Se essa prioridade for usada, o segundo byte
indicará o tamanho dos atributos estendidos.
Em seguida vem o bloco inicial do próprio
arquivo. Arquivos são armazenados como sequências contíguas de
blocos, assim a localização de um arquivo é completamente
especificada pelo bloco inicial e o tamanho, que está contido no
próximo campo.
A data e o horário em que o CD-ROM foi gravado
estão armazenados no próximo campo, com bytes separados para o ano,
mês, dia, hora, minuto, segundo e zona do fuso horário. Os anos
começam a contar em 1900, o que significa que os CD-ROMs sofrerão
de um problema Y2156, pois o ano seguinte a 2155 será 1900. Esse
problema poderia ter sido postergado com a definição da origem do
tempo em 1988 (o ano que o padrão foi adotado). Se isso tivesse
ocorrido, o problema teria sido postergado até 2244. Cada 88 anos
extras ajuda.
O campo Flags contém alguns bits diversos,
incluindo um para ocultar a entrada nas listagens (um atributo
copiado do MS-DOS), um para distinguir uma entrada que é um arquivo
de uma entrada que é um diretório, um para capacitar o uso dos
atributos estendidos e um para marcar a última entrada em um
diretório. Alguns outros bits também estão presentes nesse campo.
O próximo campo lida com a intercalação de partes de arquivos de
uma maneira que não é usada na versão mais simples do ISO 9660.
O campo a seguir diz em qual CD-ROM o arquivo
está localizado. É permitido que uma entrada de diretório em um
CD-ROM refira-se a um arquivo localizado em outro CD-ROM no conjunto.
Dessa maneira, é possível construir um diretório-mestre no
primeiro CD-ROM que liste todos os arquivos que estejam em todos os
CD-ROMs no conjunto completo.
O campo marcado L mostra o tamanho do nome do
arquivo em bytes. Ele é seguido pelo nome do próprio arquivo. Um
nome de arquivo consiste em um nome base, um ponto, uma extensão, um
ponto e vírgula e um número binário de versão (1 ou 2 bytes). O
nome base e a extensão podem usar letras maiúsculas, os dígitos
0-9 e o caractere sublinhado. Todos os outros caracteres são
proibidos para certificar-se de que todos os computadores possam
lidar com todos os nomes de arquivos. O nome base pode ter até oito
caracteres; a extensão até três caracteres. Essas escolhas foram
ditadas pela necessidade de tomar o padrão compatível com o MS-DOS.
Um nome de arquivo pode estar presente em um diretório múltiplas
vezes, desde que cada um tenha um número de versão diferente.
Os últimos dois campos nem sempre estão
presentes. O campo Preenchimento é usado para forçar que toda
entrada de diretório seja um número par de bytes a fim de alinhar
os campos numéricos de entradas subsequentes em limites de 2 bytes.
Se o preenchimento for necessário, um byte 0 é usado. Por fim,
temos o campo Uso do sistema. Sua função e tamanho são
indefinidos, exceto que ele deve conter um número par de bytes.
Sistemas diferentes o utilizam de maneiras diferentes. O Macintosh,
por exemplo, mantém os flags do Finder nele.
Entradas dentro de um diretório são listadas em
ordem alfabética, exceto para as duas primeiras entradas. A primeira
entrada é para o próprio diretório. A segunda é para o pai. Nesse
sentido, elas são similares para as entradas de diretório . e .. do
UNIX. Os arquivos em si não precisam estar na ordem do diretório.
Não há um limite explícito para o número de
entradas em um diretório. No entanto, há um limite para a
profundidade de aninhamento. A profundidade máxima de aninhamento de
um diretório é oito. Esse limite foi estabelecido arbitrariamente
para simplificar algumas implementações.
O ISO 9660 define o que são chamados de três
níveis. O nível 1 é o mais restritivo e especifica que os nomes de
arquivos sejam limitados a 8 + 3 caracteres, e também exige que
todos os arquivos sejam contíguos. Além disso, ele especifica que
os nomes dos diretórios sejam limitados a oito caracteres sem
extensões. O uso desse nível maximiza as chances de que um CD-ROM
seja lido em todos os computadores.
O nível 2 relaxa a restrição de tamanho. Ele
permite que arquivos e diretórios tenham nomes de até 31
caracteres, mas ainda do mesmo conjunto de caracteres.
O nível 3 usa os mesmos limites de nomes do
nível 2, mas relaxa parcialmente o pressuposto de que os arquivos
tenham de ser contíguos. Com esse nível, um arquivo pode consistir
em várias seções (extensões), cada uma como uma sequência
contígua de blocos. A mesma sequência pode ocorrer múltiplas vezes
em um arquivo e pode ocorrer em dois ou mais arquivos. Se grandes
porções de dados são repetidas em vários arquivos, o nível 3
oferecerá alguma otimização de espaço ao não exigir que os dados
estejam presentes múltiplas vezes.
Extensões
Rock Ridge
O ISO 9660 é altamente restritivo em várias
maneiras. Logo depois do seu lançamento, as pessoas na comunidade
UNIX começaram a trabalhar em uma extensão a fim de tomar possível
representar os sistemas de arquivos UNIX em um CD-ROM. Essas
extensões foram chamadas de Rock Ridge, em homenagem à cidade no
filme de Mel Brooks, Banzé no Oeste (Blazing Saddles), provavehnente
porque um dos membros do comitê gostou do filme.
As extensões usam o campo Uso do sistema para
possibilitar a leitura dos CD-ROMs Rock Ridge em qualquer computador.
Todos os outros campos mantêm seu significado ISO 9660 normal.
Qualquer sistema que não conheça as extensões Rock Ridge apenas as
ignora e vê um CD-ROM normal.
As extensões são divididas nos campos a seguir:
1. PX - atributos POSIX.
2. PN - Números de dispositivo principal e
secundário.
3. SL- Ligação simbólica.
4. NM - Nome alternativo.
5. CL- Localização do filho.
6. PL - Localização do pai.
7. RE - Realocação.
8. TF - Estampas de tempo (Time stamps).
O campo PX contém o padrão UNIX para bits de
permissão rwxrwxrwx para o proprietário, grupo e outros. Ele também
contém os outros bits contidos na palavra de modo, como os bits
SETUID e SETGID, e assim por diante.
Para permitir que dispositivos sejam
representados em um CD-ROM, o campo PN está presente. Ele contém os
números de dispositivos principais e secundários associados com o
arquivo. Dessa maneira, os conteúdos do diretório /dev podem ser
escritos para um CD-ROM e mais tarde reconstruídos corretamente no
sistema de destino.
O campo SL é para ligações simbólicas. Ele
permite que um arquivo em um sistema refira-se a um arquivo em um
sistema diferente.
O campo mais importante é NM. Ele pernite que um
segundo nome seja associado com o arquivo. Esse nome não está
sujeito às restrições de tamanho e conjunto de caracteres do ISO
9660, tornando possível expressar nomes de arquivos UNIX arbitrários
em um CD-ROM.
Os três campos seguintes são usados juntos para
contornar o limite de oito diretórios que podem ser aninhados no ISO
9660. Usando-os é possível especificar que um diretório seja
realocado, e dizer onde ele vai na hierarquia. Trata-se efetivamente
de uma maneira de contornar o limite de profundidade artificial.
Por fim, o campo TF contém as três estampas de
tempo incluídas em cada i-node UNIX, a saber o horário que o
arquivo foi criado, modificado e acessado pela última vez. Juntas,
essas extensões tomam possível copiar um sistema de arquivos UNIX
para um CD-ROM e então restaurá-lo corretamente para um sistema
diferente.
Extensões
Joliet
A comunidade UNIX não foi o único grupo que não
gostou do ISO 9660 e queria uma maneira de estendê-lo. A Microsoft
também o achou restritivo demais (embora tenha sido o próprio
MS-DOS da Microsoft que causou a maior parte das restrições em
primeiro lugar). Portanto, a Microsoft inventou algumas extensões
chamadas Joliet. Elas foram projetadas para permitir que os sistemas
de arquivos Windows fossem copiados para um CD-ROM e então
restaurados, precisamente da mesma maneira que o Rock Ridge foi
projetado para o UNIX. Virtuahnente todos os programas que executam
sob o Windows e usam CD-ROMs aceitam Joliet, incluindo programas que
gravam em CDs regraváveis. Em geral, esses programas oferecem uma
escolha entre os vários níveis de ISO 9660 e Joliet.
As principais extensões oferecidas pelo Joliet
são:
1. Nomes de arquivos longos.
2. Conjunto de caracteres Unicode.
3. Aninhamento de diretórios mais profundo que
oito níveis.
4. Nomes de diretórios com extensões.
A primeira extensão permite nomes de arquivos de
até 64 caracteres. A segunda extensão capacita o uso do conjunto de
caracteres Unicode para os nomes de arquivos. Essa extensão é
importante para que o software possa ser empregado em países que não
usam o alfabeto latino, como Japão, Israel e Grécia. Como os
caracteres Unicode ocupam 2 bytes, o nome de arquivo máximo em
Joliet ocupa 128 bytes.
Assim como no Rock Ridge, a limitação sobre
aninhamentos de diretórios foi removida no Joliet. Os diretórios
podem ser aninhados o mais profundamente quanto necessário. Por fim,
nomes de diretórios podem ter extensões. Não fica claro por que
essa extensão foi incluída, já que os diretórios do Windows
virtulmente nunca usam extensões, mas talvez um dia venham a usar.
ANDREWS. TANENBAUM, HERBERT BOS - SISTEMAS OPERACIONAIS MODERNOS - 4a EDIÇÃO - Capítulo 4
Comentários
Postar um comentário