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: