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