Sistemas Operacionais Sistema Operacionais Sistemas de Arquivos Sistemas Operacionais Sistema de Arquivos • Não é possível gravar dados disco (HD, memory card, pen drive, CD) sem um sistema de arquivos, que é, basicamente, uma estrutura que indica como os arquivos devem ser gravados e guardados em mídias. Sistemas Operacionais Sistema de Arquivos • Através do sistema de arquivos, é que se determina o espaço utilizado no disco, além de ser o método que permite gerenciar como partes de um arquivo podem ficar "espalhadas" no dispositivo de armazenamento. Sistemas Operacionais Sistema de Arquivos • Um outro detalhe importante: é o sistema de arquivos que determina como arquivos podem ser gravados, copiados, alterados, nomeados e até apagados. Sistemas Operacionais Sistema de Arquivos • Ou seja, resumindo, toda e qualquer manipulação de dados numa mídia necessita de um sistema de arquivos para que essas ações sejam possíveis. Se não houver estrutura de armazenamento e manipulação é impossível gravar dados. Sistemas Operacionais Introdução • O sistema de arquivos é a parte mais visível do sistema operacional. • Cria um recurso lógico a partir de recursos físicos através de uma interface coerente e simples, fácil de usar • Mecanismo para armazenamento e acesso a dados e a programas • Duas partes básicas: Sistemas Operacionais – Arquivos - armazenamento de dados e de programas – Diretórios - organização e informações sobre arquivos • Partição – permite - a partir do disco físico - criar discos lógicos Objetivos do sistema de arquivos • Fornecer mecanismos para usuários manipular arquivos e diretórios • Garantir a validade e coerência de dados Sistemas Operacionais – Minimizar ou eliminar o risco de perda/alteração de dados • Otimizar o acesso Objetivos do sistema de arquivos • Fornecer suporte a operações de E/S a diferentes dispositivos Sistemas Operacionais – Interface única para interface usuário de funções de E/S • Suporte a vários usuários (multiprogramação) – Uso compartilhado (proteção e acesso concorrente) Requisitos mínimos: Ponto de Vista do Usuário Sistemas Operacionais Cada usuário deve ser capaz de: • Criar, apagar, ler e alterar arquivos • Controlar as permissões de acesso a seus arquivos – Estruturar o sistema de arquivos de forma a adequá-lo a suas necessidades específicas Sistemas Operacionais Requisitos mínimos: Ponto de Vista do Usuário Cada usuário deve ser capaz de: • Transferir dados entre arquivos • Realizar backup’s e recuperar arquivos em caso de problemas • Nomear os arquivos de forma simbólica Requisitos mínimos: Ponto de Vista do Sistema • Identificar e localizar um determinado arquivo – Empregar diretório para descrever a localização de todos os arquivos e de seus atributos Sistemas Operacionais • Gerenciar espaço físico do disco – Alocar blocos livres a arquivos em criação/expansão – Liberar blocos de arquivos removidos – Mecanismos para localizar eficientemente blocos (setores) que compõem arquivos Conceito de arquivo • Menor unidade do sistema de arquivos • Espaço lógico de endereçamento contíguo Sistemas Operacionais – Seqüência de bytes, de linhas, ou de registros • Possui uma estrutura interna cuja interpretação depende do sistema operacional e do programa que o manipula – Arquivos de dados - numérico, caractere, binário – Programa - fonte, objeto, executável Atributos de um arquivo Sistemas Operacionais • Informações sobre arquivos – Nome: informação simbólica empregada pelo usuário para referenciar o arquivo – Tipo: binário, texto, executável, caracter, bloco – Localização: posição do arquivo em um determinado dispositivo E/S – Tamanho: número de bytes que compõem o arquivo Sistemas Operacionais – Proteção: controla acesso de leitura, escrita e execução ao arquivo – Hora e data de criação e identificação do usuário: informações destinadas a proteção, segurança e monitoração • Atributos são mantidos em uma estrutura a parte • Diretório Operações básicas sobre arquivos Sistemas Operacionais • Arquivo é um tipo abstrato de dados sobre o qual se pode efetuar uma série de operações – Criação (create) – Escrita (write) e leitura (read) – Reposicionamento em um ponto qualquer do arquivo (file seek) – Remoção (delete) – Abertura (open) e encerramento (close) – Adicionalmente: renomeação (rename); appending, etc • Geralmente correspondem a chamadas de sistema Sistemas Operacionais Controle de acesso • Importante controlar o acesso aos arquivos devido a questões de segurança e de confidencialidade • Objetivo é evitar acessos indevidos a arquivos • Baseado na identificação dos usuários – Sistema de autenticação padrão (login name + senha) – Usuários possuem direitos de acessos • Solução típica: Sistemas Operacionais – Lista de acesso e grupo Sistemas Operacionais Listas de acesso • Consiste em associar a cada arquivo e/ou diretório uma lista de acesso que determina que tipos de acessos são permitidos para cada usuário • Maior inconveniente é o tamanho da lista • Uma solução consiste em: – Criar classes de usuários - e.g.: proprietário, grupo, universo – Tipos de acessos - e.g: read, write, modify, execute Exemplo: SISTEMAS UNIX Sistemas Operacionais • Cada objeto oferece 3 bits (rwx) para três domínios diferentes: owner, group e others • Problema de flexibilidade – Quando um usuário pertence a vários grupos ele é identificado por um grupo primário e o arquivo (/etc/groups) mantém todos os grupos a que ele pertence • Exemplo: – r w x r- - r - - 1 paulo professor 214056 Mai 30 22:19 windbind.pdf Sistemas Operacionais Estrutura interna dos arquivos • Forma como os dados são dispostos em um arquivo • Cada tipo de arquivo possui uma estrutura interna apropriada a sua finalidade • Em geral a estrutura interna é transparente ao sistema operacional. • Executáveis são organizados em segmentos de código e dados Sistemas Operacionais • Arquivos de imagens são organizados em termos de pixels • Alguns sistemas operacionais suportam nomes de arquivos onde o tipo é indicado – e.g.: Windows (arquivos .doc, .pdf, .xls, .ppt, etc) Métodos de acesso Sistemas Operacionais • Forma pela qual o conteúdo de um arquivo é acessado • Estrutura lógica de um arquivo em função da forma de acesso – Conceito de registro: coleção de campos que mantém uma relação entre si • Métodos elementares de acesso: – Acesso seqüencial – Acesso relativo Sistemas Operacionais Acesso seqüencial • Acesso a um arquivo é feito através de primitivas (chamadas de sistema) do tipo read e write • Cada chamada de sistema read retorna ao processo os dados seguintes àqueles que foram lidos na chamada anterior • Método não adequado a todas aplicações – e.g.: acesso e atualização a cadastros de funcionários Acesso relativo Sistemas Operacionais • Provê uma chamada de sistema específica para indicar o ponto em que um arquivo deve ser lido/escrito • Implementado através da abstração de posição corrente no arquivo Outros tipos de acesso • Os métodos seqüênciais e relativos não resolvem todos os tipos de acesso Sistemas Operacionais – e.g.: localizar um registro a partir do contéudo • Necessidades de métodos de acesso mais sofisticados, tais como seqüencial indexado, indexado, direto, hash, etc – Normalmente implementados por programas específicos – Baseados nos métodos de acesso seqüêncial e relativo Implementação de arquivos Sistemas Operacionais • Arquivos são implementados através da criação, para cada arquivo no sistema, de uma estrutura de dados • Descritor de arquivo é um registro que mantém Informações sobre o arquivo Sistemas Operacionais • Informações típicas (atributos): – Nome do arquivo – Tamanho em bytes – Data e hora da criação, do último acesso, da última modificação – Identificação do usuário que criou o arquivo – Listas de controle de acesso – Local do disco físico onde o contéudo do arquivo foi colocado Alocação espaço em disco Sistemas Operacionais • Como alocar espaço em disco de forma que os arquivos sejam armazenados de forma eficiente e que permita acesso rápido • Três métodos: – Contigüo – Encadeado – Indexado Sistemas Operacionais Alocação contígua Sistemas Operacionais • Arquivo é uma seqüência de blocos contíguos alocados no momento da criação • Endereços no disco são lineares – bloco lógico i e i+1 são armazenados fisicamente em seqüência – Reduz a necessidade de seek já que blocos estão na mesma trilha – No pior caso necessita apenas a troca de cilindro • Arquivo é descrito através de uma entrada na forma: – Bloco físico inicial – Tamanho do arquivo em bloco Sistemas Operacionais Alocação contígua Problemas com alocação contígua • Problema 1: encontrar espaço para um novo arquivo Sistemas Operacionais – Gera fragmentação externa – Necessidade de compactação Sistemas Operacionais • Problema 2: determinar o espaço necessário a um arquivo – Arquivos tendem a crescer, e se não há espaço contíguo disponível? – Aborta execução do programa com erro – Recopia o programa para uma zona maior – Pré-alocar um espaço máximo para o arquivo – Fragmentação interna Alocação encadeada • Soluciona problemas da alocação contígua • Alocação é baseada em uma unidade de tamanho fixo (bloco) • Arquivo é uma lista encadeada de blocos Sistemas Operacionais – Cada bloco contém um ponteiro para o próximo bloco • Arquivo é descrito em uma entrada na forma: – Bloco inicial do arquivo – Bloco final do arquivo ou tamanho do arquivo em blocos Sistemas Operacionais Alocação encadeada Sistemas Operacionais Prós e contras da alocação encadeada • Elimina a fragmentação externa porém gera fragmentação interna • Arquivos podem crescer indefinidamente já que não há uma relação física entre blocos físicos e lógicos • O acesso a um bloco i implica em percorrer a lista encadeada - afeta o desempenho • Adequado para acesso seqüencial a arquivos • Espaço necessário no bloco para armazenamento de ponteiros – e.g.: Para acessar 4 Gbytes necessita 232 ponteiros (4 bytes), ou seja, 0.78% de um setor de 512 bytes FAT: variação de alocação encadeada • File Alocation Table (FAT) - esquema adotado pelo DOS • Unidade de alocação é o cluster (conjunto de setores) – Arquivo é formado por um conjunto de cluster Sistemas Operacionais • FAT é uma tabela de encadeamento de clusters – Uma entrada na FAT para cada cluster do disco (sistema de arquivos) – Composta por um ponteiro (end. de um cluster) – Arquivo é descrito por uma seqüência de entradas na FAT, cada entrada – apontando para a próxima entrada Sistemas Operacionais Alocação indexada • Busca resolver o problema de ponteiros espalhados pelo disco que a alocação encadeada provoca • Mantém, por arquivo, um índice de blocos que o compõe • O índice é mantido em um bloco • Diretório possui um ponteiro para o bloco onde está o índice • associado a um determinado arquivo Sistemas Operacionais Alocação indexada Sistemas Operacionais Prós e contras da alocação indexada • Permite o acesso randômico a blocos independentes de sua posição relativa no arquivo • Tamanho máximo do arquivo é limitado pela quantidade de entradas suportadas pelo bloco Sistemas Operacionais Organização da cache de disco • Objetivo é manter na memória principal uma certa quantidade de blocos do disco • Não adiciona nem elimina funcionalidades ao sistema de arquivos - melhora o desempenho do sistema de arquivos • Normalmente a cache de disco é mantida em uma área da memória principal e é controlada pelo sistema operacional Funcionamento da cache de disco • Em uma requisição de E/S verifica se o bloco está na cache Sistemas Operacionais – Sim: realiza o acesso a partir dessa cópia em memória – Não: realiza o acesso a partir do disco e carrega o bloco para a cache • A modificação de valores é feito em blocos na cache • Problema da perda de informações e da consistência do sistema de arquivos em caso de pane do sistema (falta de energia) Sistemas Operacionais Gerência de espaço livre • Necessidade de alocar espaço livre do disco a arquivos • Muitos sistemas operacionais vêm o disco como uma seqüência de blocos e não de setores • A unidade de gerência do espaço físico passa a ser o bloco Mapa de bits Sistemas Operacionais • Forma simples de gerenciar o espaço em disco • A cada bloco do disco está associado um bit indicando se o bloco está livre ou ocupado Lista de blocos livres Sistemas Operacionais • Os blocos livres são organizados em uma lista • A lista é mantida no próprio disco – Problema é o tamanho da lista – Paliativo: A medida que o espaço em disco é ocupado a lista diminui de tamanho liberando espaço do disco O conceito de diretório • Estrutura de dados que contém informações sobre arquivos – Atributos – Localização – Propriedades Sistemas Operacionais • Diretório é um arquivo do sistema operacional – Fornece um mapeamento entre o nome de um arquivo e o arquivo propriamente dito • Existem duas formas básicas para se organizar um diretório • Linear • Em árvore Diretório linear Sistemas Operacionais • Mais simples, o diretório corresponde a uma lista de todos os arquivos do disco • Desvantagem: – Problema de nomeação e agrupamento – 2 ou mais usuários não podem ter arquivos com o mesmo nome Diretório linear a dois níveis Sistemas Operacionais • Existência de um diretório principal que contém uma entrada para cada usuário cadastrado no sistema • Entrada corresponde a um subdiretório Diretório em árvore Sistemas Operacionais • Generealização do conceito de subdiretórios permitindo aos usuários criar livremente os seus próprios subdiretórios Sistemas Operacionais Sistema de Arquivos FAT16 • FAT é a sigla para File Allocation Table (ou tabela de alocação de arquivos). • Quando um arquivo é salvo num HD por exemplo, o FAT divide a área do disco em pequenos blocos. Assim, um arquivo pode (e ocupa) vários blocos, mas eles não precisam estar numa seqüência. • Os blocos de determinados arquivos podem estar em várias posições diferentes. Daí a necessidade de uma tabela para indicar cada bloco. Sistemas Operacionais Sistema de Arquivos FAT16 • Ao trabalharmos com HDs (e outros discos) é necessário prepará-los, fazendo uma formatação física. Este processo, divide os discos em trilhas (uma espécie de caminho circular) e setores (subdivisões de cada trilha, com geralmente 512 bytes). Um conjunto de trilhas recebe o nome de cilindro. Sistemas Operacionais • A formatação física já vem de fábrica e pode ser alterada se o usuário quiser dividir o disco em partições. Depois devese fazer uma formatação lógica, que nada mais é do que "instalar" o sistema de arquivos no dispositivo de armazenamento. Sistemas Operacionais • O sistema de arquivos FAT não trabalha diretamente com cada setor, mas sim com um grupo de setores. Esse grupo é chamado de cluster (ou unidade de alocação). Se por exemplo, um disco com setor de 512 bytes, tiver 5 KB de tamanho, ele terá 10 setores e 5 clusters, se cada cluster ocupar dois setores. Sistemas Operacionais • Sendo assim, quando o FAT precisar acessar um determinado setor, primeiro ele descobre em qual cluster ele se encontra. É válido citar que tanto o FAT quanto o FAT32 trabalham de acordo com este princípio. Sistemas Operacionais • O sistema FAT exige que cada cluster do disco seja usado somente para um único arquivo, ou seja, num mesmo cluster, não pode haver informações sobre mais de um arquivo. Isso pode até parecer óbvio, mas gera um problema: desperdício. Sistemas Operacionais Sistema de Arquivos FAT32 • FAT32 - A versão OSR-2 do Windows 95 (conhecido também como Windows "B") trouxe um novo sistema de arquivos chamado de FAT32. • Uma evolução natural da antiga FAT16, ela permite 32 bits de endereçamento de dados, permitindo clusters de apenas 4 kbytes, mesmo em partições maiores que 2 GB. O tamanho máximo de uma partição com FAT32 é de 2048 Gbytes, ou 2 Terabytes. Sistemas Operacionais Comparação FAT16 x FAT32 Sistemas Operacionais Sistema de Arquivos VFAT • VFAT é a sigla para Virtual File Allocation Table. Trata-se de um sistema introduzido no Windows 95. Ele possui as mesmas características do sistema FAT, mas pode suportar nome de arquivos longos. O sistema de arquivos FAT só trabalha com nomes no estilo 8.3 (8 caracteres para o nome e 3 para a extensão, como "palavras.txt").Com o VFAT, é possível ter nomes de arquivos com até 256 caracteres mais 3 para a extensão. O sistema FAT32 herdou todas as características do VFAT. Sistemas Operacionais Sistemas de arquivos NTFS • NTFS é a sigla para New Technology File System. Desde a época do DOS, a Microsoft vinha utilizando o sistema de arquivos FAT • FAT apresenta algumas limitações, principalmente no quesito segurança. • Microsoft lançou o sistema de arquivos NTFS, usado inicialmente em versões do Windows para servidores. Sistemas Operacionais • Este sistema de arquivos é usado pelo Windows NT. Nele, os clusters são de apenas 512 bytes, sendo o espaço em disco desperdiçado quase nenhum. Somente os Windows NT / 2000 / 2003 / 2008/ XP / Vista / 7, são capazes de entender este formato de arquivos, e a opção de formatar o HD em NTFS é dada durante a instalação Sistemas Operacionais • New Technology File System, conhecido pela sigla NTFS • sistema de arquivos HPFS (High Performance File System) Sistemas Operacionais • Confiança (fazendo-o ser tolerante a falhas) • Segurança • Arrays RAID • Rede Sistemas Operacionais Sistema de Arquivos HPFS • O HPFS é o sistema de arquivos utilizado pelo OS/2, com recursos que se aproximam muito dos permitidos pelo NTFS como nome de arquivos com até 254 caracteres incluindo espaços, partições de até 512GB unidades de alocação de 512 bytes. Sistemas Operacionais • O OS/2 foi o sistema operacional concorrente do Windows 95 lançado pela IBM. É pouco conhecido, porém é tecnicamente muito superior ao Windows 95. Embora muito eficiente este sistema de arquivos caiu em desuso juntamente com o OS/2, sendo suportado atualmente somente pelo Linux. Sistemas Operacionais Sistemas de Arquivos no Linux • Todo sistema operacional precisa de um sistema de arquivos e o Linux não é exceção à regra, pois afinal de contas um sistema de arquivos serve para fornecer ao sistema operacional toda a uma estrutura para ler, gravar e executar arquivos. Dependendo do tipo de sistema de arquivos pode se ter determinados recursos. Sistemas Operacionais • Hoje em dia, o Linux tem uma gama muito grande de opções de sistema de arquivos: Desde o velho EXT2 até os atuais com suporte a Journaling, como o EXT3, ReiserFS e XFS. Sistemas Operacionais História • Os sistemas de arquivos utilizados atualmente no Linux são avançados e tem vários recursos, mas não foi sempre assim. • Nas primeiras versões do kernel, o sistema de arquivos utilizado era o EXT. Extremamente frágil e com muitas limitações, como por exemplo, permissão para criação de partições de somente até 2GB e fácil desfragmentação. • A partir do EXT2 a limitação de 2GB para partições caiu por terra, já que ele permite criação de partições de até 4Terabytes! Sistema de Arquivos EXT2 Sistemas Operacionais • Sem dúvida alguma o EXT2 foi uma evolução e tanto em relação ao EXT (suporte a regras de permissões bem definidas) • Estrutura do EXT2: – Boot Block – Inodes – Diretórios – Links Sistemas Operacionais • Ao contrário do Windows, que trata dispositivos de hardware como tal, o Linux trata tudo como arquivo. • Os dispositivos de hardware ficam todos no diretório /dev • Outra característica é o recurso de montagem • acessar partições de diversos tipos, como FAT, FAT32, iso9660 e outras Sistemas Operacionais • Um grande problema do EXT2 é a sua baixa tolerância a falhas em caso de quedas de energia ou desligamento inadequado, sendo talvez até mais frágil do que a FAT32 do Windows • FSCK • Journaling Sistemas Operacionais Journaling • limitações do EXT2 • capacidade de acompanhar as mudanças que serão feitas nos arquivos antes de serem efetivadas • Estes registros são gravados numa área separada do sistema de arquivos, chamada “Journal” ou “registros de LOG” • FSCK Sistemas Operacionais • Nesta categoria de sistemas de arquivos existem algumas opções como EXT3, ReiserFS e JFS, sendo que os mais utilizados são o EXT3 e o ReiserFS Sistemas de Arquivos ReiserFS Sistemas Operacionais • • • • ReiserFS > seu desempenho blocos dinâmicos modo como ele armazena os registros metadata (estrutura de controle de um arquivo, ou seja, onde é especificado seu tamanho, permissões, data de criação, modificação, etc..) • recuperar o arquivo, mas os dados contidos nele podem ficar truncados ou mesmo perdidos Sistemas Operacionais Sistema de Arquivos EXT3 • EXT3 é o sucessor natural do EXT2 • sistema de arquivos para Linux mais utilizado atualmente • suporte para tecnologia Journaling • diferencia-se do modo de trabalho em Journaling do ReiserFS • uma perda de dados do arquivo é reduzida Sistemas Operacionais • registro de LOG ser completo >> Journal é acessado com muito mais freqüência • desempenho em relação ao ReiserFS • Journal se corromper Sistema de Arquivos EXT4 Sistemas Operacionais • EXT4 é o sucessor natural do EXT4 • Sistema de arquivos lançado em 2006 • Suporta sitemas de arquivos de 1 exabyte – 1024 giga = 1 tera – 1024 tera = 1 peta – 1024 peta = 1 exa • Começa a ser o sistema de arquivos padrão de muitas distros Sistemas Operacionais Sistema de Arquivos EXT4 • Checagem no Journaling, garantindo uma restauração mais rápida e a prova de falhas. • Desfragmentação On-Line • Checagem rápida do file-system • Atrasar a Alocação dos Blocos • Pré-alocação de Nível de Arquivo Sistemas Operacionais Sistema de Arquivos EXT • EXT • EXT2 • EXT3 • EXT4 1992 1993 2001 2006 Sistemas Operacionais Linux e NTFS • sistemas de arquivos para Linux >> versatilidade, segurança e compatibilidade com outros sistemas de arquivos • NTFS: Proprietário, fechado • distribuições que vem com o kernel 2.6.x e superiores – leitura e gravação (com restrições) – Existem projetos como o Linux-NTFS / Captive / NTFS-3G Sistemas Operacionais • / Diretório raiz do sistema de arquivos. é abaixo dele que se situam todos os outros. • /bin Arquivos executáveis de comandos essenciais. • /boot Arquivos estáticos necessários a inicialização do sistema. • /etc Arquivos de configuração do sistema. • /home Lugar onde ficam os diretórios locais dos usuários. Sistemas Operacionais • /lib Arquivos de bibliotecas essenciais ao sistema, utilizadas pelos programas em /bin. • /mnt Usualmente é o ponto de montagem de dispositivos na máquina. • /proc Informações do kernel e dos processos. • /root Diretório local do superusuário. Sistemas Operacionais • /sbin Arquivos essenciais ao sistema. Normalmente só o superusuário tem acesso a estes arquivos. • /tmp Diretório de arquivos temporários. • /usr Arquivos pertencentes aos usuários. (é a segunda maior hierarquia de diretórios presente no Linux, só perdendo para o diretório raiz). • /var Diretório onde são guardadas informações variáveis sobre o sistema