cap11_implementacaoSistArq_silbersch.pps

Propaganda
Capítulo 11: Implementação do sistema de
arquivos
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Silberschatz, Galvin and Gagne ©2007
Capítulo 11: Implementação do sistema de arquivos










Estrutura do sistema de arquivos
Implementação do sistema de arquivos
Implementação de diretório
Métodos de alocação
Gerenciamento do espaço livre
Eficiência e desempenho
Recuperação
Sistemas de arquivo estruturados em log
NFS
Exemplo: Sistema de arquivos WAFL
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
11.2
Silberschatz, Galvin and Gagne ©2007
Objetivos



Descrever os detalhes da implementação de
sistemas de arquivos e estruturas de diretório
locais
Descrever a implementação de sistemas de
arquivo remotos
Discutir algoritmos e opções de a alocação em
bloco e bloco livre
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
11.3
Silberschatz, Galvin and Gagne ©2007
Estrutura do sistema de arquivos




Estrutura de arquivo
 Unidade de armazenamento lógico
 Coleta de informações relacionadas
Sistema de arquivos reside no armazenamento
secundário (discos)
Sistema de arquivos organizado em camadas
Bloco de controle de arquivo – estrutura de
armazenamento consistindo em informações sobre um
arquivo
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
11.4
Silberschatz, Galvin and Gagne ©2007
Sistema de arquivos em camadas
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
11.5
Silberschatz, Galvin and Gagne ©2007
Um bloco de controle de arquivo típico
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
11.6
Silberschatz, Galvin and Gagne ©2007
Estruturas de sistema de arquivos na memória

A figura a seguir ilustra as estruturas necessárias
do sistema de arquivos fornecidas pelos
sistemas operacionais.

Figura 12.3(a) refere-se à abertura de um
arquivo.

Figura 12.3(b) refere-se à leitura de um arquivo.
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
11.7
Silberschatz, Galvin and Gagne ©2007
Estruturas de sistema de arquivos na memória
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
11.8
Silberschatz, Galvin and Gagne ©2007
Sistemas de arquivo virtuais

Virtual File Systems (VFS) oferecem um modo
orientado a objeto para implementar sistemas de
arquivos.

VFS permite que a mesma interface de chamada
do sistema (a API) seja usada para diferentes
tipos de sistemas de arquivos.

A API é para a interface VFS, e não qualquer tipo
específico de sistema de arquivos.
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
11.9
Silberschatz, Galvin and Gagne ©2007
Visão esquemática do Virtual File System
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
11.10
Silberschatz, Galvin and Gagne ©2007
Implementação do diretório

Lista linear dos nomes com ponteiro para os
blocos de dados.
 simples de programar
 demorado para executar

Tabela de hash –lista linear com estrutura de
dados em hash.
 diminui tempo de busca de diretório
 colisões – situações onde dois nomes de
arquivos referem-se ao mesmo local
 tamanho fixo
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
11.11
Silberschatz, Galvin and Gagne ©2007
Métodos de alocação

Um método de alocação refere-se a como os
blocos de disco são alocados para arquivos:

Alocação contígua

Alocação vinculada

Alocação indexada
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
11.12
Silberschatz, Galvin and Gagne ©2007
Alocação contígua





Cada arquivo ocupa um conjunto de blocos
contíguos no disco
Simples – requer somente local inicial (#
bloco) e tamanho (número de blocos)
Acesso aleatório
Desperdício de espaço (problema de alocação
dinâmica de armazenamento )
Arquivos não podem crescer
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
11.13
Silberschatz, Galvin and Gagne ©2007
Alocação contígua

Mapeamento de lógico para físico
Q
LA/512
R
Bloco a ser acessado = ! + endereço inicial
Deslocamento no bloco = R
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
11.14
Silberschatz, Galvin and Gagne ©2007
Alocação contígua de espaço em disco
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
11.15
Silberschatz, Galvin and Gagne ©2007
Sistemas baseados em extensão

Muitos sistemas de arquivos mais novos (p.e.,
Veritas File System) usam um esquema de
alocação contígua modificado

Sistemas de arquivos baseados em extensão
alocam blocos de disco em extensões

Uma extensão é um bloco contíguo de discos
 Extensões são alocadas para alocação de
arquivo
 Um arquivo consiste em uma ou mais
extensões.
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
11.16
Silberschatz, Galvin and Gagne ©2007
Alocação vinculada

Cada arquivo é uma lista vinculada de blocos de disco:
blocos podem estar espalhados por todo o disco
bloco
=
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
ponteiro
11.17
Silberschatz, Galvin and Gagne ©2007
Alocação vinculada (cont.)




Simples – só precisa do endereço inicial
Sistema de gerenciamento do espaço livre– sem desperdício de
espaço
Sem acesso aleatório
Mapeamento
Q
LA/511
R
Bloco a ser acessado é o Q° bloco na cadeia vinculada de
blocos representando o arquivo.
Deslocamento no bloco = R + 1
Tabela de alocação de arquivos (FAT) – alocação de espaço em
disco usada pelo MS-DOS e OS/2.
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
11.18
Silberschatz, Galvin and Gagne ©2007
Alocação vinculada
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
11.19
Silberschatz, Galvin and Gagne ©2007
Tabela de alocação de arquivos
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
11.20
Silberschatz, Galvin and Gagne ©2007
Alocação indexada


Reúne todos os ponteiros no bloco de índice.
Visão lógica.
Tabela de índice
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
11.21
Silberschatz, Galvin and Gagne ©2007
Exemplo de alocação indexada
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
11.22
Silberschatz, Galvin and Gagne ©2007
Alocação indexada (cont.)




Precisa tabela de índice
Acesso aleatório
Acesso dinâmico sem fragmentação externa, mas tem overhead de
bloco de índice.
Mapeamento de lógico para físico em um arquivo de tamanho
máximo de 256K words e tamanho de bloco de 512 words. Só
precisamos de 1 bloco para tabela de índice.
Q
LA/512
R
Q = deslocamento na tabela de índice
R = deslocamento no bloco
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
11.23
Silberschatz, Galvin and Gagne ©2007
Alocação indexada – mapeamento (cont.)


Mapeamento de lógico a físico em um arquivo de
tamanho não limitado (tamanho de bloco de 512 words).
Esquema vinculado – Vincula blocos da tabela de índice
(sem limite no tamanho).
Q1
LA / (512 x 511)
R1
Q1 = bloco da tabela de índice
R1 é usado da seguinte forma:
Q2
R1 / 512
R2
Q2 = deslocamento para bloco da tabela de índice
R2 = deslocamento para bloco do arquivo
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
11.24
Silberschatz, Galvin and Gagne ©2007
Alocação indexada – mapeamento (cont.)

Índice de dois níveis (tamanho de arquivo máximo é 5123)
Q1
LA / (512 x 512)
R1
Q1 = deslocamento para índice externo
R1 é usado da seguinte forma:
Q2
R1 / 512
R2
Q2 = deslocamento para bloco da tabela de índice
R2 = deslocamento para bloco do arquivo
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
11.25
Silberschatz, Galvin and Gagne ©2007
Alocação indexada – mapeamento (cont.)

índice
externo
tabela de índice
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
11.26
arquivo
Silberschatz, Galvin and Gagne ©2007
Esquema combinado: UNIX (4K bytes por bloco)
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
11.27
Silberschatz, Galvin and Gagne ©2007
Gerenciamento de espaço livre

Vetor de bits (n blocos)
0 1
2
n-1
bit[i] =

…
0  bloco[i] livre
1  bloco[i] ocupado
Cálculo do número de bloco
(número de bits por word) *
(número de words de valor 0) +
deslocamento do primeiro bit 1
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
11.28
Silberschatz, Galvin and Gagne ©2007
Gerenciamento de espaço livre (cont.)





Mapa 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 de obter arquivos contíguos
Lista vinculada (lista livre)
 Não pode obter espaço contíguo facilmente
 Sem desperdício de espaço
Agrupamento
Contagem
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
11.29
Silberschatz, Galvin and Gagne ©2007
Gerenciamento de espaço livre (cont.)

Precisa proteger:
 Ponteiro para lista livre
 Mapa de bits
 Deve ser mantido em disco
 Cópias na memória e disco podem diferir
 Não pode permitir que bloco[i] tenha situação
onde bit[i] = 1 na memória e bit[i] = 0 em disco
 Solução:
 Defina bit[i] = 1 no disco
 Aloque bloco[i]
 Defina bit[i] = 1 na memória
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
11.30
Silberschatz, Galvin and Gagne ©2007
Implementação de diretório


Lista linear dos nomes de arquivo com ponteiro
para blocos de dados
 simples de programar
 demorado para executar
Tabela de hash – lista linear com estrutura de
dados da tabela de hash
 diminui tempo de busca de diretório
 colisões – situações onde dois nomes de
arquivo têm hash para o mesmo local
 tamanho fixo
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
11.31
Silberschatz, Galvin and Gagne ©2007
Lista vinculada de espaço livre em disco
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
11.32
Silberschatz, Galvin and Gagne ©2007
Eficiência e desempenho

Eficiência dependente de:
 alocação de disco e algoritmos de diretório
 tipos de dados mantidos na entrada de
diretório do arquivo

Desempenho
 cache de disco – seção separada da memória
principal para blocos usados freqüentemente
 free-behind e read-ahead – técnicas para
otimizar acesso seqüencial
 melhora desempenho do PC dedicando seção
da memória como disco virtual, ou disco de
RAM
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
11.33
Silberschatz, Galvin and Gagne ©2007
Cache de página

Um cache de página guarda páginas ao invés
de blocos de disco, usando técnicas de memória
virtual

E/S mapeada na memória usa um cache de
página

E/S de rotina pelo sistema de arquivos usa o
cache de buffer

Isso leva à figura a seguir
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
11.34
Silberschatz, Galvin and Gagne ©2007
E/S sem um cache de buffer unificado
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
11.35
Silberschatz, Galvin and Gagne ©2007
Cache de buffer unificado

Um cache de buffer unificado usa o mesmo
cache de página para guardar páginas
mapeadas na memória e E/S normal do
sistema de arquivos
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
11.36
Silberschatz, Galvin and Gagne ©2007
E/S usando um cache de buffer unificado
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
11.37
Silberschatz, Galvin and Gagne ©2007
Recuperação

Verificação de consistência – compara dados na
estrutura de diretórios com blocos de dados no
disco, e tenta consertar inconsistências

Usa programas do sistema para o backup de
dados do disco para outro dispositivo de
armazenamento (disquete, fita magnética, outro
meio magnético ou óptico)
Recupera arquivo ou disco perdido, restaurando
dados do backup

Operating System Concepts with Java – 7th Edition, Nov 15, 2006
11.38
Silberschatz, Galvin and Gagne ©2007
Sistemas de arquivos estruturados em log




Sistemas de arquivos estruturados em log (ou journaling)
registram cada atualização no sistema de arquivos como
uma transação
Todas as transações são gravadas em um log
 Uma transação é considerada confirmada depois de
gravada no log
 Porém, o sistema de arquivos pode ainda não estar
atualizado
As transações no log são gravada assincronamente no
sistema de arquivos
 Quando o sistema de arquivos é modificado, a transação
é removida do log
Se o sistema de arquivos falhar, todas as transações
restantes no log ainda precisam ser realizadas
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
11.39
Silberschatz, Galvin and Gagne ©2007
O Network File System (NFS) da Sun

Uma implementação e uma especificação de um
sistema de softeware para acessar arquivos
remotos pelas LANs (ou WANs)

A implementação faz parte dos sistemas
operacionais Solaris e SunOS rodando em
estações de trabalho Sun usando um protocolo de
datagrama não confiável (protocolo UDP/IP e
Ethernet)
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
11.40
Silberschatz, Galvin and Gagne ©2007
NFS (cont.)

Estações de trabalho interconectadas vistas como um
conjunto de máquinas independentes com sistemas de
arquivos independentes, permitindo o compartilhando entre
esses sistemas de arquivos de modo transparente
 Um diretório remoto é montado sobre um diretório do
sistema de arquivos local
 O diretório montado se parece com uma sub-árvore
integral do sistema de arquivos local, substituindo a
sub-árvore descendo do diretório local
 Especificação do diretório remoto para a operação mount
não é transparente; o nome de host do diretório remoto
precisa ser fornecido
 Arquivos no diretório remoto podem então ser
acessados de modo transparente
 Sujeito a verificação de direitos de acesso,
potencialmente qualquer sistema de arquivos (ou diretório
dentro de um sistema de arquivos) pode ser montado
remotamente em cima de qualquer diretório local
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
11.41
Silberschatz, Galvin and Gagne ©2007
NFS (cont.)



NFS foi criado para operar em ambiente heterogêneo de
diferentes máquinas, sistemas operacionais e
arquiteturas de rede; especificações NFS
independentes desses meios
Essa independência é alcançada por meio dos
primitivos RPC em cima de um protocolo External Data
Representation (XDR) usado entre duas interfaces
independentes de implementação
A especificação NFS distingue entre os serviços
fornecidos por um mecanismo de montagem e os
serviços reais de acesso a arquivo remoto
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
11.42
Silberschatz, Galvin and Gagne ©2007
Três sistemas de arquivo independentes
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
11.43
Silberschatz, Galvin and Gagne ©2007
Montagem no NFS
Montagens
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Montagens em cascata
11.44
Silberschatz, Galvin and Gagne ©2007
Protocolo de montagem do NFS





Estabelece conexão lógica inicial entre servidor e cliente
Operação mount inclui nome do diretório remoto a ser montado
e nome da máquina servidora que o armazena
 Requisição de mount é mapeada na RPC correspondente e
encaminhada para servidor de mount executando na
máquina servidora
 Lista de exportação – especifica sistemas de arquivos locais
que o servidor exporta para montagem, junto com os nomes
das máquinas que têm permissão para montá-los
Seguindo uma requisição de mount de acordo com sua lista de
exportação, o servidor retorna um handle de arquivo – uma
chave para outros acessos
Handle de arquivo – um identificador do sistema de arquivos e
um número de inode para identificar o diretório montado dentro
do sistema de arquivo exportado
A operação mount muda apenas a visão do usuário e não afeta
o lado do servidor
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
11.45
Silberschatz, Galvin and Gagne ©2007
Protocolo NFS




Oferece um conjunto de chamadas de procedimento remoto
para operações de arquivo remoto. Os procedimentos admitem
as seguintes operações:
 procurar um arquivo dentro de um diretório
 ler um conjunto de entradas de diretório
 manipular links e diretórios
 acessar atributos do arquivo
 ler e gravar arquivos
Servidores NFS são sem estado; cada requisição precisa
fornecer um conjunto completo de argumentos
(NFS V4 está aparecendo agora – muito diferente, com estado)
Dados modificados precisam ser confirmados no disco do
servidor antes que resultados sejam retornados ao cliente
(perde vantagens do caching)
O protocolo NFS não oferece mecanismos de controle de
concorrência
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
11.46
Silberschatz, Galvin and Gagne ©2007
Três principais camadas da arquitetura NFS



Interface de sistema de arquivos do UNIX (baseada nas
chamadas open, read, write e close, e descritores de arquivo)
Camada do Virtual File System (VFS) – distingue arquivos locais
dos remotos, e arquivos locais são diferenciados também de
acordo com seus tipos do sistema de arquivos
 O VFS ativa operações específicas ao sistema de arquivos
para lidar com requisições locais, de acordo com seus tipos
 Chama as procedures do protocolo NFS para requisições
remotas
Camada de serviço do NFS – camada inferior da arquitetura
 Implementa o protocolo NFS
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
11.47
Silberschatz, Galvin and Gagne ©2007
Visão esquemática da arquitetura do NFS
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
11.48
Silberschatz, Galvin and Gagne ©2007
Tradução de nome de caminho do NFS


Realizada dividindo-se o caminho em nomes
componentes e realizando-se uma chamada de
pesquisa do NFS separada para cada par de
nome de componente e vnode de diretório
Para tornar a pesquisa mais rápida, um cache de
pesquisa do nome de diretório no cliente mantém
os vnodes para nomes de diretório remotos
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
11.49
Silberschatz, Galvin and Gagne ©2007
Operações remotas do NFS





Correspondência quase um-para-um entre chamadas de
sistema regulares do UNIX e as RPCs do protocolo NFS
(exceto abrir e fechar arquivos)
NFS adere ao paradigma de serviço remoto, mas emprega
técnicas de buffering e caching por questão de desempenho
Cache de blocos de arquivo – quando um arquivo é aberto, o
kernel verifica com o servidor remoto se deve apanhar ou
revalidar os atributos em cache
 Blocos de arquivo em cache são usados apenas se os
atributos em cache correspondentes estiverem
atualizados
Cache de atributo de arquivo – o cache de atributo é
atualizado sempre que novos atributos chegam do servidor
Clientes não liberam blocos de escrita adiada até que o
servidor confirme que os dados forma gravados em disco
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
11.50
Silberschatz, Galvin and Gagne ©2007
Exemple: Sistema de arquivos WAFL





Usando em Network Appliance “Filers” – appliances do
sistema de arquivos distribuído
“Layout de arquivo para escrita em qualquer lugar”
Atende NFS, CIFS, http, ftp
E/S aleatória otimizada, escrita otimizada
 NVRAM para caching de escrita
Semelhante ao Berkeley Fast File System, com várias
modificações
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
11.51
Silberschatz, Galvin and Gagne ©2007
O layout de arquivo WAFL
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
11.52
Silberschatz, Galvin and Gagne ©2007
Snapshots no WAFL
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
11.53
Silberschatz, Galvin and Gagne ©2007
Um bloco de controle de arquivo típico
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
11.54
Silberschatz, Galvin and Gagne ©2007
Final do Capítulo 11
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Silberschatz, Galvin and Gagne ©2007
Download