Sistema de Arquivos Prof. Alexandre Beletti 1 Introdução Como organizar as informações? Arquivos! E como classificar os arquivos? Extensões! 2 1
Extensões de Arquivos 3 Estruturas de Arquivos Sequência de bytes Sequência de registros Árvore 4 2
Estruturas de Arquivos (continua...) 5 Sequência de Bytes O SO só reconhece bytes, não sabe o que realmente está dentro do arquivo Abordagem utilizada pelo Unix, DOS, Win 9x O SO não ajuda a organizar mas também não atrapalha em nada Os aplicativos cuidam dos detalhes de lidar com cada tipo de arquivo 6 3
Sequência de Registros Cada arquivo é um sequência de registros de comprimento fixo Exemplo de uso: CP/M Tem a origem nos cartões perfurados (registros de 80 caracteres) Não é mais utilizada nos computadores modernos 7 Árvore Árvore de Registros Os registros podem ter comprimento variável Cada um possui um campo-chave A árvore é classificada pelo campo-chave Para o exemplo seguinte, obter o registro cuja chave é potro, não sabemos a posição exata do arquivo Esse sistema é utilizado em alguns Mainframes 8 4
Tipos de Arquivos Arquivos comuns Arquivos de texto, binários, etc. Diretórios Criar uma estrutura para o sistema de arquivos Arquivos especiais de caractere Relacionados a E/S, utilizados para modelar terminais, impressoras e redes Arquivos especiais de bloco Utilizados para modelar discos 9 Arquivos ASCII Arquivos Comuns Texto comum interpretado por programas como o vi, mined, mcedit Arquivos Binários Sequência de bytes incompreensíveis (exceto se você conhece Opcodes e Assembly) 10 5
Binário Antigo do Unix 11 Binários Objetos não Linkados 12 6
Acesso a Arquivos Acesso Sequencial: SOsantigos, em sistemas com fitas magnéticas Uso comum em Mainframes (Cobol) Acesso Aleatório: origem nos discos flexíveis e magnéticos Essencial para sistemas de banco de dados (considere a pesquisa de um voo) Podem existir sistemas híbridos (Mainframes que ainda existem) 13 Atributos de Arquivos São campos específicos de cada arquivo Alguns mais comuns são: Permissões (read, write e execute) Proprietário Grupo Tamanho Data de Modificação CONTINUA 14 7
15 Operações com Arquivos 1/3 CREATE: criar um arquivo (Ex: touch file.txt) Chamada de sistema que cria o arquivo sem dados, configurando alguns atributos DELETE: apagar um arquvo (Ex: rm file.txt) Existe um chamada de sistema para isso OPEN: abrir um arquivo (Ex: vi file.txt) Transfere os atributos e a lista de endereços do disco para a RAM (otimizar o acesso) 16 8
Operações com Arquivos 2/3 CLOSE: fechar um arquivo Envolve a chamada de sistema para fechar um arquivo, liberando memória e atualizando o disco READ: ler bytes de um arquivo Quantos dados serão lidos e onde serão colocados na RAM WRITE: gravar bytes de um arquivo Atualizar blocos do disco com a RAM RENAME Syscall para atualizar o nome do arquivo 17 Operações com Arquivos 1/3 APPEND Forma restrita de WRITE (grava no final) SEEK No acesso aleatório, move o ponteiro no arquivo GET ATTRIBUTES Obter os atributos (Ex: user, group, others) SET ATTRIBUTES Configurar os atributos (Ex: user, group, others) 18 9
Diretórios Opção (a): cada entrada contém o nome do arquivo, os atributos, endereços de disco onde os dados serão armazenados Opção (b): cada entrada armazena o nome do arquivo, e um ponteiro para outra estrutura de dados onde os atributos e os endereços de disco estão localizados CONTINUA 19 Diretórios 20 10
Diretórios Sistema Hierarquico Único diretório compartilhado por todos os usuários (Figura a ) Um diretório por usuário (Figura b ) Árvore arbitrária por usuários (Figura c ) 21 Projeto de Hierquia 22 11
Caminho absoluto: Nomes de Caminho Unix: /home/beletti DOS/WIN: \WINDOWS\SYSTEM32 MULTICS: >usr>bin Caminho relativo Unix: cd beletti(entrar no diretório beletti partindo do diretório atual, também chamado de diretório de trabalho) 23 Diretório Atual (.) e Pai (..) 24 12
Operações com Diretórios 1/3 CREATE: está vazio, exceto por. e.. Utiliza uma chamada de sistema (mkdir) DELETE: excluir um diretório vazio Os diretórios. e.. não são considerados OPENDIR Para um diretório ter seu conteúdo lido, ele precisa ser aberto na RAM 25 Operações com Diretórios 2/3 CLOSEDIR Após ser lido, deve ser fechado para liberar espaço na tabela da RAM READDIR Essa syscallretorna a próxima entrada em um diretório aberto RENAME São renomeados tal qual os arquivos 26 13
Operações com Diretórios 3/3 LINK Permite que um arquivo apareça em mais de um diretório através dessa syscall UNLINK Remove o link criado anteriormente É muito comum fazer uso disso no Unix 27 Implementação -Arquivos Alocação Contígua Alocação por Lista Encadeada Alocação por Lista Encadeada Utilizando um Índice Nós-I 28 14
Alocação Contígua Alocação por blocos contíguos de dados Um arquivo de 50K em um sistema de blocos de 1K ocuparia 50 blocos consecutivos Fácil de localizar o arquivo Excelente desempenho Desvantagens: só é praticável se soubermos o tamanho do arquivo e ele se manter; o disco ficará fragmentado quando excluir arquivos 29 Alocação por Lista Encadeada A primeira palavra de cada bloco funciona como um ponteiro para o próximo bloco Nenhum espaço é desperdiçado (exceto por fragmentação interna no último bloco) A entrada do diretório teria o endereço somente do primeiro bloco A leitura sequencial é RÁPIDA A leitura aleatória é LENTA (desvantagem 1) O ponteiro não é uma potência de 2 (desv. 2) 30 15
Alocação por Lista Encadeada 31 Lista Encadeada com Índice Elimina as desvantagens do modelo sem índice Pega os índices dos blocos (ponteiro) e colocaos em uma tabela na RAM Exemplo (próximo slide): Arquivo A: blocos 4, 7, 2, 10 e 12 Arquivo B: blocos 6, 2, 11 e 14 Acesso aleatório é rápido A tabela precisa estar toda na RAM 32 16
Lista Encadeada com Índice 33 Tabela (FAT) na RAM Um disco de 500Mb Blocos de 1K A tabela terá 500.000 entradas Cada entrada com 3 bytes (4 byte p/ acelerar) Terá de 1,5Mb a 2Mb Utilizado pelos DOS, Win3.x, Win9x 34 17
Nós-I Monitora quais blocos pertencem a quais arquivos Associa com cada arquivo um pequena tabela (chamada de Nó-i ou nó índice ) O Nó-i é carregado na RAM Para arquivos pequenos todas as informações (blocos e atributos) estão no próprio nó-i 35 Nós-I Para arquivos maiores temos o bloco indireto simples contendo endereços adicionais Se não for suficiente, temos o bloco indireto duplo que contém o endereço de um bloco, que por sua vez contém uma lista de blocos indiretos simples Se isso não for suficiente temos o bloco indireto triplo 36 18
Nó-i 37 CP/M MS-DOS Unix Implementação - Diretórios 38 19
CP/M Existe somente um diretório O sistema de arquivos para procurar um nome de arquivo procura exclusivamente dentro desse diretório Quando localiza a entrada ele também tem o número do blocos de disco 39 CP/M 40 20
MS-DOS 32 bytes de comprimento Nome do arquivo Os atributos Endereço do primeiro bloco de disco O número do primeiro bloco é como um índice 41 MS-DOS 42 21
UNIX Cada entrada contém apenas um nome de arquivo e o número de seu nó-i As informações sobre o tipo, tamanho, tempos, proprietário e blocos de disco estão contidas no nó-i 43 UNIX 44 22
Monitorando Blocos Livres Existem basicamente duas técnicas para mapear os blocos livres: Lista Encadeada (Figura a ) Mapa de bits (Figura b ) 45 Monitorando Blocos Livres 46 23
Bibliografia TANENBAUM, A.S., WOODHULL, A.S., Sistemas Operacionais Projeto e Implementação (Edição 2). 47 24