O documento discute diferentes aspectos dos sistemas de arquivos, incluindo: 1) arquivos e seus atributos; 2) métodos para alocar espaço em disco, como alocação contígua e lista ligada; 3) estruturas de dados para gerenciar espaço livre, como mapa de bits, lista ligada e tabela.
2. 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
2
Sistemas Operacionais
Eduardo Nicola F. Zagari
3. 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
3
Sistemas Operacionais
Eduardo Nicola F. Zagari
4. Arquivos
Computadores armazenam informação em
diferentes tipos de dispositivos físicos:
➼ fitasmagnéticas
➼ discos magnéticos
➼ discos óticos, ...
SO abstrai as propriedades físicas do
dispositivo definindo uma unidade de
armazenamento lógica:
O arquivo
O SO associa cada arquivo a um dispositivo
físico
4
Sistemas Operacionais
Eduardo Nicola F. Zagari
5. 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.
5
Sistemas Operacionais
Eduardo Nicola F. Zagari
6. 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
6
Sistemas Operacionais
Eduardo Nicola F. Zagari
7. 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)
7
Sistemas Operacionais
Eduardo Nicola F. Zagari
8. Tipos
16 bits
Um arquivo Número mágico .
binário Tamanho do código
.
.
executável Tamanho dos dados
Cabeçalho
Tamanho do BSS ≈ Código ≈
no Unix Tamanho da tabela
de símbolos
Ponto de entrada ≈ Dados ≈
Flags Bits de
≈ relocação ≈
.
. Tabela de
. ≈ símbolos ≈
8
Sistemas Operacionais
Eduardo Nicola F. Zagari
9. Tipos
Um arquivo Cabeçalho
Nome do módulo
binário Módulo Data
não objeto Proprietário
executável Proteção
(biblioteca Cabeçalho Tamanho
de módulos) Módulo
objeto
no Unix
Cabeçalho
Módulo
objeto
9
Sistemas Operacionais
Eduardo Nicola F. Zagari
10. 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
10
Sistemas Operacionais
Eduardo Nicola F. Zagari
11. 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...
diretório diretório
Partição A Disco 2
arquivos
Disco 1 Partição C
diretório arquivos
Partição B Disco 3
arquivos
11
Sistemas Operacionais
Eduardo Nicola F. Zagari
12. 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
12
Sistemas Operacionais
Eduardo Nicola F. Zagari
13. Mapa de Bits (Vetor de Bits)
Cada entrada da tabela aponta para um bloco
Define-se:
Livre = 1
ocupado = 0
Simples
Disco: 1,3 Gbytes
Consome muito espaço de memória: Bloco: 512 bytes
Exemplo: Bitmap: 333k
2, 3, 4, 5,
00111100 Usado quando
8, 9, 10, 11, 12, 13, 11111100 se tem espaço
17, 18, 01100000 na memória
principal para
25, 26 e 27 livres 01110000 todo o vetor
13
Sistemas Operacionais
Eduardo Nicola F. Zagari
14. Lista Ligada Simples
Cada bloco livre aponta para o próximo livre
Acesso seqüencial
Ineficiente
0 1 2 3
Primeiro
4 5 6 7
bloco
livre 8 9 10 11
12 13 14 15
16 17 18 19
14
Sistemas Operacionais
Eduardo Nicola F. Zagari
15. 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 230 86
Ex.: Blocos de 1K
136 162 234 End. do bloco: 16 bits
210 612 897
97 342 422 cada bloco guarda 511
41 160 140 blocos livres
63 664
21 216 Disco de 20M
≈
147
≈ ≈
320
≈ ≈ ≈ 20K blocos
48 482 precisa, no máximo, de
uma lista ligada de 40 blocos
15
Sistemas Operacionais
Eduardo Nicola F. Zagari
16. 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
Bloco 4 5 Contador
18 1
23 7
35 30
253 5
16
Sistemas Operacionais
Eduardo Nicola F. Zagari
17. 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?
17
Sistemas Operacionais
Eduardo Nicola F. Zagari
18. 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.
18
Sistemas Operacionais
Eduardo Nicola F. Zagari
19. 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.
Diretório
Arquivo Início Tamanho
0 1 2 3
prog.c 0 2
4 5 6 7 a.out 14 3
8 9 10 11 leiame 19 1
12 13 14 15 arq.txt 6 2
16 17 18 19
19
Sistemas Operacionais
Eduardo Nicola F. Zagari
20. Alocação com Lista Ligada
Espaço alocado é mantido através de uma lista
ligada de blocos uma parte do bloco guarda a
referência para o próximo
512 bytes
Dados
4 bytes próximo bloco
0 1 2 10 3 11 Diretório Para criar um arquivo:
Arquivo Início Tamanho
47 5 63 72
prog.c 4 5
Início (1o bloco) = -1
8 9 1012 1114 a.out 6 4 Tamanho = 0
12 x 13 14 x 15
16 17 18 19
Para escrever:
Aloca-se um
bloco etc
20
Sistemas Operacionais
Eduardo Nicola F. Zagari
21. 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
21
Sistemas Operacionais
Eduardo Nicola F. Zagari
22. 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) 0 1
0
0
2 10
3 11
4 7
Entrada no diretório 5 0
6 3
prog.c ... 4
7 2 FAT
8 0
a.out ... 6 9 0
nome bloco 10 12
inicial 11 14
12 eof
13 0
14 eof
22
Sistemas Operacionais
Eduardo Nicola F. Zagari
23. 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 500 MBytes
• Blocos de 1K
• Tabela com 500.000 entradas vezes 4 bytes = 2 MBytes
23
Sistemas Operacionais
Eduardo Nicola F. Zagari
24. Alocação Indexada (Nó-I)
Assim como lista ligada, resolve problemas relativos à:
➼ tamanho do arquivo
alocação contígua
➼ 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.
24
Sistemas Operacionais
Eduardo Nicola F. Zagari
26. 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
26
Sistemas Operacionais
Eduardo Nicola F. Zagari
27. Implementação de Diretórios
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
27
Sistemas Operacionais
Eduardo Nicola F. Zagari
28. Diretórios no MS-DOS
Setor primário
de boot Partição 1 Partição 2 Partição 3 Part. 4
Tab. de alocação
Setor secundário Diretório-raiz
de arquivos
de boot
≈ ≈
FAT
Cópia opcional Blocos de dados
da FAT
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
28
Sistemas Operacionais
Eduardo Nicola F. Zagari
29. Diretórios no MS-DOS
8 3 1 10 2 2 2 4
Nome do arquivo Tamanho
Extensão Reservado Data
Atributos Hora Número do 1o bloco
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
29
Sistemas Operacionais
Eduardo Nicola F. Zagari
30. Diretórios no UNIX
Bloco de
≈ ≈
boot
Nós-I Blocos de dados
Super -Bloco
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
30
Sistemas Operacionais
Eduardo Nicola F. Zagari
31. Diretórios no UNIX
2 14 ou 255 (dependendo da versão)
No do nó-i
Nome do arquivo
Os atributos não estão armazenados na entrada
do diretório, mas no nó-i
Ex.: /usr/enfz/mbox
Diretório raiz Nó-i 6 Bloco 132: /usr Nó-i 30 Bl. 406: /usr/enfz
1 . Modo 6 . Modo 30 .
1 .. Tamanho 1 .. Tamanho 6 ..
4 bin Tempos 19 ast Tempos 64 Prog1.c
7 dev 132 30 enfz 406 92 books
14 Arq.txt 51 lff 60 mbox
9 etc 26 lgsj 81 minix
6 usr usr está no 45 rcmp /usr/enfz está 17 src
8 tmp bloco 132 Procura /usr/enfz no bloco 406
Procura usr Obtém nó-i 30 Procura /usr/enfz/mbox
Obtém nó-i 6 Obtém nó-i 60
31
Sistemas Operacionais
Eduardo Nicola F. Zagari
32. Diretórios no UNIX
Nó-i
Modo
Contador de
ligações
Uid
Gid
Tamanho do
arquivo
Tempos
End dos
primeiros
10 blocos
de disco
Indireto único
Indireto duplo
Indireto triplo
Bloco Indireto Triplo
Bloco Indireto Duplo
Bloco Indireto Único
32
Sistemas Operacionais
Eduardo Nicola F. Zagari