Eduardo Ferreira dos Santos - Blog de Eduardo Santos · que o arquivo é aberto para permitir a...

Post on 02-Dec-2018

214 views 0 download

Transcript of Eduardo Ferreira dos Santos - Blog de Eduardo Santos · que o arquivo é aberto para permitir a...

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çãoVisão do usuárioVisão do Sistema Operacional

3 Alocação

2 / 44

Introdução

1 Introdução

2 ImplementaçãoVisão do usuárioVisão do Sistema Operacional

3 Alocação

3 / 44

Introdução

De�niçõ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 peloté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 omecanismo do hardware;

Abstração: ao solicitar um arquivo, você não está preocupado onde eleestá armazenado dentro do disco;

Organização dos arquivos no sistema operacional:facilidade/di�culdade de acesso.

6 / 44

Introdução

Gerenciador de arquivos

Quando salvamos o arquivo no disco, estamos executando as seguintestarefas:

1 O programa pede ao sistema operacional para escrever o conteúdo deuma arquivo;

2 O sistema operacional repassa a tarefa para o gerenciador de arquivos(�le manager), que é um subconjunto do SO;

3 O gerenciador de arquivos busca em uma tabela informações sobre oarquivo;

4 O gerenciador de arquivos busca em uma tabela a localização física dosetor que deve conter o byte (cilindro, trilha, setor);

5 O gerenciador de arquivos instrui o processador de I/O (que libera aCPU de cuidar do processo de transferência) sobre a posição do bytena RAM, e onde ele deve ser colocado no disco;

6 O processador de I/O formata o dado apropriadamente, e decide omelhor momento de escrevê-lo no disco.

7 / 44

Implementação

1 Introdução

2 ImplementaçãoVisão do usuárioVisã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 dasinformações;O funcionamento dos discos é irrelevante;Identi�car 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;Con�abilidade e funcionamento.

Ambas as visões precisam ser abordadas pelo Sistema Operacional.

9 / 44

Implementação Visão do usuário

1 Introdução

2 ImplementaçãoVisão do usuárioVisão do Sistema Operacional

3 Alocação

10 / 44

Implementação Visão do usuário

Nomeação

Principal regra de identi�cação para o usuário: nome do arquivo;

O nome pode utilizar letras maiúsculas e minúsculas;Extensão: identi�cação do tipo de arquivo;

Unix/Linux: a extensão do arquivo não importa tanto assim. Saída docomando 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

De�nição: sequência de bits contendo unidades lógicas criadas pelosusuários;As sequências de bits precisam ser decodi�cadas em palavras visíveisao usuário.

Figura 2.1: ASCII e Unicode 1

1http://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 Identi�ca o arquivo e seus componentes. Ex.: tamanhodas partes, endereço inicial de execução, etc.

Texto Pode possuir um conteúdo de texto codi�cado;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 sequencialInformaçõ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 opróximo registro;A escrita é feita adicionando o novo registro ao �nal doarquivo;

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ênciade 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

Implementação Visão do usuário

Exemplos de acesso

Listing 1: Acesso sequencialr e ad nextw r i t e nex tr e s e t

Listing 2: Acesso diretor e ad nw r i t e np o s i t i o n to nr e ad next

5 w r i t e nex tr e w r i t e 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 armazenaro 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 Encontrar espaço su�ciente;2 Identi�car 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 atualdo arquivo;

Abrir Coloca na memória principal os principais atributos e alista 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ãoabertos;Várias estruturas de dados diferentes são necessárias para manter ocontrole:

Tabela de arquivos abertos: controla todos os arquivos que estãoabertos;Ponteiro do arquivo: ponteiro que aponta para a última posição deleitura/escrita, em cada processo, que mantém um arquivo aberto;Contador de arquivos abertos: mantém um contador de todas as vezesque o arquivo é aberto para permitir a remoção da tabela de arquivosabertos quando ele for fechado;Localização do arquivo no discoPermissõ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 detravas (locks) é utilizado para controlar o acesso do sistemaoperacional;

Shared lock Similar à trava de leitura: vários arquivos podem obterao mesmo tempo

Exclusive lock Similar à trava de escrita

Organiza o acesso aos arquivos.

21 / 44

Implementação Visão do usuário

Diretórios

De�nição [Favacho, 2009]: tabela de símbolos que traduz os nomes dearquivos 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 etemporá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 Visão do Sistema Operacional

1 Introdução

2 ImplementaçãoVisão do usuárioVisão do Sistema Operacional

3 Alocação

25 / 44

Implementação Visão do Sistema Operacional

Atributos

Organizamos os arquivos no sistema operacional utilizando umconjunto de atributos:

Nome Única informação legível disponibilizada para os usuários.Identi�cador Número de identi�cação (tag) que identi�ca 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çosló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 acamada de I/O;

O sistema de arquivos recebe o comando de recuperar o arquivo emanda para o dispositivo;

Também realiza a gerência de bu�ers e cache;

Bu�er Dados �em trânsito� para o disco;Cache Dados muito utilizados.

Módulo de organização de arquivos compreende os arquivos e seusendereç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 iniciaro 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 dobloco, 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 noformato 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çãoVisão do usuárioVisão do Sistema Operacional

3 Alocação

32 / 44

Alocação

Alocação contígua

Um método de alocação de�ne como os blocos de dados são alocadosno disco.Método de alocação contígua: cada arquivo ocupa um conjuntocontí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 identi�cada pelo número;Parecida com a lista encadeada, mais e�ciente 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 blocosde 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 detamanho 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 detamanho;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 parao í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 maisuma leitura do bloco;A utilização de clustering pode aumentar o throughput e diminir oconsumo de CPU.

41 / 44

Alocação

IOPS

Adicionar instruções no �uxo de execução que �economizam� umaoperação de disco parece razoável;

Intel Core i7 Extreme Edition 990x (2011) at 3.46Ghz = 159,000MIPS 2

Typical disk drive at 250 I/Os per second; 159,000 MIPS / 250 = 630million instructions during one disk I/O;

Fast SSD drives provide 60,000 IOPS; 159,000 MIPS / 60,000 = 2.65millions instructions during one disk I/O

2Fonte: http://en.wikipedia.org/wiki/Instructions_per_second42 / 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