sistemas de arquivos - higuita.com.br · 20/11/2014 5 tipos de arquivos • arquivos comuns –...
TRANSCRIPT
20/11/2014
1
Sistema de Arquivos
Prof. Alexandre Beletti
1
Introdução
• Como organizar as informações?
• Arquivos!
• E como classificar os arquivos?
• Extensões!
2
20/11/2014
2
Extensões de Arquivos
3
Estruturas de Arquivos
• Sequência de bytes
• Sequência de registros
• Árvore
4
20/11/2014
3
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
20/11/2014
4
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
20/11/2014
5
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 discos9
Arquivos Comuns
• Arquivos ASCII
– 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
20/11/2014
7
Acesso a Arquivos
• Acesso Sequencial: SOs antigos, 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
20/11/2014
8
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
20/11/2014
9
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
20/11/2014
10
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
20/11/2014
11
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
20/11/2014
12
Nomes de Caminho
• Caminho absoluto:
– 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
20/11/2014
13
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 syscall retorna a próxima entrada em um diretório aberto
• RENAME
– São renomeados tal qual os arquivos
26
20/11/2014
14
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
20/11/2014
15
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
20/11/2014
16
Alocação por Lista Encadeada
31
Lista Encadeada com Índice
• Elimina as desvantagens do modelo sem índice
• Pega os índices dos blocos (ponteiro) e coloca-os 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 RAM32
20/11/2014
17
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, Win 3.x, Win 9x
34
20/11/2014
18
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
20/11/2014
20
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/11/2014
21
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
20/11/2014
22
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
20/11/2014
23
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