Mind map
Implementação Do Sistema De Arquivos
Map content
Implementação Do Sistema De Arquivos
Estrutura do Sistema de Arquivos
- Bloco é uma unidade lógica definida pelo Sistema de Arquivos
- Configurável no momento da formatação
- Setor é uma unidade física, definida pelo dispositivo
- Normalmente 512 bytes ou 4 KB
- Fixa, imutável
- Dois problemas de projeto bem diferentes
- Aparência para o usuário
- Definição de arquivos e atributos
- Estrutura de diretórios
- Operações permitidas
- Mapeamento lógico para dispositivos físicos
- Algoritmos e estruturas de dados
- Aparência para o usuário
- Organizada em camadas, composta por diversos níveis
- Usa recursos dos níveis mais baixos para criar recursos a serem usados pelos níveis mais altos
- Sistema de Arquivos Lógico
- Gerenciamento de metadados e mecanismos de proteção
- FCB (File Control Block)
- Módulo de Organização de Arquivos
- Tradução de blocos lógicos para físicos e controle de blocos livres
- Sistema de Arquivos Básico
- Comandos genéricos para drivers e gerenciamento de buffers e caches
- Controle de I/O
- Drivers de dispositivo e interrupções
- Tipos de Sistemas de Arquivos
- Discos Ópticos
- ISO 9660 e o mais moderno UDF (Universal Disk Format)
- UNIX
- UFS (UNIX File System)
- Linux
- ext2, ext3, ext4, XFS, Btrfs, F2FS, JFS, ReiserFS
- Windows
- NTFS (padrão)
- Suporte para FAT/FAT32/extFAT e os usados em discos ópticos
- macOS
- Journaling HFS Plus e o mais moderno APFS (Apple File System)
- Discos Ópticos
- Bloco é uma unidade lógica definida pelo Sistema de Arquivos
Implementação do Sistema de Arquivos
- Visão geral
- Estruturas em disco
- Bloco de Controle de Inicialização
- UFS: Boot Block
- NTFS: Partition Boot Sector
- Contém informações para iniciar o SO
- Bloco de Controle de Volume
- Detalhes da partição (blocos, ponteiros, FCBs)
- UFS: Superbloco
- NTFS: Partition Boot Sector
- Estrutura de Diretório
- Organização de arquivos
- UFS: Nomes de arquivos e inodes
- NTFS: Armazenado na MFT
- FCB (File Control Block)
- Contém metadados dos arquivos
- Bloco de Controle de Inicialização
- Estruturas em memória
- Tabela de montagens, Cache em memória, Tabela de arquivos abertos em todo o sistema, Tabela de arquivos abertos por processo e Buffers
- Criação De Arquivo
- Chama o sistema de arquivos lógico
- Conhece o formato das estruturas de diretório e aloca um novo FCB
- Lê o diretório apropriado pra memória
- Atualiza com o novo nome de arquivo e FCB e escreve de volta no disco
- open()
- Verifica se está aberto
- Se sim: cria ponteiro na tabela de arquivos por processo
- Se não: pesquisa diretório e carrega FCB
- Verifica se está aberto
- close()
- Remove entrada da tabela por processo
- Atualiza metadados no disco
- Estruturas em disco
- Partições e Montagem
- Layout do disco muda dependendo do SO
- Tipos de partição
- Bruta (sem sistema de arquivos)
- Formatada (com sistema de arquivos)
- Uso de discos brutos (swap, bancos de dados, RAID)
- Inicialização do SO
- Carregamento da imagem do SO
- Bootloader para múltiplos sistemas
- Sistemas de Arquivos Virtual (VFS)
- Duas funções importantes
- Separa operações genéricas do sistema de arquivos de sua implementação
- Mecanismo para a representação exclusiva de um arquivo em toda a rede
- vnode para identificação exclusiva de arquivos
- Suporte a NFS (Network File System)
- Duas funções importantes
- Visão geral
Implementação de Diretórios
- Lista linear
- Lista de nomes de arquivos com ponteiro para blocos de dados.
- Vantagens: Simples de programar
- Desvantagens: Busca linear é lenta
- Criar arquivo
- Pesquisar diretório (garante nome único) e adicionar entrada ao final
- Excluir arquivo
- Pesquisar nome e liberar espaço alocado
- Tabela de Dispersão (Hash)
- Lista linear + estrutura hash
- Funcionamento
- Calcula valor a partir do nome do arquivo
- Retorna ponteiro para o nome na lista
- Vantagens: Reduz tempo de busca e facilita inserção e exclusão.
- Desafios: Gerenciamento de colisões (nomes diferentes apontando para o mesmo local)
- Lista linear