Sistemas Operacionais
Sistemas de Arquivos
Toda esta apresentação é uma
adaptação/tradução/versão do
curso de Abraham
Silberschatz
Sistemas de Arquivos
• Estrutura do Sistemas de Arquivos
• Implementação de Sistemas de Arquivos
• Diretórios
• Métodos de Alocação
• Gerenciamento do Espaço Livre
• Eficiência e Desempenho
• Recuperação
Objetivos
•
Explicar as funções dos sistemas de arquivo.
•
Descrever a implementação de sistemas de
arquivos.
•
Discutir as propostas de sistemas arquivos,
incluindo métodos de acesso,
compartilhamento de arquivos,
Conceito de Arquivo
•
Espaço de endereçamento lógico contínuo
•
Tipos de arquivos:
–
Dados
• numérico
• caracter
• binário
Estrutura dos arquivos
•
Sequencia de palavras, bytes
•
Simples estrutura em REGISTROS
– Linhas
– Tamanho Fixo
– Tamanho Variável
•
Estruturas Complexas
– Documentos Formatados
– Unidade de Armazenamento Lógica – Coleção de informações relacionadas
– Sistema de arquivos organizado em camadas.
– Sistema de arquivos reside em armazenamento secundário (discos).
– Fornecem acesso eficiente e conveniente aos discos
permitindo o fácil armazenamento de dados e sua localização – Bloco de Controle de Arquivo (FCB - File Control block) –
estrutura de armazenamento contendo informações sobre um arquivo.
Estrutura dos Discos
• Os discos podem ser divididos em partitions - partições
• Os discos podem ser protegidos por RAID (Redundant Array of Independent Drives)
• Os discos podem ser raw – sem o sistema de arquivos, ou formatted
com o sistema de arquivos.
• Partições podem ser como minidisks ou fatias
• Uma entidade que contém o sistema de arquivos conhecido como
volume
• Cada volume contém o sistema de arquivos , suas trilhas com
Estrutura dos Discos
Estrutura dos Discos
Cluster
“Um conjunto de setores do HD que são endereçados pelo
sistema operacional como uma única unidade lógica. Em
outras palavras, um cluster é a menor parcela do HD que pode
ser acessada pelo sistema operacional.”
Boot Control Block (BCB) contém informações
necessárias pelo sistema para iniciar o SO naquele
volume.
Volume Control Block (VCB) contém detalhes do
volume
Estrutura de diretório organiza os arquivos
File Control Block (FCB) por arquivo contém vários
Discos e o Sistemas de Arquivos – Alocação dos Blocos
Um método de alocação indica como os blocos
de disco são alocados aos arquivos:
Cada arquivo ocupa um conjunto de blocos contíguos no
disco.
Simples
–
somente é necessário armazenar a localização
inicial (número do bloco) e o tamanho do arquivo
(quantidade de blocos).
Acesso Direto (randômico).
Perda de Espaço (problema da alocação dinâmica).
Cada arquivo é uma lista encadeada de blocos em disco:
blocos podem ser espalhados em qualquer lugar do disco.
Alocação Encadeada
Simples – necessita somente do endereço inicial. Sistema de Gerenciamento de Espaço Livre – sem perda de espaço.
Sem acesso direto (randômico).
Desvantagens:
- percorrer o encadeamento até encontrar posição.
Alocação Indexada
Juntar todos os ponteiros em uma tabela de índices (index block).
– Também chamados de Inodes ou Nós-Índices
– Visão Lógica.
Esquema encadeado.
Índice multinível.
Vetor ou mapa de Bits (n blocos)
Cálculo do número do Bloco:
(número de bits por palavra) * (número de palavras com valor 0) +
Espaço Livre
• Vetor de bits requer espaço extra. Exemplo: tamanho do bloco = 212 bytes
tamanho do disco = 230 bytes (1 gigabyte) n = 230/212 = 218 bits (ou 32K bytes)
• Fácil para manter arquivos contíguos.
• Lista encadeada (Lista de blocos livres).
• Difícil manter alocação contígua.
• Sem desperdício de espaço.
• Agrupamento.
Espaço Livre
Outras técnicas:
• Lista encadeada (Com lista de blocos livres)
• Difícil manter alocação contígua
• Sem desperdício de espaço
• Agrupamento
• Agrupa n blocos livres no primeiro bloco livre, assim sucessivamente
• Contagem
• Registra no primeiro bloco livre o nº de blocos livres contíguos
• Mapa de espaços
Disco é o principal gargalo para o desempenho do sistema
Eficiência depende de:
Alocação de disco e algoritmos de diretório
Tipos de dados mantidos na entrada do arquivo no diretório
Desempenho
cache de disco – seção separada de memória principal para blocos freqüentemente usados
Liberação antecipada (free-behind) e leitura antecipada (read-ahead) – técnicas para otimizar o acesso sequencial
Aumentar o desempenho do PC dedicando partes da memória
Um cache de páginas armazena páginas ao invés de blocos de disco usando técnicas de memória virtual.
E/S mapeado em memória usa um cache de página.
Rotina de E/S através do sistema de arquivos usa o cache de buffer (do Disco).
Atributos dos Arquivos
• Nome – mantém a identificação do arquivo para os usuários.
• Identificador – número que identifica o arquivo dentro do sistema.
• Tipo – classifica os arquivos em grupos e geralmente estão associados a programas.
• Localização – ponteiro para a localização do arquuivo no dispositivo de armazenamento.
• Size – current file size
• Protection – controls who can do reading, writing, executing
Operações
Arquivos são estruturas abstradas de dados
Arquivo Aberto
Várias partes dos dados são necessárias para a
gestão dos arquivos abertos:
– Ponteiro do arquivo: aponta o última localização do registro lido ou gravado.
– Contador: conta o número de vezes que um arquivo esta aberto.
Bloqueia um arquivo aberto
•
Responsabilidade de alguns sistemas
operacionais e dos sistemas de arquivos.
•
Controle dos acessos concorrentes.
•
Obrigatório ou consultivo:
–
Obrigatório
–
o acesso é negado dependendo de
bloqueios mantidos e configurados.
Exemplo de bloqueio de um arquivo com Java API
import java.io.*;
import java.nio.channels.*; public class LockingExample {
public static final boolean EXCLUSIVE = false; public static final boolean SHARED = true;
public static void main(String arsg[]) throws IOException { FileLock sharedLock = null;
FileLock exclusiveLock = null; try {
RandomAccessFile raf = new RandomAccessFile("file.txt", "rw"); // get the channel for the file
FileChannel ch = raf.getChannel();
// this locks the first half of the file - exclusive
// this locks the second half of the file - shared
sharedLock = ch.lock(raf.length()/2+1, raf.length(), SHARED);
/** Now read the data . . . */ // release the lock
sharedLock.release(); } catch (java.io.IOException ioe) {
System.err.println(ioe); }finally {
if (exclusiveLock != null) exclusiveLock.release(); if (sharedLock != null) sharedLock.release(); }
Métodos de Acesso
• Acesso sequencial
read next write next reset
no read after last write (rewrite)
• Acesso Direto
read n
write n
position to n
Estrutura de Diretórios
Uma coleção de “nodes” contendo informações sobre os arquivos.
F 1 F 2 F 3 F 4
F n Directory
Files
Operações nos Diretórios
•
Pesquisar por um file
•
Criar um file
•
Deletar um file
•
Listar o diretório
•
Renomear um file
Vantagens da organização em Diretórios
• Eficiência – localização de um file rapidamente
• Nomeclatura dos arquivos – conveniente para os usuários
– Dois usuários pode tem um mesmo nome de arquivo para diferentes files
– E um mesmo file pode ter differentes nomes
Implementação de Diretórios
Lista Linear de nomes de arquivos com ponteiros para os
blocos de dados
•
Simples de programar
•
Execução lenta
Tabela Hash
–
lista linear com estruturas de dados
hash.
•
Diminui o tempo de procura no diretório
Diretório de um nível simples
Um diretório simples para todos os usuários
Problemas para a nomenclatura.
Diretório de dois níveis
Cada usuário com seu diretório
Estruturas em árvores
•
Pesquisa ainda mais eficiente
•
Capacidade de agrupamento
•
Solução de diretório corrente e de trabalho
–
cd /spell/mail/prog
Estrutura em árvore (Cont)
Absoluto ou relativo caminho/nome
Criar um novo file é realizado diretório corrente.
Criar um novo diretório também é no diretório corrente
mkdir <dir-name>
Deletar um file (não confundir com rename). rm <file-name>
Example: if in current directory /mail mkdir count
Diretórios em Grafos Acíclicos.
Diretórios em Grafos Acíclicos (Cont.)
•
Dois nomes diferentes (alias)
•
Nova entrada no diretório
– Link – outro nome (pointer) para um arquivo existente
•
Como é que vamos garantir não há ciclos?
–
Permitir somente links para files e não
subdiretórios
–
Coleta de lixo
–
Cada vez que ocorra um novo LINK é adicionado
utilizar um ciclo de detecção.
–
Algoritmo para determinar se está OK
Montagem de Sistemas de Arquivos
•
Um sistema de arquivos deve ser
montado antes de ser acessado.
•
Um sistema de arquivos também
pode ser desmontado e ao montar
Compartilhamento de arquivos
• Compartilhamento de files é necessário para sistemas multi-usuários.
• Compartilhamento pode ser feito por meio de um esquema de protecão
• Em sistemas distribuídos os arquivos devem ser compartilhados na rede.
Compartilhamento de arquivos
•
User IDs
identifica os usuários e permite
permissões e proteções por usuário.
•
Group IDs
permtie que usuários sejam
agrupados e herdem os direitos de
Compartilhamento de arquivos. Sistemas Remoto de Arquivos
Usuários em rede deve ter acesso aos arquivos.
– Manualmente por meio de programas como o File Transfer Protocol (FTP)
– Automaticamente utilizando sistemas distribuídos de arquivos.
– Semi automaticamente via oworld wide web (WWW)
Modelo cliente-servidor permite que clientes montem arquivos dos servidores remotamente.
Servidor deve permitir múltiplos clientes.
Network File System (NFS) é o padrão UNIX cliente-servidor
Common Internet File System (CIFS) é o padrão Windows
Sistemas de Informações Distribuídas
Lightweight Directory Access Protocol (LDAP),
Compartilhamento de arquivos Novas Falhas
Sistemas de arquivos remotos adicionam novos tipos
de falha, devido a falha na rede e no servidor remoto.
Recuperação de falhas pode envolver informações de
estado de cada solicitação remota
Compartilhamento de arquivos Semânticas para consistência
Semânticas para Consistência especifica como multiplos usuários podem ter acesso aos arquivos compartilhados.
São necessários eficientes algoritmos de sincronização.
Tendem a ser menos complexo devido latência do disco (I / O) e da rede (para sistemas de arquivos remotos)
Andrew File System (AFS) implementa semântica complexa para o compartilhamento remoto de arquivos.
Unix file system (UFS) implementa:
Proteção
O proprietário e criador do file estará apto a controlar:
O que pode ser feito com o file.
De onde pode e por quem pode ser manipulado.
Tipos de Acessos
Read Write
Lista de Acesso e Grupos
• Mode de acesso Leitura, Gravação e Execução
• Três classes de usuários
RWX a) Acesso do proprietário 7 1 1 1 RWX
b) Acesso do Grupo 6 1 1 0
RWX
c) Acesso Público 1 0 0 1
Arquivos e diretórios são mantidos em disco e memória, atenção para que possíveis falhas no sistema não resultem em perdas ou inconsistências
Teste de Consistência – comparar dados nas estruturas de
diretórios com blocos de dados no disco, e tentar consertar as inconsistências.
Usar programas de sistemas para criar cópias de segurança (back up) do disco para outros dispositivos de armazenamento (disquete, disco magnético, pendriver).
Sistemas de arquivos com Estrutura de Registro de Operações - Log (ou journaling) registram cada atualização no sistema de arquivos como uma transação.
Todas as transações são escritas em um registro de operações:
• Uma transação é considerada encerrada com sucesso (commit) uma vez que é gravada no registro de operações.
• Entretanto, o sistema de arquivos pode não ter sido atualizado ainda.
As transações do registro de operações são gravadas de forma assíncrona no sistema de arquivos.
• Quando o sistema de arquivos é modificado, a transação é
Uma implementação e especificação de um software
para acessar arquivos remotos através das redes locais
(ou metropolitanas).
A implementação é parte dos sistemas operacionais
Solaris e SunOS executando em estações de trabalho
Sun usando um protocolo de datagramas não confiável
(UDP/IP) e Ethernet.
Network File System (NFS).
Estações de trabalho interconectadas são vistas como um conjunto de máquinas independentes com sistemas de arquivos independentes. NFS permite compartilhamento entre esses sistemas de arquivos de forma transparente
• Um diretório remoto é montado sobre um sistema de diretórios local
O diretório montado aparece como uma sub-árvore integrada ao
sistema de arquivos local, substituindo as ramificações descendentes do subdiretório local
• Especificação do diretório remoto para a operação de montagem não é transparente; O nome da máquina do diretório remoto deve ser fornecido
Network File System (NFS).
NFS é projetado para operar em ambientes heterogêneos de
diferentes máquinas, sistemas operacionais e arquiteturas de rede; a especificação do NFS independe dessas mídias.
A independência é obtida através do uso de primitivas de Remote Procedure Call (RPC) construídas sobre o protocolo External Data Representation (XDR) usado entre duas interfaces independentes de implementação.