SO-08 Sistemas de Arquivos
-
Upload
nicola-zagari -
Category
Technology
-
view
7.907 -
download
2
description
Transcript of SO-08 Sistemas de Arquivos
Sistemas Operacionais
Sistemas de Arquivos
2 Sistemas Operacionais Eduardo Nicola F. Zagari
Sistema de Arquivos Arquivos
➼ Atributos ➼ Operações ➼ Tipos
Diretórios Gerência de Espaço Livre
➼ Mapa de Bits (Vetor de Bits) ➼ Lista Ligada Simples ➼ Lista Ligada com Agrupamento ➼ Tabela de Blocos Livres Agrupados
Alocação de Espaço em Disco ➼ Alocação Contígua ➼ Alocação Encadeada (Lista Ligada) ➼ Lista Ligada usando Índice ➼ Alocação Indexada (Nó-I)
Implementações de Diretórios
3 Sistemas Operacionais Eduardo Nicola F. Zagari
Sistemas de Arquivos Para a maioria dos usuários, o Sistema de
Arquivos é o aspecto mais visível do SO É a parte do SO responsável pelo
armazenamento e acesso de dados e programas do SO e dos usuários
Consiste de: ➼ conjunto de arquivos ➼ estrutura de diretórios ➼ partição
4 Sistemas Operacionais Eduardo Nicola F. Zagari
Arquivos Computadores armazenam informação em
diferentes tipos de dispositivos físicos: ➼ fitas magnéticas ➼ discos magnéticos ➼ discos óticos, ...
SO abstrai as propriedades físicas do dispositivo definindo uma unidade de armazenamento lógica:
O SO associa cada arquivo a um dispositivo físico
O arquivo
5 Sistemas Operacionais Eduardo Nicola F. Zagari
Arquivos Arquivo é um conjunto nomeado de informações
que são gravadas em memória secundária ➼ Programas: código-fonte ou objeto ➼ Dados: numéricos , alfabéticos, alfanuméricos ou
binários Formato:
➼ Livre: arquivos-texto ➼ Rigidamente Formatado
Geralmente é uma seqüência de bits, bytes, linhas ou registros, cujo significado é definido pelo criador do arquivo ou pelo usuário.
6 Sistemas Operacionais Eduardo Nicola F. Zagari
Atributos Tipicamente:
➼ Nome: informação para consumo humano ➼ Tipo: necessário quando o SO diferencia tipos ➼ Localização: ponteiro para dispositivo físico e
localização dentro dele ➼ Tamanho: quantidade de bytes, palavras ou blocos do
arquivo (e, possivelmente, o tamanho máximo permitido) ➼ Proteção: informação de controle de acesso ao arquivo
(leitura, escrita, execução) ➼ Dono: dono do arquivo ➼ Data, hora e usuário: usado para (1) criação, (2) última
modificação e (3) último uso informação útil para proteção, segurança e monitoramento de uso
➼ Senha: utilizada no acesso
7 Sistemas Operacionais Eduardo Nicola F. Zagari
Operações Unix system calls :
➼ fd: descritor de arquivo = referência para tabela de arquivos
➼ fd = creat(nome, modo)
➼ fd = open(arq, como) ➼ s = close(fd)
➼ n = read(fd, buffer, nbytes) ➼ n = write(fd, buffer, nbytes)
➼ pos = lseek(fd, offset, inicio/atual/fim) ➼ s = stat(nome, &buf)
➼ s = chmod(nome, modo)
8 Sistemas Operacionais Eduardo Nicola F. Zagari
Tipos
16 bits Número mágico
Tamanho do código Tamanho dos dados
Tamanho do BSS Tamanho da tabela
de símbolos Ponto de entrada
Flags
Um arquivo binário
executável no Unix
Cab
eçal
ho
Código ≈ ≈
Dados ≈ ≈
Bits de relocação ≈ ≈
Tabela de símbolos ≈ ≈
.
.
.
.
.
.
9 Sistemas Operacionais Eduardo Nicola F. Zagari
Tipos
Um arquivo binário
não executável (biblioteca
de módulos) no Unix
Cabeçalho
Módulo objeto
Módulo objeto
Cabeçalho
Cabeçalho
Módulo objeto
Nome do módulo Data
Proprietário Proteção Tamanho
10 Sistemas Operacionais Eduardo Nicola F. Zagari
Diretórios O sistema de arquivo pode ser grande para se
gerenciar os dados, torna-se necessários organizá-los
A organização é feita em duas partes: ➼ O sistema é dividido em partições (volumes):
• cada disco contém pelo menos uma partição • usadas para fornecer áreas separadas em disco cada uma
é tratada como um dispositivo de armazenamento diferente • alguns sistemas permitem que uma partição agrupe vários
discos em uma única estrutura lógica
11 Sistemas Operacionais Eduardo Nicola F. Zagari
Diretórios ➼ Cada partição contém informação sobre os arquivos
que ela armazena: • mantida em diretório de dispositivo ou tabela de conteúdo
do volume (mais conhecido como diretório) • o diretório registra informações como nome, localização,
tamanho, tipo, etc...
arquivos diretório
arquivos
diretório
arquivos diretório
Partição A
Partição B
Partição C Disco 1
Disco 2
Disco 3
12 Sistemas Operacionais Eduardo Nicola F. Zagari
Gerência de Espaço Livre
São possíveis duas estratégias genéricas para armazenamento de arquivos: ➼ alocação de n bytes consecutivos no disco
• apresenta um problema óbvio quando o arquivo cresce... ➼ alocação de blocos não necessariamente contíguos
Tamanho do Bloco: ➼ Candidatos a serem a unidade de alocação: o tamanho do setor, da
trilha, do cilindro e da página (se SO paginado) ➼ Unid. de alocação grande: provável desperdício de memória ➼ Unid. de alocação pequena: baixa taxa de transferência
Para poder criar arquivos, o SO precisa saber se há blocos livres e quais são lista de espaço livre
13 Sistemas Operacionais Eduardo Nicola F. Zagari
Mapa de Bits (Vetor de Bits) Cada entrada da tabela aponta para um bloco Define-se:
Simples Consome muito espaço de memória: Exemplo: 2, 3, 4, 5, 8, 9, 10, 11, 12, 13, 17, 18, 25, 26 e 27 livres
Livre = 1 ocupado = 0
Disco: 1,3 Gbytes Bloco: 512 bytes Bitmap: 333k
00111100 11111100 01100000 01110000
Usado quando se tem espaço na memória
principal para todo o vetor
14 Sistemas Operacionais Eduardo Nicola F. Zagari
Lista Ligada Simples Cada bloco livre aponta para o próximo livre Acesso seqüencial Ineficiente
Primeiro bloco livre
1 5 9 13 17
2 6
10 14 18
3 7
11 15 19
4 8
12 16
0
15 Sistemas Operacionais Eduardo Nicola F. Zagari
Lista Ligada com Agrupamento Os endereços dos n primeiros blocos livres são
armazenados no primeiro bloco. Os primeiros n-1 endereços estão disponíveis e o último endereço aponta para outro bloco com endereços livres
42 136 210 97 41 63 21 147 48 ≈ ≈
230 162 612 342 160 664 216 320 482 ≈ ≈
86 234 897 422 140
≈ ≈
Ex.: Blocos de 1K End. do bloco: 16 bits cada bloco guarda 511 blocos livres Disco de 20M 20K blocos precisa, no máximo, de uma lista ligada de 40 blocos
16 Sistemas Operacionais Eduardo Nicola F. Zagari
23
Tabela de Blocos Livres (Contagem) Geralmente blocos contíguos são alocados ou
liberados simultaneamente Encontrar um número grande de blocos livres é
mais rápido Tabela é menor
7
5 1
30 5
Bloco 4 18
35 253
Contador
17 Sistemas Operacionais Eduardo Nicola F. Zagari
Métodos de Alocação de Espaço em Disco
A natureza do acesso direto aos discos permite flexibilidade na implementação de arquivos
A questão principal do projeto de um Sistema de Arquivos é:
Como alocar espaço aos arquivos de modo que o uso do espaço em disco seja
eficaz e que o acesso aos dados seja rápido?
18 Sistemas Operacionais Eduardo Nicola F. Zagari
Alocação Contígua Cada arquivo deve ocupar um conjunto de blocos
contíguo no disco Vantagens:
➼ Simples de implementar guardar apenas o end. do 1o bloco ➼ Acessos seqüencial e direto facilitados ➼ Excelente performance leitura em uma única operação
Dificuldade: achar espaço para novo arquivo seqüência de blocos livres igual ou maior que o arquivo
A alocação de blocos em uma área contígua pode ser feita através de algoritmos de estratégia de alocação como o First-Fit, Best-Fit e Worst-Fit.
19 Sistemas Operacionais Eduardo Nicola F. Zagari
Alocação Contígua Desvantagens:
➼ Necessário conhecer o tamanho dos arquivos no instante de sua criação (se reservar pouco necessidade de cópia, se reservar muito desperdício)
➼ Fragmentação do disco compactação é cara.
1 5 9 13 17
2 6
10 14 18
3 7
11 15 19
4 8
12 16
0 Arquivo prog.c a.out
leiame arq.txt
Início 0 14 19 6
Tamanho 2 3 1 2
Diretório
20 Sistemas Operacionais Eduardo Nicola F. Zagari
Espaço alocado é mantido através de uma lista ligada de blocos uma parte do bloco guarda a referência para o próximo
Alocação com Lista Ligada
Dados
4 bytes próximo bloco
512 bytes
1 5 9 13 17
10 3 12 x
2 6
10 14 18
11 2 14
3 7
11 15 19
7
x
4 8
12 16
0 Arquivo prog.c a.out
Início 4 6
Tamanho 5 4
Diretório Para criar um arquivo: Início (1o bloco) = -1 Tamanho = 0 Para escrever: Aloca-se um bloco etc
21 Sistemas Operacionais Eduardo Nicola F. Zagari
Alocação com Lista Ligada Vantagens:
➼ Não existe fragmentação ➼ Entrada do diretório tb armazena apenas o end. do 1o bloco
Desvantagens: ➼ Acesso randômico (mais lento) ➼ O acesso direto é feito seqüencialmente ➼ Tamanho útil do bloco (≠ potência de 2) ➼ Espaço perdido com os ponteiros para próximo bloco solução:
clusters ➼ Confiabilidade: erro em qualquer um dos blocos do arquivo torna
impossível recuperação do restante ➼ solução parcial: lista duplamente ligada
22 Sistemas Operacionais Eduardo Nicola F. Zagari
Alocação com Lista Ligada usando um Índice
Similar ao método anterior, colocando-se os ponteiros que encadeiam os blocos em tabela ou índice na memória
A tabela fica no início de cada partição e é usada como uma lista ligada
FAT (File Allocation Table)
nome prog.c ...
bloco inicial
4
Entrada no diretório
a.out ... 6
eof
0 0 10 11 7 0 3 2 0 0
FAT
0 1 2 3 4 5 6 7 8 9
12 14 0
eof
10 11 12 13 14
23 Sistemas Operacionais Eduardo Nicola F. Zagari
Alocação com Lista Ligada usando um Índice
Vantagens: ➼ Bloco fica livre para armazenamento apenas da
informação ➼ Apesar de randômico, o acesso é baseado na cadeia
que está inteiramente na memória principal (basta realizar a busca na FAT)
➼ Entrada no diretório precisa conter apenas o número do bloco inicial
Desvantagem: ➼ Tabela deve permanecer na memória durante todo o
tempo • Disco de 500.000 blocos • Blocos de 1K • Tabela com 500.000 entradas vezes 4 bytes = 2 MBytes
500 MBytes
24 Sistemas Operacionais Eduardo Nicola F. Zagari
Alocação Indexada (Nó-I)
Assim como lista ligada, resolve problemas relativos à: ➼ tamanho do arquivo ➼ fragmentação externa ➼ suporte a acesso direto alocação encadeada
... além do problema da grande tabela em memória... Consiste em associar a cada arquivo uma pequena tabela de
índices (nó-i), que lista seus atributos e endereços em disco (um vetor de endereços)
O diretório contém o endereço da tabela de índices Permite acesso direto ao n-ésimo bloco
➼ é só ler a n-ésima entrada do nó-i.
alocação contígua
25 Sistemas Operacionais Eduardo Nicola F. Zagari
Alocação Indexada (Nó-I)
1
9
13
17
2
6
10
14
18
3
7
11
19
4
8
12
16
0
Arquivo prog.c
Início 15
Diretório
4 7 2 10 12
15
5
15
26 Sistemas Operacionais Eduardo Nicola F. Zagari
Alocação Indexada (Nó-I)
Desvantagem: Se o arquivo for pequeno, gasta-se um bloco por índice
Solução: índices encadeados (vários níveis) ➼ Os primeiros endereços são armazenados no próprio nó-
i arquivos pequenos ➼ Um dos endereços apontados pelo nó-i é o endereço do
bloco indireto simples, que aponta para endereços do arquivo no disco
➼ Outro apontador do nó-i é para o bloco indireto duplo, que contém uma lista de blocos de endereço simples
➼ Existe ainda o bloco indireto triplo
27 Sistemas Operacionais Eduardo Nicola F. Zagari
Para abrir um arquivo o SO usa o nome do caminho para localizar sua entrada no diretório
Dependendo do sistema, tal entrada fornece informações do tipo: ➼ endereço do bloco (alocação contígua) ➼ número do primeiro bloco (alocação com listas ligadas) ➼ número do nó-i relativo ao arquivo (alocação indexada)
Outro aspecto a ser considerado é onde os atributos dos arquivos devem estar armazenados: diretamente na entrada do diretório ou nos nós-i, no caso dos sistemas que usam alocação indexada
Implementação de Diretórios
28 Sistemas Operacionais Eduardo Nicola F. Zagari
Diretórios no MS-DOS
Setor de boot: ➼ começa com um desvio incondicional para código de
boot ➼ lista de parâmetros: no de bytes por setor, no de
setor por bloco, no de arquivo na tabela de alocação, tamanho do diretório raiz, ...
➼ Tabela de partição (máximo 4): uma deve ser ativa
Partição 1 Partição 2 Partição 3 Part. 4
Cópia opcional da FAT
Tab. de alocação de arquivos Diretório-raiz
FAT
Setor primário de boot
Setor secundário de boot
≈ ≈
Blocos de dados
29 Sistemas Operacionais Eduardo Nicola F. Zagari
Diretórios no MS-DOS
Nome e extensão: o ponto não é armazenado Atributos: contém os seguintes bits
➼ A - 1 quando arquivo é modificado ➼ D - 1 quando for diretório ➼ V - 1 quando for nome do volume ➼ S - 1 arquivo do sistema ➼ H - 1 arquivo escondido ➼ R - 1 arquivo não pode ser escrito
Não se pode ter link não se pode ter 2 entradas com mesmo número inicial de bloco
Nome do arquivo Tamanho 8 3 1 10 2 4
Extensão Atributos
Reservado Hora
2 2
Data Número do 1o bloco
30 Sistemas Operacionais Eduardo Nicola F. Zagari
Diretórios no UNIX
Bloco de boot: não é usado pelo UNIX e muitas vezes contém o código de boot
Super-bloco: no de nós-i, no de blocos e início da lista de blocos livres (crítico para o sistema)
Nós-i: atrib. do arquivo mais a localização dos blocos Blocos de dados: armazenam arquivos e diretórios
Super -Bloco
Bloco de boot ≈
≈
Blocos de dados Nós-I
31 Sistemas Operacionais Eduardo Nicola F. Zagari
Diretórios no UNIX
Os atributos não estão armazenados na entrada do diretório, mas no nó-i
Ex.: /usr/enfz/mbox
Nome do arquivo No do nó-i 2 14 ou 255 (dependendo da versão)
1 1 4
. ..
bin
Diretório raiz
7 14
dev Arq.txt
9 6
etc usr
8 tmp Procura usr Obtém nó-i 6
Modo Tamanho Tempos
Nó-i 6
132
usr está no bloco 132
6 1 19
. ..
ast
Bloco 132: /usr
30 51
enfz lff
26 45
lgsj rcmp
Procura /usr/enfz Obtém nó-i 30
Modo Tamanho Tempos
Nó-i 30
406
/usr/enfz está no bloco 406
30 6 64
. ..
Prog1.c
Bl. 406: /usr/enfz
92 60
books mbox
81 17
minix src
Procura /usr/enfz/mbox Obtém nó-i 60
32 Sistemas Operacionais Eduardo Nicola F. Zagari
Diretórios no UNIX
Modo Contador de
ligações Gid
Nó-i
Uid
Tempos
Indireto único
Indireto duplo
Tamanho do arquivo
Indireto triplo
End dos primeiros 10 blocos de disco
Bloco Indireto Triplo Bloco Indireto Duplo
Bloco Indireto Único