Sistemas Operacionais
Aula 18: Sistema de Arquivos -- Implementação
Referências:
Visão Lógica X Implementação
O que é um arquivo ?
Alocação de Espaço em Disco
Gerência de espaço em disco se parece com o que ?
Só que aqui a otimizar o espaço utilizado é mais importante do que otimizar o tempo de acesso.
Três métodos básicos existem:
Alocação Contígua
Same old, same old stuff...
Vantagens:
Desvantagens:
Solução:
Não é muito usado.
Alocação Encadeada
O arquivo passa a ser uma lista encadeada de blocos:
Exemplo: Pick System -- lista duplamente encadeada
Alocação Encadeada
Vantagens:
Desvantagens:
Alocação Encadeada -- FAT
E se a gente guardar a lista encadeada separada ?
Vantagens:
Desvantagens:
Alocação Indexada
E se a lista encadeada for ``compactada'' ?
Diferenças:
Acesso é mais eficiente que FAT ? Direto ou sequencial ?
Alocação Indexada
Problema: Usa-se ao menos um índice inteiro, mesmo que o arquivo use só um bloco.
Qual o tamanho ideal de índice ?
E ai ?
Alocação Indexada
Solução:
- Uma FAT de índices ? IAT ?
Alocação Indexada
Unix inode:
Fragmentação
Fragmentação externa foi resolvida com alocação encadeada e indexada. Mas e fragmentação interna ?
Implementação de Diretórios
Dado um nome de arquivo temos que achar seu ``inode'' (ou equivalente). Problema básico de busca em tabelas:
Gerência de Espaço Livre
Várias opções existem:
- Problema: Tem que ser ``cached'', mas ocupa muito espaço na memória.
- Só que o acesso à lista de blocos livres é sequencial.
Sistema de Arquivos de Linux/Unix
Ponto inicial: um superbloco que contém informações tais como tamanho do bloco, número de blocos, lista de inodes, etc.
- Motivo: tentar manter descrição e dados próximos.
Sistema de Arquivos de Linux/Unix
No Unix, inodes são pré-alocados e espalhados no disco:
No Linux, os grupos de blocos fazem um papel semelhante
Sistema de Arquivos de Linux/Unix
Diretórios no Linux: