Implementação de sistema de arquivos

Propaganda
Implementação de sistema de arquivos
Eduardo Ferreira dos Santos
Ciência da Computação
Centro Universitário de Brasília UniCEUB
Maio, 2016
1 / 44
Sumário
1
Introdução
2
Implementação
Visão do usuário
Visão do Sistema Operacional
3
Alocação
2 / 44
Introdução
1
Introdução
2
Implementação
Visão do usuário
Visão do Sistema Operacional
3
Alocação
3 / 44
Introdução
Denições
Arquivos Unidades lógicas de informação criadas por processos. (...)
Também são uma espécie de espaço de endereçamento.
[Tanenbaum and Machado Filho, 1995]
Memória secundária Espaço de endereçamento em arquivos.
Sistemas de arquivos Unidade do sistema operacional que trata de:
Estruturar;
Nomear;
Acessar;
Proteger;
Implementar os arquivos.
Persistência O armazenamento dos arquivos não pode ser afetado pelo
término do processo.
4 / 44
Introdução
Mecanismo do disco
Figura 1.1: Movimento da cabeça do disco [Galvin et al., 2013]
5 / 44
Introdução
Gerência de arquivos
O sistema operacional é responsável por fazer a gerência de arquivos;
Para conseguir realizar suas tarefas é necessário interagir com o
mecanismo do hardware;
Abstração: ao solicitar um arquivo, você não está preocupado onde ele
está armazenado dentro do disco;
Organização dos arquivos no sistema operacional:
facilidade/diculdade de acesso.
6 / 44
Introdução
Gerenciador de arquivos
Quando salvamos o arquivo no disco, estamos executando as seguintes
tarefas:
1
2
3
4
5
6
O programa pede ao sistema operacional para escrever o conteúdo de
uma arquivo;
O sistema operacional repassa a tarefa para o gerenciador de arquivos
(le manager), que é um subconjunto do SO;
O gerenciador de arquivos busca em uma tabela informações sobre o
arquivo;
O gerenciador de arquivos busca em uma tabela a localização física do
setor que deve conter o byte (cilindro, trilha, setor);
O gerenciador de arquivos instrui o processador de I/O (que libera a
CPU de cuidar do processo de transferência) sobre a posição do byte
na RAM, e onde ele deve ser colocado no disco;
O processador de I/O formata o dado apropriadamente, e decide o
melhor momento de escrevê-lo no disco.
7 / 44
Implementação
1
Introdução
2
Implementação
Visão do usuário
Visão do Sistema Operacional
3
Alocação
8 / 44
Implementação
Visões
O arquivo pode possuir diferentes visões
[Tanenbaum and Machado Filho, 1995]:
Visão do usuário:
Não há preocupação com o método de armazenamento das
informações;
O funcionamento dos discos é irrelevante;
Identicar o arquivo é fundamental. Ex.: nome do arquivo.
Perenidade do arquivo.
Visão do sistema operacional:
Organização e armazenamento do arquivo e suas estruturas. Ex.:
diretórios e marcadores;
Gerenciamento do espaço em disco;
Conabilidade e funcionamento.
Ambas as visões precisam ser abordadas pelo Sistema Operacional.
9 / 44
Implementação
1
Introdução
2
Implementação
Visão do usuário
Visão do usuário
Visão do Sistema Operacional
3
Alocação
10 / 44
Implementação
Visão do usuário
Nomeação
Principal regra de identicação para o usuário: nome do arquivo;
O nome pode utilizar letras maiúsculas e minúsculas;
Extensão: identicação do tipo de arquivo;
Unix/Linux: a extensão do arquivo não importa tanto assim. Saída do
comando file;
Windows: extensão mapeia o tipo do arquivo.
O mapeamento de tipo associa o arquivo a um programa;
O nome do arquivo é uma estrutura lógica.
11 / 44
Implementação
Visão do usuário
Arquivos regulares
Denição: sequência de bits contendo unidades lógicas criadas pelos
usuários;
As sequências de bits precisam ser decodicadas em palavras visíveis
ao usuário.
Figura 2.1: ASCII e Unicode
1
1
http://paginaspersonales.deusto.es/abaitua/konzeptu/unicode/uc20ch1.html
12 / 44
Implementação
Visão do usuário
Arquivos binários
A estrutura dos bits faz referência ao programa que as utiliza;
Importância do conceito de extensão;
Um arquivo binário executável do Unix possui cinco partes
[Favacho, 2009]:
Cabeçalho Identica o arquivo e seus componentes. Ex.: tamanho
das partes, endereço inicial de execução, etc.
Texto Pode possuir um conteúdo de texto codicado;
Dados Dados do programa relacionado ao sistema operacional;
Bits de relocação Carregamento e relocação de texto nos dados;
Tabela de símbolos Sequência de bits que só faz sentido para o
programa que a executa;
13 / 44
Implementação
Visão do usuário
Métodos de acesso
Sequencial Acesso sequencial
Informações são processadas em ordem;
Método mais utilizado. Ex.: compiladores e editores.
Operações de leitura e escrita;
A leitura é feita avançando o ponteiro de arquivo para o
próximo registro;
A escrita é feita adicionando o novo registro ao nal do
arquivo;
Figura 2.2: Acesso sequencial [Galvin et al., 2013]
14 / 44
Implementação
Visão do usuário
Direto Acesso direto
Modelo de discos: o arquivo é visto como uma sequência
de blocos ou registros;
Não há uma ordem pré-determinada para a leitura;
Todo arquivo pode ser acessado a partir do endereço.
Indexado Tabela de índices de arquivo.
15 / 44
5
Implementação
Visão do usuário
Exemplos de acesso
Listing 1: Acesso sequencial
read next
write next
reset
Listing 2: Acesso direto
read n
write n
p o s i t i o n to n
read next
write next
rewrite n
n = número relativo do bloco
Acesso direto: o arquivo tem registros lógicos de tamanho xo.
O número relativo do bloco (n) permite ao SO decidir onde armazenar
o arquivo.
16 / 44
Implementação
Visão do usuário
Métodos de acesso
Figura 2.3: Métodos de acesso [Galvin et al., 2013]
17 / 44
Implementação
Visão do usuário
Acesso pelo índice
Figura 2.4: Acesso através do índice [Galvin et al., 2013]
18 / 44
Implementação
Visão do usuário
Operações
Algumas operações básicas para serem realizadas nos arquivos:
Criação Dois procedimentos:
1
2
Encontrar espaço suciente;
Identicar o diretório onde será armazenado.
Escrita na posição do ponteiro de escrita;
Leitura na posição do ponteiro de leitura;
Pesquisa Reposicionamento do ponteiro de seek na posição atual
do arquivo;
Abrir Coloca na memória principal os principais atributos e a
lista de endereços;
Fechar Libera o espaço de memória alocado.
19 / 44
Implementação
Visão do usuário
Arquivos abertos
É muito importante manter a gestão sobre todos os arquivos que estão
abertos;
Várias estruturas de dados diferentes são necessárias para manter o
controle:
Tabela de arquivos abertos: controla todos os arquivos que estão
abertos;
Ponteiro do arquivo: ponteiro que aponta para a última posição de
leitura/escrita, em cada processo, que mantém um arquivo aberto;
Contador de arquivos abertos: mantém um contador de todas as vezes
que o arquivo é aberto para permitir a remoção da tabela de arquivos
abertos quando ele for fechado;
Localização do arquivo no disco
Permissões de acesso: informação armazenada por processo.
20 / 44
Implementação
Visão do usuário
Sistema de travas
Em alguns sistemas operacionais e sistemas de arquivos um sistema de
travas (
locks) é utilizado para controlar o acesso do sistema
operacional;
Shared lock Similar à trava de leitura: vários arquivos podem obter
ao mesmo tempo
Exclusive lock Similar à trava de escrita
Organiza o acesso aos arquivos.
21 / 44
Implementação
Visão do usuário
Diretórios
Denição [Favacho, 2009]: tabela de símbolos que traduz os nomes de
arquivos a seus agrupamentos (diretórios);
Arquivos que mantém a estrutura do sistema de arquivos;
Entradas associadas aos arquivos;
Ferramenta para organização dos arquivos;
Partições: suportam estrutura de arquivos e diretórios;
22 / 44
Implementação
Visão do usuário
Particionamento
Figura 2.5: Particionamento e sistema de arquivos [Galvin et al., 2013]
23 / 44
Implementação
Visão do usuário
Sistemas de arquivos
Os sistemas de arquivos que vemos normalmente são de uso geral;
Alguns sistemas de arquivos são de propósito geral e especial;
Exemplos (Solaris):
tmpfs Sistemas de arquivos volátil para acesso rápido e
temporário;
objfs Símbolos do kernel;
ctfs Gerenciamento de
daemons;
lofs Interface de loopback;
procfs Parâmetros do kernel;
ufs, zfs Sistemas de arquivos de uso geral.
24 / 44
Implementação
1
Introdução
2
Implementação
Visão do Sistema Operacional
Visão do usuário
Visão do Sistema Operacional
3
Alocação
25 / 44
Implementação
Visão do Sistema Operacional
Atributos
Organizamos os arquivos no sistema operacional utilizando um
conjunto de atributos:
Nome Única informação legível disponibilizada para os usuários.
Identicador Número de identicação (
tag) que identica o arquivo
no sistema de arquivos;
Tipo Diferentes tipos de arquivo para diferentes nalizados.
Ex.: música, vídeo, etc.
Localização Ponteiro para o endereço do arquivo no dispositivo;
Tamanho Tamanho ocupado;
Proteção Controle de permissão e outros controles mais apurados.
Ex.: SELinux;
26 / 44
Implementação
Visão do Sistema Operacional
Estrutura do sistema de arquivos
Estrutura dos arquivos:
Unidade de armazenamento lógico;
Coleção de informações relacionadas.
O sistema de arquivos está na memória secundária (discos);
A interface com o usuário realiza o mapeamento entre os endereços
lógicos e físicos;
Meio de armazenar e recuperar a informação.
Os sistemas de arquivos são organizados em camadas.
27 / 44
Implementação
Visão do Sistema Operacional
Camadas
Figura 2.6: Camadas do sistema de arquivos [Galvin et al., 2013]
28 / 44
Implementação
Visão do Sistema Operacional
Organização em camadas
A controladora do disco coordena as ações entre o os dispositivos e a
camada de I/O;
O sistema de arquivos recebe o comando de recuperar o arquivo e
manda para o dispositivo;
Também realiza a gerência de
buers e cache;
Buer Dados em trânsito para o disco;
Cache Dados muito utilizados.
Módulo de organização de arquivos compreende os arquivos e seus
endereços lógicos e físicos;
o sistema de arquivos lógico controla os metadados;
29 / 44
Implementação
Visão do Sistema Operacional
Implementação
Como são implementadas as chamadas de sistema (SYSCALL)?
Bloco de controle de inicialização Informações necessárias para iniciar
o sistema operacional a partir daquele volume;
Bloco de controle de volumes Contém os detalhes do volume:
Número total de blocos, número de livres, tamanho do
bloco, etc;
Estrutura de diretórios organiza os arquivos (inodes)
Bloco de controle do arquivo (FCB) Presente em cada arquivo,
contém os detalhes sobre o arquivo
EXT3, EXT4 armazenam número do inode, permissões,
etc;
NTFS armazena os dados em uma tabela de arquivos no
formato relacional.
30 / 44
Implementação
Visão do Sistema Operacional
Estruturas na memória
Figura 2.7: Abrir (a) e ler (b) um arquivo [Galvin et al., 2013]
31 / 44
Alocação
1
Introdução
2
Implementação
Visão do usuário
Visão do Sistema Operacional
3
Alocação
32 / 44
Alocação
Alocação contígua
Um método de alocação dene como os blocos de dados são alocados
no disco.
Método de alocação contígua: cada arquivo ocupa um conjunto
contíguo de blocos.
Figura 3.1: Mapeamento lógico para físico [Galvin et al., 2013]
33 / 44
Alocação
Listas encadeadas
Cada arquivo é um conjunto de blocos;
O arquivo acaba no ponteiro nulo;
Mesmo algoritmo utilizado em gerência de memória.
Figura 3.2: Exemplo de lista encadeada [Favacho, 2009]
34 / 44
Alocação
FAT File allocation table
Há uma tabela no começo do volume identicada pelo número;
Parecida com a lista encadeada, mais eciente no disco.
Figura 3.3: Exemplo de implementação do FAT [Galvin et al., 2013]
35 / 44
Alocação
Índices (inodes)
Cada arquivo tem um ponteiro de índice que aponta para seus blocos
de dados.
Figura 3.4: Exemplo de alocação em inodes [Hirata, 2002]
36 / 44
Alocação
Mapeamento por índices
Mapeamento de endereço lógico para o endereço físico num arquivo de
tamanho 256k bytes e tamanho do bloco 512 bytes;
Necessário apenas um bloco para o índice.
Figura 3.5: Exemplo de mapeamento [Galvin et al., 2013]
37 / 44
Alocação
Mapeamento por índices II
Mapeia endereço lógico para físico em um arquivo sem limite de
tamanho;
Esquema encadeado: conectar os blocos da tabela de índice.
Figura 3.6: Exemplo de mapeamento II [Galvin et al., 2013]
38 / 44
Alocação
Mapeamento por índices III
Dois níveis de índice;
Blocos de 4k poderiam armazenar 1024 ponteiros de quatro bytes para
o índice externo;
1.048.567 blocos de dados e arquivos de até 4GB.
Figura 3.7: Exemplo de mapeamento III [Galvin et al., 2013]
39 / 44
Alocação
Mapeamento por índices IV
Figura 3.8: Exemplo de alocação em inodes [Hirata, 2002]
40 / 44
Alocação
Performance
O melhor método depende do tipo de acesso ao arquivo;
O método contíguo é ótima para acesso sequencial e aleatório;
Listas encadeadas são ótimas para acesso sequencial;
Declara o tipo de acesso na criação;
A utilização de índices é mais complexa:
Um único acesso ao bloco pode precisar de duas leituras de índice mais
uma leitura do bloco;
A utilização de clustering pode aumentar o throughput e diminir o
consumo de CPU.
41 / 44
Alocação
IOPS
Adicionar instruções no uxo de execução que economizam uma
operação de disco parece razoável;
Intel Core i7 Extreme Edition 990x (2011) at 3.46Ghz = 159,000
MIPS
2
Typical disk drive at 250 I/Os per second; 159,000 MIPS / 250 = 630
million instructions during one disk I/O;
Fast SSD drives provide 60,000 IOPS; 159,000 MIPS / 60,000 = 2.65
millions instructions during one disk I/O
2
Fonte: http://en.wikipedia.org/wiki/Instructions_per_second
42 / 44
Alocação
OBRIGADO!!!
PERGUNTAS???
43 / 44
Alocação
Favacho, A. (2009).
Notas de aula da Profa. Aletéia Favacho.
Galvin, P. B., Gagne, G., and Silberschatz, A. (2013).
Operating system concepts.
John Wiley & Sons, Inc.
Hirata, R. (2002).
Otimizando servidores web de alta demanda.
Master's thesis, UNICAMP.
Tanenbaum, A. S. and Machado Filho, N. (1995).
Sistemas operacionais modernos, volume 3.
Prentice-Hall.
44 / 44
Download