Sistemas operacionais Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação Sistema de arquivos * Baseado no material da Profa. Maria Clicia Stelling de Castro - UERJ Introdução O sistema de arquivos é a parte mais visivel do SO Cria um recurso lógico a partir de recursos fisicos através de uma interface coerente, simples e fácil de usar Mecanismos de armazenamento de dados e acesso a programas Duas partes básicas Arquivos Armazenamento de dados e programas Diretórios Organização e informações de arquivos Objetivos do sistema de arquivos Fornecer mecanismos para o usuário manipular arquivos e diretórios Garantir a validade e coerencia dos dados Minimizar ou eliminar o risco de perda / alteração das informações Otimizar o acesso Fornecer suporte a outros sistemas de arquivos Suporte a varios usuarios (multiprogramação) Uso compartilhado (proteção e acesso concorrente) Requisitos minimos: ponto de vista do usuario Cada usuário deve ser capaz de: Criar, apagar, ler e alterar arquivos Controlar as permissões de acesso a seus arquivos Nomear arquivos de forma simbólica Estruturar os arquivos de forma a adequa-los a suas necessidades especificas Criação de diretórios e subdiretórios Realizar backups e restarurar em caso de perdas Requisitos minimos: ponto de vista do sistema O SO deve ser capaz de : Descrever a localização de todos os arquivos e seus atributos Via diretório Gerenciar espaço físico de disco Alocar blocos Liberar blocos de arquivos removidos Mecanismos para localizar eficientemente blocos (setores) que compoem arquivos Conceitos básicos Arquivo: um conjunto de informações, identificado por um nome Sistema de arquivos: a parte do sistema operacional que gerencia o armazenamento de arquivos e provê facilidades de acesso a arquivos Diretório: tabela de símbolos que permite identificar informações sobre os arquivos Partição: Abstração que permite a partir do disco físico criar discos lógicos Conceito de Arquivo Um arquivo é um espaço de endereçamento lógico e contíguo. Tipos: Dados númerico caracter Binário Programa Estrutura do Arquivo Nenhuma - seqüência de palavras ou bytes. Estrutura de Registros Simples Linhas Tamanho Fixo Tamanho Variável Estruturas Complexas Formatado por Documento Quem decide o formato do arquivo é o criador do mesmo Atributos do Arquivo Nome Tipo Localização Tamanho Proteção Data, hora e identificador de usuário Informações sobre os arquivos são mantidas em estruturas de diretórios, as quais são mantidas em um disco. Operações em Arquivo Criação Escrita Leitura Reposicionamento de ponteiro dentro do arquivo Remoção Abertura Fechamento Armazenamento Meios físicos de armazenamento comuns: fitas magnéticas e discos Organização de disco: superfícies, trilhas e setores Armazenamento Gerenciamento de Espaço em Disco O sistema de arquivos deve ser capaz de: controlar a área de espaço livre nos discos: SO possui uma lista de espaços livres utilizar métodos de acesso às informações: modo seqüencial ou direto utilizar métodos de alocação que sejam convenientes e eficientes: métodos contíguo, encadeado ou indexado Lista de Espaços Livres Registra o endereço de todos os blocos que estão livres no disco mapa de bits: sistema de arquivos mantém um vetor de bits, com um bit para cada bloco de disco Exemplo: 00111011 os blocos 0, 1 e 5 estão livres mapa de bits permite controle mais compacto dos blocos de disco livres Lista de Espaços Livres lista encadeada: sistema de arquivos mantém uma lista encadeada de blocos, a lista possui o ponteiro do primeiro bloco e cada bloco contém um ponteiro para o próximo bloco livre o ponteiro dos n blocos livres são armazenados no primeiro bloco. Se necessário, última posição do bloco é o ponteiro para outro bloco contendo ponteiros para outros n blocos livres número n de blocos livres contíguos Métodos de Acesso Seqüencial: blocos acessados em ordem Direto: o arquivo é visto como uma seqüência numerada de blocos bloco tamanho fixo, definido pelo SO pode ser lido ou escrito aleatoriamente Organização de arquivos Problema: Como armazenar diversos arquivos dentro de um único vetor de blocos lógicos ? Cada arquivo também deve ser visto como uma seqüência de blocos lógicos. Restrições: flexibilidade de alocação rapidez de acesso (seqüencial e aleatório) eficiência no uso do espaço real em disco Organização de arquivos readme.txt prova.doc aula.pdf Arquivos 0 1 2 0 1 2 3 4 5 6 7 0 1 2 3 4 ? 0 1 2 3 4 5 6 7 Vetor de blocos lógicos Dispositivo físico Técnicas de alocação Formas de mapear os blocos dos arquivos em posições no vetor de blocos lógicos Alocação contígua de arquivos Alocação em listas encadeadas listas diretas ou listas indexadas Alocação indexada Alocação contígua de arquivos Cada arquivo ocupa um conjunto de blocos lógicos consecutivos. Não há blocos vazios entre os blocos de um mesmo arquivo. Para cada arquivo, o diretório informa seu bloco de início e o no de blocos. Alocação contígua arquivo inicio #blocos readme.txt 010 003 prova.doc 002 008 Aula.pdf 017 005 0 1 2 3 4 5 6 7 Alocação contígua Alocação contígua Vantagens: Simplicidade de implementação. Rapidez de acesso aos arquivos: todos os blocos do arquivo estão próximos. Facilidade de acesso seqüencial e aleatório: sequencial: basta ler os blocos consecutivos aleatório: posições internas podem ser facilmente calculadas a partir da posição do bloco inicial. Alocação contígua Desvantagens: Pouca flexibilidade no crescimento dos arquivos. Tamanho máximo do arquivo deve ser conhecido no momento da alocação. Ocorrência de fragmentação externa. Necessidade de desfragmentação periódica. Fragmentação externa Espaços vazios entre blocos de arquivos. À medida que o sistema evolui: arquivos são criados e removidos mais espaços vazios aparecem. os espaços vazios ficam menores. Alocar novos arquivos torna-se difícil ! Evolução da fragmentação aloca aloca remove remove t aloca remove aloca Agora, como alocar um arquivo com 4 blocos ? Desfragmentação Mover arquivos para reagrupar os fragmentos em espaços maiores Visa permitir alocar arquivos maiores Deve ser feita periodicamente Uso de algoritmos para minimizar movimentação de arquivos (rapidez) Estratégias de desfragmentação Situação inicial Moveu 6 blocos Moveu 4 blocos Moveu 2 blocos Estratégias de alocação First-fit: usar o primeiro espaço livre maior rapidez de alocação pouca preocupação com fragmentos Best-fit: usar o menor espaço livre usar o melhor possível os espaços em disco fragmentos residuais são pequenos Worst-fit: usar o maior espaço livre fragmentos residuais são maiores (mais úteis) Alocando um arquivo c/ 2 blocos Situação inicial First-fit Best-fit Worst-fit Alocação encadeada Os arquivos são armazenados como listas de blocos cada bloco aponta para o próximo diretório aponta para o bloco inicial os blocos podem estar espalhados Base de funcionamento da FAT sistema de arquivos Windows Alocação encadeada arquivo inicio #blocos readme.txt 010 003 prova.doc 002 008 Aula.pdf 017 005 Alocação encadeada Alocação encadeada Vantagens não há fragmentação externa todo o disco pode ser usado tamanho dos arquivos pode ser mudado facilmente Desvantagens acesso aleatório é mais demorado maior fragilidade em caso de problemas Alocação indexada Baseada em tabelas de blocos um bloco especial guarda a tabela de blocos do arquivo: index-node (inode) diretório aponta para os i-nodes blocos podem estar espalhados Base de funcionamento do UNIX Alocação indexada • Os INODES contêm informações a respeito de arquivos e diretórios no sistema de arquivos. • A única coisa que inode não contém é o nome do arquivo. • O INODE contém informações sobre as permissões do arquivo, contagem de links, blocos duplicados, blocos ruins, associações de tamanho, e ponteiros para os blocos de dados. • O INODE possui também apontadores para os blocos de dados dos arquivos. • EX:Solaris , cada INODE possui 16 destes apontadores. Os apontadores de 0 a 11 apontam para os 12 primeiros blocos de dados do arquivo (blocos diretos). Os apontadores 12 e 13 apontam para blocos indiretos Alocação indexada arquivo inicio #blocos readme.txt 010 003 prova.doc 002 008 Aula.pdf 017 005 I-node Alocação Indexada Alocação indexada Vantagens não há fragmentação externa todo o disco pode ser usado acesso rápido robustez em caso de problemas Desvantagens gerência mais complexa espaço em disco perdido com os i-nodes Fragmentação interna Arquivos são alocados em blocos: Os blocos têm tamanho fixo. Entre 512 bytes e 8 Kbytes. Um bloco não pode ser alocado parcialmente. Se usarmos blocos de 4096 bytes: um arquivo de 5700 bytes ocupará 2 blocos. 2492 bytes serão perdidos no último bloco. Em média, perde-se 1/2 bloco por arquivo. Tamanho dos blocos A escolha do tamanho dos blocos é importante para a eficiência do sistema. Blocos pequenos: menor perda por fragmentação interna mais blocos por arquivo: maior custo de gerência Blocos grandes: maior perda por fragmentação interna menos blocos por arquivo: menor custo de gerência Sistema de Diretórios Acesso à arquivos a partir do nome Mapeamento: nome do arquivo x blocos diretório Diretório arquivo especial, armazena registros de tamanho fixo = entradas de diretório informações relacionadas ao dispositivo físico: nome, localização, tamanho, modo de alocação à organização lógica: nome, tipo do arquivo, proprietário, código de proteção Outras informações: posição corrente, proteção, contabilidade de uso, tempo, data, identificação do processo Sistema de Diretórios Operações realizadas num diretório busca, criação, remoção, listar conteúdo, cópias para backup Estruturas de diretório organizam os arquivos presentes no sistema Diretório de um Único Nível diretório arquivos Diretórios de Dois Níveis Cada usuário tem seu próprio diretório de arquivo de usuário (UFD) Cada diretório de usuário tem uma estrutura similar Diretório de arquivo mestre (MFD) Isola usuários Problema: compartilhamento de arquivos, se for permitido path name MFD UFD user 1 a cat bo user 2 a cat y user 3 a x Diretório Estruturado em Árvore Possui um diretório raíz Diretórios dos usuários são intermediários Podem criar seus próprios subdiretórios e organizar seus spell bin prog arquivos raiz mail prt copy exp a a x p mail last test first Diretório Estruturado em Árvore Path name completo: define o caminho da raíz ao arquivo relativo: define o caminho do diretório corrente ao arquivo Apagar diretório depende da política de decisão só se diretório estiver vazio Assumir que deve apagar todos os arquivos e subdiretórios que estiverem contidos Default: não há compartilhamento de arquivos ou subdiretórios Diretório em Grafo Acíclico Permite compartilhamento de arquivos e subdiretórios Generalização do esquema de diretório estruturado em árvore raiz list a x pr spell dict mail list rad word w7 count Diretório em Grafo Acíclico Compartilhamento pode ser implementado por link: é criado um ponteiro,para outro arquivo ou subdiretório duplicar informações: pode gerar inconsistências de informação lista de referências ao arquivo: entradas no diretório ou links simbólicos Diretório em Grafo Acíclico Eliminação de um arquivo ou diretório retirada do link: não afeta o arquivo, arquivo ou diretório é eliminado se todos os links forem removidos retirada da referência da lista de referências arquivo só é eliminado quando a lista estiver vazia é preciso somente de um contador de referências, se contador = 0, arquivo pode ser eliminado Diretório em Grafo Geral Permite a formação de ciclos, existe diversos caminhos para um mesmo arquivo ou diretório Estruturas semelhantes as do grafo acíclico para o compartilhamento raiz spell dict Garbage Collection list a x pr mail list word list word hyp rad w7 Proteção de Arquivos Contra danos físicos (confiabilidade) acessos impróprios (proteção) Confiabilidade: cópia de arquivos com intervalos regulares Proteção resultado direto da habilidade de acessar arquivos Proteção de Arquivos Níveis de Proteção de Sistemas não permitem o acesso a outros usuários, não precisam de proteção (default) têm proteção completa, proibindo o acesso têm livre acesso sem nenhuma proteção Abordagens muito extremas Proteção através de um controle de acesso Proteção de Arquivos Proteção através de controle de acesso login + senha (password) dependendo da operação sobre arquivos leitura, escrita e execução têm livre acesso sem nenhuma proteção Usuários com necessidades de acesso diferentes lista de acesso associada a cada arquivo ou diretório Proteção de Arquivos Lista de acesso pode ser muito grande dependendo da forma de implementação Redução do tamanho da lista operações de leitura, escrita e execução classificação dos usuários em grupos proprietário: usuário que criou o arquivo grupo: vários usuários que compartilham e necessitam de acesso similar ao arquivo universo: todos os outros usuários Proteção de Arquivos Classificação: três campos para definir a proteção Cada campo = coleção de bits que controlam o acesso, a cada bit está associado uma permissão Exemplo: Unix like três campos com três bits ( 0 = negado, 1 = permitido) r = acesso de leitura w = acesso de escrita x = acesso de execução