Sistemas de Arquivos

De Aulas

Conteúdo integrante da disciplina de Sistemas Operacionais

Introdução

  • O Sistema de Arquivos é o modo como as informações são armazenadas nos dispositivos físicos de armazenamento, exemplo Disco Rígido, disquete, pendrive, etc...
  • O Sistema de Arquivos é a parte mais visível de um Sistema Operacional, pois a manipulação de arquivos é uma atividade freqüentemente realizada pelos usuários, devendo sempre ocorrer de maneira uniforme, independente dos diferentes dispositivos de armazenamento.

Arquivos

  • Os arquivos são constituído de informações logicamente relacionados, podendo representar programas ou dados, ou melhor, é um conjunto de registros definidos pelo sistema de arquivos.
  • Um arquivo pode ser identificado por um nome, com formato e extensão máxima variando conforme o sistema operacional.
  • Alguns Sistemas Operacionais definem o arquivo em duas partes, possibilitando a identificação do seu tipo através da segunda parte, como exemplo: MeuPrograma.exe (executável), MeuTexto.txt (arquivo texto), MinhaClasse.Java (arquivo texto, fonte de um programa Java).

Organização dos Arquivos

  • A organização dos arquivos consiste no modo como os dados estão internamente armazenados, podendo, sua estrutura, variar em função do tipo de informação contida no arquivo.
  • A forma mais simples de organização é através de uma seqüência não estruturadas de bytes. A aplicação deve definir toda a organização, com vantagem da flexibilidade, porém de inteira responsabilidade da aplicação.
  • Alguns Sistemas Operacionais estabelecem diferentes organizações de arquivos e cada arquivo deve seguir a um modelo suportado.
  • As organizações mais conhecidas e implementadas são a seqüencial, relativa e indexada.

Métodos de Acesso

Seqüencial

  • A gravação de novos registros só é possível no final do arquivo.
  • Exemplo : Fita magnética.

Acesso Direto

  • É mais eficiente que o seqüencial;
  • Permite a leitura/gravação de um registro diretamente na sua posição através do número do registro, que é a posição relativa ao início do arquivo.
  • Não existe restrição à ordem em que os registros são lidos ou gravados, sendo sempre necessário especificar o número do registro.
  • Possível apenas quando o arquivo é definido com registros de tamanho fixo.

Acesso Direto + Acesso Seqüencial

  • Possível acessar diretamente um registro qualquer de um arquivo, e, a partir deste, acessar seqüencialmente os demais.

Acesso Indexado ou Acesso por Chave

  • É o mais sofisticado dos métodos;
  • Tem como base o acesso direto;
  • O arquivo deve possuir uma área de índice onde existam ponteiros para os diversos registros.
  • Quando a aplicação deseja acessar um registro, deverá ser especificada uma chave através da qual o sistema.pesquisará, na área de índice, o ponteiro correspondente, a partir disso, acessando diretamente o arquivo.

Operações de Entrada/Saída

  • Realizadas através de System Calls, que fornecem uma interface simples e uniforme entre a aplicação e os diversos dispositivos, permitindo leitura/gravação, criação/eliminação de arquivos.

Atributos

  • Os atributos são informações de controle dos arquivos que variam dependendo do Sistema Operacional, por exemplo: tamanho, proteção, identificação do criador e data e hora de criação;
  • Alguns atributos específicos são alterados apenas pelo próprio Sistema Operacional, como data e hora de criação, tamanho e outros podem ser alterados pelo usuário como proteção.

Diretórios

  • A organização por diretórios é o modo como o Sistema organiza logicamente os diversos arquivos contidos em um dispositivo físico de armazenamento.
  • O diretório contém entradas associadas aos arquivos onde são armazenadas informações como localização física, nome, organização e demais atributos.
  • Ao abrir um arquivo, o Sistema Operacional procura a sua entrada na estrutura de diretórios em uma tabela mantida na memória principal, contendo todos os arquivos. É necessário fechar o arquivo ao término de seu uso.

Nível Único

  • Organização mais simples de uma estrutura de diretórios.
  • Existe apenas um único diretório contendo todos os arquivos do disco.
  • O nivel único é bastante limitado, não permitindo que usuários criem arquivos com mesmo nome.

Master File Directory (MFD)

  • Existe um nível de diretório adicional para controlar os diretórios individuais dos usuários.

indexado pelo nome do usuário e, nele, cada entrada aponta para o diretório (UFD) pessoal.

Estrutura de diretórios em árvore

  • Existe o diretório MFD que é a raíz, os galhos são os UFD e os arquivos são as folhas.
  • Cada subdiretório abaixo do MDF pode conter arquivos e novos subdiretórios e assim por diante.
  • Quando se referencia a um arquivo, é necessário especificar seu nome, bem como o diretório onde ele se encontra, referência chamada PATH.
  • Mais organizada e adotada pela maioria dos Sistemas Operacionais.
  • Na maioria dos sistemas, diretórios também são tratados como arquivos, com identificação de atributos, proteção identificação do criador e data da criação.

Alocação de Espaço em Disco

  • O Sistema Operacional possui uma estrutura de dados que armazena informações que possibilitam ao sistema de arquivos gerenciar as áreas ou blocos livres.
  • Nessa estrutura, geralmente uma lista ou tabela, é possível identificar blocos livres que poderão ser alocados por um novo arquivo.
  • Quando um arquivo é eliminado, todos os seus blocos são liberados para a estrutura de espaços livres.
  • Mapa de Bits
    • Forma mais simples de implementar uma estrutura de espaços livres;
    • Cada entrada da tabela é associada a um bloco do disco representado por um bit que pode ser 0 (livre) ou 1 (ocupado).
  • Lista encadeada
    • Existe uma lista encadeada de todos os blocos livres do disco;
    • Cada bloco possui uma área reservada para armazenamento do endereço do próximo bloco;
    • A partir do primeiro bloco livre pode-se ter acesso seqüencial aos demais de forma encadeada;
    • Problema: para se achar espaço livre, o algoritmo deve sempre realizar uma pesquisa seqüencial na lista.
  • Blocos Contíguos
    • Blocos contíguos são geralmente alocados ou liberados simultaneamente;
    • Enxerga o disco como um conjunto de segmentos de blocos livres;
    • Possível manter uma tabela com o endereço do primeiro bloco de cada segmento e o número de blocos livres contíguos que se seguem.

Alocação Contígua

  • A alocação contígua consiste em armazenar um arquivo em blocos seqüencialmente dispostos, permitindo ao sistema localizar um arquivo através do endereço do primeiro bloco e da sua extensão em blocos. O aceso é feito de maneira simples, tanto para a forma seqüencial quanto para a direta.
  • Um problema desse tipo de alocação é que quando um arquivo é criado com n blocos, é necessário que exista uma cadeia de n blocos livres disposto seqüencialmente. Nesse tipo de alocação, o disco é visto como um grande vetor, com segmentos ocupados e livres.
  • A alocação em um novo segmento livre consiste técnicas para escolha, algumas das principais são:
    • First-fit: Seleciona o primeiro segmento livre com o tamanho suficiente para alocar o arquivo e a busca é feita seqüencialmente, interrompendo ao achar um segmento livre do tamanho adequado.
    • Best-fit: Seleciona o menor segmento livre disponível com o tamanho suficiente para armazenar o arquivo e é necessária a busca em toda a lista, caso esta não esteja ordenada por tamanho.
    • Worst-fit: Seleciona o maior segmento livre e a busca funciona como no caso anterior.
  • Um problema na alocação contígua é a fragmentação dos espaços livres causado pela criação e eliminação constante de arquivos é que com o tempo surgem espaços vagos sem o tamanho suficiente para se alocar novos arquivos.
  • A defragmentação busca solucionar o problema da fragmentação, reorganizando os arquivos no disco de maneira que só exista um único segmento de blocos. A defragmentação é lenta e deve ser realizada periodicamente.

Alocação Encadeada

  • Na alocação encadeada um arquivo pode ser organizado como um conjunto de blocos ligados logicamente no disco, independente da sua localização física, sendo que cada bloco possui um ponteiro para o bloco seguinte do arquivo e assim sucessivamente.
  • Neste tipo de alocação, ocorre grande fragmentação dos arquivos devido aos blocos livres dos arquivos não precisarem ser contíguos, existe a quebra do arquivo em diversos pedaços, denominados extents. Essa fragmentação aumenta o tempo de acesso aos arquivos, pois exige que o mecanismo de leitura/gravação se desloque diversas vezes sob sua superfície. Dessa forma se torna necessário a execução da operação de defragmentação periódicamente.
  • Um problema na alocação encadeada é que ela só permite o acesso seqüencial aos blocos dos arquivos, não possuindo acesso direto aos blocos e desperdiça espaço nos blocos com o armazenamento de ponteiros.

Alocação Indexada

  • A alocação indexada soluciona o problema da alocação encadeada referente ao acesso direto aos blocos dos arquivos pois mantém os ponteiros de todos os blocos do arquivo em uma única estrutura denominada bloco de índice.

Proteção de Acesso

  • A proteção de acesso aos arquivos visa possibilitar o compartilhamento seguro de arquivos entre usuários, quando desejado. Em geral, existe concessão ou não de acessos como leitura, gravação, execução e eliminação.
  • Existem diferentes mecanismos de níveis de proteção. Alguns deles são:
  • Senha de Acesso:
    • O sistema concede acesso a determinadosarquivos/diretórios através de uma senha;
    • Cada arquivo possui apenas uma senha e o acesso pode ter diversos níveis de acesso
    • Desvantagem de compartilhamento, pois além do dono, todos os demais usuários precisam conhecer a senha de acesso.
  • Grupos de Usuários:
    • Existente em diversos Sistemas Operacionais;
    • Associa cada usuário a um grupo de usuários que compartilham arquivos e diretórios;
    • Existe três níveis de proteção: owner (dono), group (grupo) all (todos);
    • Necessário associar o tipo do acesso (leitura, escrita, execução e eliminação) aos três níveis de proteção.
  • Lista de Controle de Acesso (Access Control List - ACL):
    • Consiste em uma lista associada a cada arquivos, especificando usuários e tipos de acesso permitido;>
    • O Sistema Operacional verifica se a lista de controle autoriza a operação desejada pelo usuário;
    • A estrutura pode ter um tamanho bastante extenso considerando que um arquivo pode ter seu acesso compartilhado por diversos usuários;
    • A pesquisa seqüencial na lista pode causar overhead.

Implementação de Caches

  • Um dos principais problemas para o desempenho do sistema é que o acesso é bastante lento comparado ao acesso a memória principal. Para contornar este problema, são implementados nos sistemas operacionais sistemas de cache
  • O buffer cache é uma área da memória que armazena informações de disco e busca minimizar o problema da lentidão, pois ao se acessar o disco, se a informação desejada estiver no buffer cache, não será necessário o acesso ao disco. O tamanho do buffer cache é limitado, necessitando políticas para substituição de blocos como FIFO ou Last Recently Used (LRU).
  • A falta de energia pode acarretar perda de dados que foram modificados no cache e não foram atualizados no disco. Neste caso, existem duas possíveis soluções:
    • Solução 1: Atualizar periodicamente em disco todos os blocos modificados no cache;
    • Solução 2: Atualizar imediatamente no disco toda a vez que os blocos são modificados no cache.

Lista de Exercícios

Formulário

  1. Defina, com suas próprias palavras, o que é o Sistema de Arquivos e pra que serve.
  2. O que são arquivos e quais suas características, em geral?
  3. Comente sobre a organização dos arquivos.
  4. Descreva os métodos de acesso aos arquivos.
  5. Como são realizadas as operações de entrada/saída?
  6. Descreva o que são os diretórios e suas principais formas de organização.
  7. O que é e como funciona a alocação de espaço em disco? Comente sobre os principais tipos estruturas.
  8. O que é a alocação contígua e como funciona?
  9. O que é a alocação encadeada e como funciona?
  10. O que é a alocação indexada e como funciona?
  11. Comente sobre a proteção de acesso e descreva alguns dos principais mecanismos de proteção.
  12. O que é buffer cache, pra que serve e como funciona?