Download - Sd01 (si) sistemas de arquivos
Sistemas DistribuídosSistemas Distribuídos
Parte 1Sistemas de Arquivos
Professor Eduardo Xavier
IntroduçaoIntroduçao
• Os primeiros computadores executavam seus programas contando exclusivamente com a informação carregada na memória primária.
• Que problemas essa abordagem causava?– O espaço de endereçamento de cada processo que estava
executando era muito limitado em seu tamanho. Por vezes, aplicações muito grandes não cabiam inteiramente na memória.
– Quando o processo terminava, toda a informação que ele manipulava era eliminada da memória junto com o mesmo.
Professor Eduardo Xavier
IntroduçaoIntroduçao
• Outros problemas:– Falhas no funcionamento do hardware comprometiam a
informação manipulada.– Múltiplos processos precisavam acessar uma determinada
informação (ou apenas parte dela) ao mesmo tempo e isso não era possível, pois cada processo tinha seu próprio espaço de endereçamento protegido do acesso dos demais.
• A solução para todos estes problemas era uma só: tornar a informação independente dos processos que a manipulavam– Assim nasceu o conceito de ARQUIVO
Professor Eduardo Xavier
ArquivosArquivos
• Para resolver os problemas já citados, os arquivos devem atender a alguns requisitos essenciais:
– Conseguir suportar grandes capacidades de armazenamento
– Garantir a “persistência” da informação, ou seja, providenciar que a informação sobreviva ao término do processo
– Suportar acesso compartilhado da informação por múltiplos processos simultaneamente
Professor Eduardo Xavier
ArquivosArquivos• Os arquivos são gerenciados pelo sistema
operacional no que diz respeito a:– Estrutura de armazenamento– Identificação (nomeação e outras características)– Proteção (garantia de integridade)– Uso (como pode ser manipulado)– Acesso (controle de quem e como pode ter acesso)– Implementação (como manipular a estrutura de
armazenamento)
• A parte do SO que cuida disso chama-se “Sistema de Arquivo”
Professor Eduardo Xavier
Sistemas de ArquivosSistemas de Arquivos
Professor Eduardo Xavier
Nomeação de ArquivosNomeação de Arquivos
• Cada sistema operacional tem regras próprias para definir o que é válido e o que não é aceito na definição de um nome válido para seus arquivos.– A ideia básica é possibilitar que diversos
processos possam acessar um certo conjunto de dados usando apenas a identificação deste conjunto (um nome)
– Assim, os processos deixam de preocupar com a forma de armazenamento destes dados ou com o funcionamento do hardware onde estão hospedados
Professor Eduardo Xavier
Nomeação de ArquivosNomeação de Arquivos
• Extensões de arquivos
– Parte do nome do arquivo que indica alguma característica específica daquele tipo de arquivo
– Não é algo obrigatório na maioria dos sistemas operacionais modernos e seu objetivo é apenas facilitar o uso do arquivo
Professor Eduardo Xavier
Nomeação de ArquivosNomeação de Arquivos
• Alguns Exemplos:
Professor Eduardo Xavier
Estruturas de ArquivosEstruturas de Arquivos
• O sistema operacional normalmente não sabe (e nem precisa saber) qual o conteúdo de cada arquivo.
– O que o SO “vê” é apenas um conjunto de bytes.
– Dessa forma, a manipulação do arquivo ganha flexibilidade
Professor Eduardo Xavier
Estruturas de ArquivosEstruturas de Arquivos
• As estruturas de arquivos mais comuns são:– Sequência de bytes
• É a estrutura mais flexível
– Sequência de registros • Cada registro é um bloco de tamanho fixo de bytes
– Árvore de registros • Cada “folha” (registro) pode ter um tamanho diferente• Cada registro possui em uma posição fixa um campo-
chave pelo qual a árvore se liga e é ordenada
Professor Eduardo Xavier
Estruturas de ArquivosEstruturas de Arquivos
Professor Eduardo Xavier
Seqüência de Bytes Seqüência de Registros
Árvore de Registros
Tipos de ArquivosTipos de Arquivos• Os sistemas operacionais costumam suportar diversos tipos
de arquivos, mas geralmente eles se dividem em dois grupos:– Arquivos regulares
• São arquivos que contém informações dos usuários• Podem ser:
– Arquivos de texto» Linhas de texto em código ASCII
– Arquivos binários» Conjunto de códigos binários cuja estrutura interna é
conhecida apenas pelos programas projetados para manipular estes arquivos
» O que chamamos de arquivos EXECUTÁVEIS são arquivos binários codificados em um formato reconhecido pelo SO sem ajuda de nenhum outro programa
– Diretórios• Arquivos de controle que contém parte da estrutura suportada pelo
sistema de arquivos
Professor Eduardo Xavier
Acesso a ArquivosAcesso a Arquivos• Os primeiros computadores e seus sistemas operacionais
só suportavam acessos a seus arquivos de forma sequencial– Exemplos: fitas magnéticas, cartões perfurados,
impressoras,...• Com o surgimento dos discos magnéticos, o acesso
aleatório passou a ser mais frequente, em virtude das novas aplicações que surgiram com a nova tecnologia (ex: bancos de dados)– Nos primeiros modelos, o tipo de acesso ao arquivo era
definido quando o mesmo era criado, ou seja, ao criar um novo arquivo seu dono definia se este seria acessado de forma sequencial ou aleatória
– Hoje em dia, todos os arquivos são criados permitindo-se o acesso aleatório (porém o acesso sequencial também é suportado em alguns casos)
Professor Eduardo Xavier
AtributosAtributos
• Atributos são itens informativos sobre determinado arquivo, mas que não fazem parte dos dados.
• Alteração da informação contida nos atributos– Alguns atributos são informações fixas, como a data de
criação do arquivo. – Outros podem ser modificados pelo SO, a exemplo da
data da última alteração no arquivo– Existem ainda atributos que podem ser alterados pelo
próprio usuário, de acordo com sua conveniência. Exemplo: permissões de acesso ao arquivo
• Dependendo do sistema de arquivos, os atributos podem variar, embora alguns deles sejam praticamente “padrões de mercado”, como identificação do dono, tamanho do arquivo, data de criação e informações de proteção.
Professor Eduardo Xavier
Exemplos de AtributosExemplos de Atributos
Professor Eduardo Xavier
Operações com ArquivosOperações com Arquivos• O sistema de arquivos é responsável por prover uma série de
system calls ou primitivas que permitam a manipulação dos arquivos gerenciados
• As system calls mais comuns são:– Create: Cria o arquivo e estabelece os primeiros atributos básicos– Open: Carrega o arquivo na memória e lê certos atributos para definir
como o mesmo será manipulado– Seek: Procura determinado ponto no arquivo– Read: Lê o arquivo (geralmente de forma sequencial) a partir de
determinado ponto– Write: Escreve dados no arquivo (existe uma variação chamada
“append” que indica que o dado será adicionado ao final do arquivo)– Get/Set atributes: Recupera/Altera o valor de certos atributos– Close: Remove qualquer controle ou informação que indique que o
arquivo está sendo usado (isso foi estabelecido no “open”)– Delete :Apaga o arquivo
Professor Eduardo Xavier
DiretóriosDiretórios
• Diretórios são uma forma de organizar os diversos arquivos contidos em um armazenamento secundário
• São estruturas de dados que contém entradas associadas a cada arquivo
• A estrutura dos diretórios foi evoluindo desde os primeiros computadores até hoje. Podemos destacar 3 grandes passos:– Sistemas de Diretório em Nível Único– Sistemas de Diretório em Dois Níveis– Sistemas de Diretório em Hierárquicos
Professor Eduardo Xavier
Sist. de Diretórios em Nível ÚnicoSist. de Diretórios em Nível Único
• Cada entrada possui os atributos de um determinado arquivo
• É a solução mais antiga – muito usada nos primeiros computadores
• Embora mais simples de implementar, é uma alternativa muito limitada
• Seu maiores problemas são:– Não permitir dois arquivos com o mesmo nome– Cada usuário conhece os arquivos dos demais
Professor Eduardo Xavier
Sist. de Diretórios em Nível ÚnicoSist. de Diretórios em Nível Único
Professor Eduardo Xavier
Diretório
Arquivos
Arquivo 1 Arquivo 2 Arquivo 3 ... Arquivo N
Sist. de Diretórios em Dois NíveisSist. de Diretórios em Dois Níveis
• Para cada usuário do sistema existe um diretório particular que gerencia seus arquivos, chamdo UFD (User File Directory)
• Em um nível acima dos UFDs, existe outro diretório que os controla, chamado MFD (Master File Directory) que é indexado por usuário
• Para localizar um arquivo, é preciso saber qual o caminho (PATH) necessário para chegar até ele
• Para evitar que arquivos de uso comum sejam duplicados desnecessariamente:– Cria-se um UFD especial onde todos os usuários têm
acesso (OBS: podem haver vários)– O sistema procura qualquer arquivo primeiramente no
diretório corrente e, caso não ache, procura nesse diretório especial
Sist. de Diretórios em Dois NíveisSist. de Diretórios em Dois Níveis
Professor Eduardo Xavier
UFDs
Arquivos
Arquivo 1 Arquivo 2 Arquivo 3 Arquivo 1 Arquivo 2 Arquivo 1 Arquivo 2
Usuário 1 Usuário 2 ... Usuário NMFD
Sist. de Diretórios HierárquicoSist. de Diretórios Hierárquico• É uma organização em árvore, criada a partir de uma
extensão da idéia dos sistemas de diretórios em dois níveis, que permitiu mais organização e flexibilidade
• Neste sistema, é possível criar quantos diretórios se queira e cada um pode conter arquivos e outros diretórios
• Cada arquivo possui um PATH único que descreve como chegar até ele a partir do MDF
• O MDF não agrupa mais entradas por usuário e sim por diretórios
• A grande maioria dos sistemas operacionais modernos adota este sistema de diretórios
Professor Eduardo Xavier
Sist. de Diretórios HierárquicoSist. de Diretórios Hierárquico
Professor Eduardo Xavier
UFDs
... Arquivo ...MFD Diretório DiretórioArquivo
Diretório Arquivo
DiretórioDiretório
Arquivo Arquivo
Arquivo Arquivo Arquivo
Operações com DiretóriosOperações com Diretórios• As system calls para gerenciamento de diretórios variam mais
de sistema para sistema que as chamadas para gerenciamento de arquivos
• Alguns exemplos de system calls do sistema UNIX:– Create: Cria um diretório vazio, exceto pelo “.” e pelo “..”– Delete :Apaga o diretório (só funciona para diretórios vazios)– OpenDir: “Abre” o diretório deixando o mesmo pronto para manipulação– CloseDir: “Fecha” o diretório– ReadDir: Lê a próxima entrada de um diretório previamente aberto– Rename: Altera o nome de um diretório– Link: Efetua uma “ligação” que permite que um arquivo seja visualizado
em mais de um diretório– Unlink: Remove uma entrada do diretório. Se o arquivo “desligado”
estiver presente apenas em um diretório o mesmo será apagado. Se estiver em visível em mais de um diretório apenas a ligação será desfeita
Professor Eduardo Xavier
Sistemas Baseados em DiscoSistemas Baseados em Disco• Cada unidade de disco magnético contém os seguintes componentes
básicos:– Diversos discos com faces magnetizáveis paralelamente posicionados– Um dispositivo de tração que mantém o disco em rotação à velocidade
constante– Um pente de cabeças de leitura/gravação
• Uma cabeça para cada face magnetizável do disco (existem dispositivos com mais de uma cabeça por face, visando reduzir o tempo de acesso à informação)
• Organização do disco– O disco armazena as informações em trilhas concêntricas– Um grupo de trilha sobrepostas no disco compõe um cilindro– Cada trila possui várias divisões radiais (como em uma pizza cortada)
chamadas setores.
Professor Eduardo Xavier
Sistemas Baseados em DiscoSistemas Baseados em Disco
Professor Eduardo Xavier
Sistemas Baseados em DiscoSistemas Baseados em Disco
• A visão do controlador de discos– Cada setor tem, geralmente, 512 bytes e é a
unidade mínima de armazenamento manipulada pelo controlador de disco
– Para acessar a informação no disco, o controlador precisa saber:• Qual a face do disco• Qual a trilha ou o cilindro• Qual o setor dentro da trilha
Professor Eduardo Xavier
Sistemas Baseados em DiscoSistemas Baseados em Disco
• A visão do SO– O SO enxerga os setores de forma continuada,
ignorando trilhas, cilindros e faces• Estes setores são chamados de blocos contínuos ou
registros físicos– As vezes, é mais interessante para o SO trabalhar com
unidades diferentes de 1 setor (exemplo: para obter mais velocidade em discos de alta capacidade)
• Neste caso, o SO passa a trabalhar com registros lógicos ou blocos, que são agrupamentos de registros físicos (mais comum hoje em dia)
• Isso aumenta a velocidade de acesso, mas aumenta também o espaço perdido pro registro
Professor Eduardo Xavier
Sistemas Baseados em DiscoSistemas Baseados em Disco
• Gerenciamento de espaço livre no disco– O espaço de um arquivo que foi apagado pode
ser reutilizado
– Por este motivo, é preciso ter estratégias para gerenciar este espaço
– Estratégias : • Lista Encadeada• Lista de Blocos Contíguos
Professor Eduardo Xavier
Sistemas Baseados em DiscoSistemas Baseados em Disco
• Gerenciamento de espaço LIVRE no disco– Estratégia : Lista Encadeada
• Ligação de todos os blocos livres do disco, formando uma “corrente”
• Cada bloco possui uma área reservada para armazenar o endereço do próximo bloco livre
• Problema: a pesquisa nos blocos é sempre sequencial
– Estratégia : Lista de Blocos Contíguos• Guarda o endereço do primeiro bloco livre de uma série de
blocos adjacentes em uma tabela de controle• Para cada endereço guardado, também se armazena a
quantidade de blocos contíguos
Professor Eduardo Xavier
Sistemas Baseados em DiscoSistemas Baseados em Disco
Professor Eduardo Xavier
DISCOLista Encadeada
1 2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20
Bloco Ocupado
Bloco Livre
Sistemas Baseados em DiscoSistemas Baseados em Disco
Professor Eduardo Xavier
DISCOLista de Blocos Contíguos
1 2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20
Bloco Ocupado
Bloco Livre
Primeiro Bloco Livre Número de Blocos Contíguos1 2
5 1
7 1
10 2
14 1
17 4
Sistemas Baseados em DiscoSistemas Baseados em Disco• Alocação de espaço OCUPADO no disco
– Estratégia : Alocação Contígua• Consiste em armazenar um arquivo em blocos
sequencialmente dispostos no disco• O sistema passa a localizar o arquivo pelo endereço
do primeiro bloco e a quantidade de blocos contíguos do mesmo
• Embora possuindo um gerenciamento simples, este método apresenta alto índice de fragmentação do disco, o que obriga a execução freqüente de rotinas de desfragmentação, causando impacto no desempenho
Professor Eduardo Xavier
Sistemas Baseados em DiscoSistemas Baseados em Disco
Professor Eduardo Xavier
DISCOAlocação Contígua
1 2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20
Tabela de Blocos Contíguos
Arquivo Bloco ExtensãoArq01.txt 3 4
Arq02.txt 8 2
Arq03.txt 11 3
Arq04.txt 15 2
Bloco Ocupado
Bloco Livre
Sistemas Baseados em DiscoSistemas Baseados em Disco• Alocação de espaço OCUPADO no disco
– Estratégia : Alocação Encadeada• Conjunto de blocos ligados logicamente no disco,
independente de localização física• Cada bloco do arquivo possui um ponteiro apontando para o
bloco seguinte do arquivo• Este método lida melhor com a fragmentação do disco do
que a alocação contígua, porém:– Não elimina o problema de desempenho causado por
excesso de fragmentação– Continua necessitando de eventuais desfragmentações – Outro problema neste método é a impossibilidade de
acesso direto aos blocos dos arquivos
Sistemas Baseados em DiscoSistemas Baseados em Disco
Professor Eduardo Xavier
DISCOAlocação Encadeada
1 2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20
Início do arquivo
Fim do arquivo
Bloco Ocupado
Bloco Livre
Sistemas Baseados em DiscoSistemas Baseados em Disco• Alocação de espaço OCUPADO no disco
– Estratégia : Alocação Indexada• Mantém o endereço de todos os blocos (ponteiros)
de um arquivo em uma estrutura separada chamada bloco de índice
• Para arquivos grandes, pode-se encadear vários blocos de índices, onde o último valor de um bloco aponta para o próximo bloco
• Este método resolve o problema de acesso direto mencionado na alocação encadeada
Professor Eduardo Xavier
Sistemas Baseados em DiscoSistemas Baseados em Disco
Professor Eduardo Xavier
DISCOAlocação Indexada
1 2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20
Bloco Ocupado
Bloco Livre
Diretório
Arquivo Bloco de
Índice
Arq01.txt 3
3 9 – 6 – 5 – 8 – 11 – 13 – 15 – 16
Tópicos para DiscussãoTópicos para Discussão
• Confiabilidade do sistema de arquivos– Cópias de segurança
• Procedimentos, Desastres e reprocessamentos
– Consistência• Detecção e verificação
• Desempenho– Cache de blocos (ou cache de buffer)– Leitura antecipada– Redução do movimento no braço do disco
Professor Eduardo Xavier