Title: Mitsuo Takaki
1Sistemas de Arquivos
Sistemas Operacionais
Mitsuo Takaki
2Capítulo 6 Sistemas de Arquivos
6.1 Arquivos 6.2 Diretórios 6.3 Implementação
3Capítulo 6 Sistemas de Arquivos
6.1 Arquivos 6.2 Diretórios 6.3 Implementação
4Arquivos
- É um mecanismo de abstração.
- Oferece meios de armazenar e ler informações no
disco. - Deve ser feito de forma que o usuário não se
atenha a detalhes de como isto é feito. - Uma das características mais importantes é como
os objetos são gerenciados e nomeados.
5Nomeação de Arquivos
- Quando um processo cria um arquivo, um nome é
dado a ele. - Este arquivo pode ser posteriormente buscado pelo
nome dado. - As regras variam de SO para SO.
- No Unix os caracteres minúsculos e maiúsculos são
diferentes.
6Nomeação de Arquivos - Extensões
- No windows, a extensão determina o tipo de
arquivo. - JPEG, arquivo de imagens no formato JPEG.
- EXE, arquivo executável.
- C, arquivo fonte da linguagem C.
- É criada uma tabela de associação de formato a um
programa para abrí-lo.
7Nomeação de Arquivos - Extensões
- No Unix um arquivo pode ter qualquer extensão e
mais de uma. - As extensões servem apenas como dica do formato
do arquivo. - .tar.gz já informa o usuário que o arquivo foi
empacotado usando o tar e zipado usando o gz.
8Nomeação de Arquivos - Extensões
- Alguns programas podem exigir arquivos em um
determinado formato e uma determinada extensão. - O gcc exige arquivos no formato .C ou .CPP.
- .c arquivo fonte da linguagem C.
- .cpp arquivo fonte da linguagem C.
9Estrutura de Arquivos
10Estrutura de Arquivos
- Podem seguir uma estrutura pré-determinada.
- Ou podem ser apenas uma sequência de bytes (a).
- Esta é a forma mais usada.
- Quem determina o significado do arquivo é o
programa que o abre. - Os programas podem inserir qualquer dado sem se
preocupar com nenhuma estrutura.
11Estrutura de Arquivos
- Outra forma é utilizar registros de tamanhos
fixos (b). - Pode ser utilizada uma árvore de registros (c).
- Podem possuir diferentes tamanhos.
- Melhor tempo de busca de um determinado registro.
12Tipos de Arquivos
- Arquivos regulares são arquivos que possuem
informações do usuário. - Diretórios são arquivos do sistema que mantém a
estrutura dos arquivos do disco. - Arquivos especiais de caracteres são relacionados
a E/S. - No linux /dev/hda5
- Representa o HD a, quinta partição.
13Tipos de Arquivos
- São geralmente
- ASCII, constituídos de linhas de texto.
- Em alguns sistemas cada linha termina com um
caractere de carriage return. - Em outros é usado o caractere de line feed.
- Em alguns, ambos são usados.
- Binário, possuem estrutura interna conhecida pelo
programa que o usa.
14Tipos de Arquivos
(a) Arquivo executável (b) Repositório
15Tipos de Arquivos Binário Executável
- Só é executado se possui uma estrutura
apropriada. - Formado por cinco partes
- Cabeçalho.
- Texto.
- Dados.
- Bits de relocação.
- Tabela de simbolos.
16Tipos de Arquivos Binário Executável
- O cabeçalho começa pelo número mágico.
- Número pré-determinado que o identifica como
executável. - Usado para impedir execução de arquivos que não
estejam no formato adequado.
17Tipos de Arquivos Repositório
- Usado no Unix.
- Composto por procedimentos de bibliotecas
(módulos) compilados. - Não estão ligados.
- Cada módulo possui um cabeçalho indicando nome,
data de criação, proprietário, código de proteção
e tamanho.
18Tipos de Arquivos
- Todo SO deve ser capaz de reconhecer pelo menos
um tipo de arquivo. - O seu próprio executável.
19Acesso aos Arquivos
- Tipos de acessos
- Sequêncial, utilizado nos primeiros SOs.
- Ideal para meios de armazenamento sequênciais,
como fitas magnéticas. - Aleatório.
- SOs modernos utilizam apenas este tipo.
20Atributos de Arquivos
21Atributos de Arquivos
- Além do nome e dos dados, os SOs associam outras
informações a cada arquivos. - Chamadas de atributos.
- Variam para cada SO.
22Operações com Arquivos
- Os SOs realizam diferentes operações. As mais
comuns são - Create, cria o arquivo sem dados.
- Usado para anunciar que o arquivo existe e
definir alguns atributos. - Delete, remove o arquivo.
- Open, realizado antes de usar um arquivo.
- O SO busca o arquivo e põe na memória principal
os atributos e lista de endereços do disco. - Alguns SOs limitam o número de arquivos abertos.
23Operações com Arquivos
- Close, realizado quando o processo termina de
usar o arquivo. - Força a escrita do último bloco do arquivo.
- Read, lê os dados do arquivo na posição atual.
- Deve ser definida quantidade de dados necessários
para fornecer um buffer. - Write, escreve os dados na posição atual.
- Se a posição atual estiver no final do arquivo,
este sofrerá um aumento no tamanho. - Se a posição estiver no meio do arquivo, os dados
posteriores serão sobrescritos.
24Operações com Arquivos
- Append, chamada restrita de Write.
- Só permite escrita no final do arquivo, não
permite sobrescrevê-lo. - Seek, busca uma posição no arquivo.
- Modifica o ponteiro que aponta para uma posição
dentro do arquivo. - Get Attributes, lê os atributos do arquivo.
- O make do Unix verifica os momentos de alteração
dos arquivos fonte e arquivos objeto usando esta
operação.
25Operações com Arquivos
- Set Attributes, define atributos do arquivo.
- Alguns atributos podem ser alterados pelo
usuário. - Rename, modifica o nome do arquivo.
26Arquivos Mapeados em Memória
- Acessar arquivos usando chamadas ao sistema de
arquivos pode ser uma tarefa tediosa. - Alguns SOs fornecem um mapeamento de arquivos na
memória. - No espaço de endereçamentodo processo em execução.
27Arquivos Mapeados em Memória
- Conceitualmente, vão existir duas rotinas
- Map, que retorna um endereço virtual onde o
arquivo foi mapeao. - Unmap, remove o arquivo da memória principal.
- Quando um processo acessa a posição x da memória,
onde o arquivo foi mapeado, a posição 0 do
arquivo está sendo lida.
28Arquivos Mapeados em Memória
Espaço de endereçamento de um processo.
29Arquivos Mapeados em Memória
- Ao término do uso do arquivo, o arquivo é salvo
no disco como se tivesse sido usado chamadas ao
sistema de arquivos. - As tabelas internas são alteradas para que o
arquivo se torne um armazenamento sobressalente. - Uma leitura no endereço virtual do mapeamento
gera uma falta de página. - O arquivo é trazido à memória.
- Quando a pa?ina é removida, o arquivo é escrito
no disco.
30Arquivos Mapeados em Memória
- Funciona melhor em sistemas que usam segmentação.
- Cada arquivo pode ser mapeado em seu próprio
segmento. - O byte k do segmento é o byte k do arquivo.
31Arquivos Mapeados em Memória
(a) Processo com dois segmentos código e
dados. (b) Após o mapeamento do arquivo abc e,
ao término, arquivo xyz será criado.
32Arquivos Mapeados em Memória
- Vantagem
- Elimina chamadas ao sistema de arquivos.
- Facilita programação.
- Desvantagem
- O SO não sabe o tamanho exato do arquivos no
momento da escrita do arquivo. - Pode ser usado o tamanho máximo da página ou do
segmento. - Estimação do tamanho, não tem certeza.
33Arquivos Mapeados em Memória
- Compartilhamento, quando um processo lê um
arquivo que está sendo escrito por outro
processo. - O arquivo só possuirá as modificações quando a
página for retirada da memória. - O arquivo pode ser maior que o segmento ou maior
que todo espaço virtual de endereçamento. - Solução mapear somente uma parte do arquivo.
34Capítulo 6 Sistemas de Arquivos
6.1 Arquivos 6.2 Diretórios 6.3 Implementação
35Sistemas de Diretórios
- Controla o armazenamento/localização dos
arquivos. - Pode ser um arquivo também, dependendo do SO.
- Pode ser implementado de diversas formas.
36Nível Único
- Mais simples implementação de um sistema de
diretórios. - Um único diretório possui todos os arquivos.
- Chamado de diretório-raiz.
- Usado nos primeiros PCs.
- Por possuir apenas um usuário.
37Nível Único
A,B e C são os proprietários dos arquivos.
38Nível Único
- Vantagens
- Fácil de implementar.
- Fácil localização de arquivos.
- Desvantagem
- Sistemas com vários usuários podem criar arquivos
com mesmo nome. - O arquivo será perdido e sobrescrito com o novo.
39Nível Único
- Não é mais utilizado em PCs por razões óbvias.
- Pode ser utilizado em sistemas embarcados.
- Devido limitações de usabilidade e hardware.
- Sistemas que existe apenas um único usuário.
40Dois Níveis
- Resolve conflitos de usuários.
- Um diretório oferecido para cada usuário.
- Está implicito que o SO identifica o usuário e já
sabe qual é o seu diretório. - O usuário só tem acesso ao seu diretório.
- Na sua forma mais básica de implementação.
- Pode ser extendido e permitir acesso a arquivos
de outros usuários.
41Dois Níveis
42Dois Níveis
- Acesso ao diretório de outros usuários permite
separar um diretório para programas do sistema. - Sem isto, haveria uma cópia dos programas do
sistema no diretório de cada usuário. - Tem problemas quando o usuário possui muitos
arquivos. - Um usuário pode querer arquivos com mesmo nome.
- Uma organização melhor é necessária para
identificar os arquivos.
43Diretórios Hierárquicos
- Os arquivos são organizados de acordo com o
usuário. - É criada uma hierarquia de diretórios.
- É utilizado até hoje.
44Diretórios Hierárquicos
45Nomes de Caminhos
- Em um sistema de arquivos organizado como árvore,
é necessário um método de especificar um arquivo. - São utilizados dois métodos
- Nome de caminho absoluto.
- Nome de caminho relativo.
46Nome de Caminho Absoluto
- Representa o caminho da raiz à folha (arquivo) da
árvore. - Exemplo /var/www/index.html
- Existe um diretório chamado var
- /var possui um subdiretório chamado www
- O subdiretório www possui um arquivo chamado
index.html
47Nome de Caminho Absoluto
- Quando o primeiro caractere é um separador, então
o caminho absoluto está sendo usado. - O caractere separador é específico de cada SO.
- Windows \
- Linux /
48Nome de Caminho Relativo
- Usado em conjunto com o conceito de diretório de
trabalho. - Também chamado de diretório atual.
- Todos os caminhos que não começam na raiz, são
assumidos como relativos ao diretório atual.
49Nome de Caminho Relativo
- Se o diretório atual for /var/www, o arquivo
index.html pode ser acessado diretamente, sem o
uso do caminho absoluto. - Cada processo possui um diretório de trabalho.
- Um arquivo pode ser acessado usando o caminho
relativo. - Permite que um diretório de trabalho seja
modificado sem afetar os outros processos.
50Nomes de Caminho
- A maioria dos SOs que suportam sistema de
diretório hierárquico, possuem duas entradas
especiais - . (ponto)
- Refere-se ao diretório atual.
- .. (ponto-ponto)
- Refere-se ao diretório pai.
51Operações com Diretórios
- As operações variam para cada SO. As mais comuns
são - Create, cria um diretório vazio.
- Exceto pelo ponto e ponto-ponto.
- Geralmente inseridos pelo programa mkdir.
- Delete, remove um diretório.
- O diretório deve estar vazio para ser removido.
- Ponto e ponto-ponto não são contados neste caso.
- Opendir, abre o diretório.
- Antes de ser lido, o diretório deve ser aberto.
- Após a abertura, está pronto para listar os
arquivos.
52Operações com Diretórios
- Closedir, fecha o diretório.
- Deve ser fechado para liberação de espaço na
tabela interna. - Readdir, retorna a próxima entrada do diretório
aberto. - Antes era feito usando a chamada de sistema read,
porém o programador precisaria conhecer a
estrutura interna usada pelo sistema de
diretórios. - Permite ler o diretório de forma padronizada.
53Operações com Diretórios
- Rename, modifica o nome do diretório.
- Link, técnica chamada de ligação (link).
- Permite que um arquivo apareça em mais de um
diretório, ao mesmo tempo. - A chamada tem como entrada um diretório e um
arquivo existente. - Incrementa o contador do i-node do arquivo.
54Operações com Diretórios
- Unlink, remove uma entrada do diretório.
- Se o arquivo existe somente neste diretório, o
arquivo é fisicamente removido. - Caso exista em outros diretórios, somente o
caminho especificado é removido. - O delete na verdade é um unlink.
55Capítulo 6 Sistemas de Arquivos
6.1 Arquivos 6.2 Diretórios 6.3 Implementação
56Implementação do Sistema de Arquivos
- Como o sistema de arquivos funciona sob a ótica
do programador.
57Esquema do Sistema de Arquivos
- Os arquivos são armazenados em discos.
- Os discos geralmente são divididos em partições.
- Cada partição pode possuir um sistema de arquivos
diferente. - O setor 0 (zero) do disco é chamado de MBR
(Master Boot Record). - Usado para iniciar o computador.
- No fim da MBR tem uma tabela com os endereços
finais e iniciais de cada partição. - Uma das partições é marcada como ativa.
58Esquema do Sistema de Arquivos
- Quando o computador inicia, a BIOS lê e executa o
MBR. - Localizar a partição ativa.
- Lê seu primeiro bloco (bloco de boot).
- Executa o programa no bloco de boot.
- O programa no bloco de boot carrega o SO contido
naquela partição. - Toda partição contém um bloco de boot, mesmo sem
ter nenhum SO. - Futuramente ela poderá ter um SO.
59Esquema do Sistema de Arquivos
60Esquema do Sistema de Arquivos
- Logo após o bloco de boot está o superbloco.
- Contém todos os principais parâmetros sobre o
sistema de arquivos. - É lido quando o computador é iniciado ou quando o
sistema de arquivos é usado pela primeira vez. - Possui um número mágico para identificar o tipo
de sistema de arquivos usado. - Possui o número de blocos e outras informações.
61Esquema do Sistema de Arquivos
- Após o superbloco, estão as informações sobre os
blocos livres. - Pode ser na forma de um mapa de bits ou uma lista
de ponteiros. - Em seguida, os i-nodes.
- Arranjo de estrutura de dados, um por arquivo,
que diz tudo sobre o respectivo arquivo.
62Esquema do Sistema de Arquivos
- Depois, pode vir o diretório-raiz.
- Contém o topo da árvore do sistema de arquivos.
- Por último estão todos os arquivos e diretórios.
63Implementação do Sistema de Arquivos
- A questão mais importante na implementação de
armazenamento de arquivos é a manutenção do
controle de quais blocos de disco estão
relacionados a quais arquivos. - São usados vários métodos em diferentes SOs.
64Alocação Contígua
- É o esquema mais simples de armazenamento de
arquivos no disco. - Os arquivos são armazenados em blocos contíguos
de disco. - Em um disco de blocos de 1kb, um arquivo de 50kb
usa 50 blocos consecutivos.
65Alocação Contígua
66Alocação Contígua
- Na figura é possível observar o que ocorre quando
um arquivo é removido. - Lacunas são criadas dentro do conjunto de blocos.
- Caso um arquivo use meio bloco, este restante do
bloco será desperdiçado.
67Alocação Contígua
- Vantagens
- Fácil implementação.
- Só precisa guardar o endereço do início e o
número de blocos usados. - Alto desempenho de leitura.
- A leitura de um arquivo é feita de uma só vez,
pois o arquivo está escrito de forma contígua. - Apenas um seek é necessário.
68Alocação Contígua
- Desvantagem
- Tendência a fragmentar.
- Sempre que um arquivo é removido, uma lacuna é
criada no lugar do arquivo. - A compactação dos blocos dos arquivos poderia ser
feita após cada exclusão, porém é extremamente
custosa. - Quando o disco está cheio, a compactação é
necessária.
69Alocação Contígua
- Não é mais utilizada em SOs modernos.
- É utilizada em sistemas de armazenamento de
somente leitura. - CDs, DVDs, mídias óticas.
- Algumas técnicas antigas podem se tornar úteis
com o advento de novas tecnologias.
70Alocação Por Lista Encadeada
71Alocação Por Lista Encadeada
- Todo bloco é utilizada e não é gerada
fragmentação com a remoção de arquivos. - Porém a fragmentação interna dos blocos continua.
- É necessário manter apenas o endereço do primeiro
bloco na entrada de diretório. - O restante é encontrado a pártir dele.
72Alocação Por Lista Encadeada
- Desvantagem
- Leitura aleatório lenta.
- Para ler o dado n, é necessário ler n-1 blocos,
um a um. - A leitura sequêncial é feita sem problemas.
- Quantidade de dados armazenados não é uma
potência de 2. - É necessário armazenar o endereço do próximo
bloco. - A leitura de todo bloco requer obter e concatenar
a informação de dois blocos.
73Alocação Por Lista Encadeada
- Leitura de um arquivo.
- Concatenando os dados de dois blocos.
74Alocação Por Lista Encadeada usando Tabela na
Memória
- Uma tabela é usada para armazenar o endereço
físico de cada bloco no disco. - A tabela é chamada de FAT (File Allocation
Table). - O disco também é totalmente utilizado.
- Possui acesso aleatório mais rápido, pois não
precisa ler do disco os endereços do próximo
bloco.
75Alocação Por Lista Encadeada usando Tabela na
Memória
76Alocação Por Lista Encadeada usando Tabela na
Memória
- Somente o número do bloco inicial é necessário
para representar a entrada de diretório. - A tabela utiliza um código de fim de arquivo.
77Alocação Por Lista Encadeada usando Tabela na
Memória
- Desvantagens
- Usa muita memória principal.
- Para funcionar, a tabela deve estar na memória
principal o tempo todo. - Para um disco de 20GB e blocos de 1KB, a tabela
precisa de 20 milhões de entradas, uma para cada
bloco. - A tabela ocuparia 60 ou 80 MB na memória
principal, dependendo do número de bytes usados
nas entradas da tabela.
78i-Nodes
- Estruturas de dados que controlam quais blocos
pertencem a quais arquivos. - Relaciona atributos e os endereços no disco ao
arquivo. - A pártir de um i-node é possível encontrar todos
os blocos do arquivo.
79i-Nodes
80i-Nodes
- Vantagem
- Usa menos memória principal.
- Só precisa estar na memória quando um arquivo
está sendo usado. - Se cada i-node usa n bytes e no máximo k arquivos
podem ser abertos simultâneamente, somente nk
bytes são necessários na memória. - A tabela FAT é proporcional ao tamanho do disco e
o espaço gasto pelos i-nodes é proporcional ao
número de arquivos abertos.
81i-Nodes
- Desvantagem
- Limite do número de blocos endereçados pelo
i-node. - Se a estrutura do i-node tiver um tamanho fixo, o
número de blocos endereçáveis por um i-node é
limitado. - Quando isto ocorre, um espaço do disco é
reservado para um, ou mais, blocos de ponteiros.
82Implementação de Diretórios
- Para abrir um arquivo, o SO precisa de um nome e
um caminho. - Este caminho é usado para encontrar
- Endereço de disco de todo arquivo (contígua)
- O número do primeiro bloco (listas encadeadas)
- Ou o número do i-node.
83Implementação de Diretórios
- A função do sistema de diretórios é traduzir um
nome ASCII na informação necessária para
encontrar os dados. - Outra questão é onde salvar os atributos dos
arquivos. - Todos os SOs mantém informações do arquivo, como
o proprietário, data e hora de criação...
84Armazenamento dos Atributos dos Arquivos
(a) Atributos armazenados diretamente na entrada
do diretório. (b) Atributos armazenados nos
i-nodes.
85Armazenamento dos Atributos dos Arquivos
- Uma alternativa é armazenar diretamente na
entrada do diretório (a). - Consiste em uma lista de entradas de tamanho
fixo, uma por arquivo. - Contém nome do arquivo (tamanho fixo), uma
estrutura de atributos e um ou mais endereços de
disco. - Usado no DOS/Windows
- Outra alternativa é armazenar nos i-nodes.
- A entrada de diretório é menor
- Um nome de arquivo
- O número do i-node.
- Usado no Unix.
86Armazenamento do Nome dos Arquivos
- O nome dos arquivos podem ter tamanho variado.
- Reservar o espaço usando o tamanho máximo
ocasiona em desperdício de espaço. - Poucos arquivos possuirão nomes tão longo.
87Armazenamento do Nome dos Arquivos
- Uma alternativa é cada entrada de diretório
possuir uma parte fixa seguida de uma parte
variável (nome real do arquivo) (a). - É usado um caractere especial para indicar o fim
do nome. - Preenche o campo de nome até atingir o tamanho
fixado. - Na parte fixa são armazenados as informações do
arquivo.
88Armazenamento do Nome dos Arquivos
- Desvantagem
- Fragmentação.
- Possui a mesma tendência a fragmentar da alocação
contígua, caso um arquivo seja removido. - Porém a compactação pode ser feita no momento da
deleção, pois toda a entrada do diretório está na
memória principal. - Leitura de um arquivo pode causar uma falta de
página. - A entrada de diretório pode ser longa demais.
89Armazenamento do Nome dos Arquivos
- Outra solução é fixar o tamanho de todas as
entradas de diretório e os nomes ficam
armazenados em uma área temporária (heap) no
final do diretório (b). - Possui a vantagem de sempre caber na área da heap
quando um arquivo é removido. - Não há mais necessidade de completar os nomes com
caracteres especiais. - Porém ainda é necessário o uso do caractere de
fim de nome.
90Armazenamento do Nome dos Arquivos
91Implementação de Diretórios
- Nos projetos abordados até o momento, a busca por
um arquivo é realizada sequêncialmente. - O que é um método lento quando a lista é extensa.
- Uma solução é utilizar uma tabela de hash para
armazenar as entradas de diretório.
92Arquivos Compartilhados
- Compartilhamento é de extrema importância em
sistemas multiusuário. - Um arquivo compartilhado pode fazer parte da
estrutura de diretório de dois, ou mais, usuários
(link).
93Arquivos Compartilhados
- Se o diretório armazenar os endereços dos blocos
do arquivo, uma alteração no arquivo pode não ser
visível pelo outro usuário. - O diretório não terá a referência dos blocos
adicionais. - O conceito de compartilhamento é perdido quando
isto acontece.
94Arquivos Compartilhados
- Pode ser resolvido de duas formas
- O diretório não armazena os endereços dos blocos
do arquivo. - É utilizada uma estrutura de dados que armazena
todos os endereços. - O diretório possui uma referência à estrutura.
- O novo arquivo é ligado (link) ao original.
- O novo arquivo possuirá apenas o nome do caminho
do arquivo original. - Chamado de ligação simbólica.
95Arquivos Compartilhados
- Ambas soluções apresentam desvantagens
- Se o arquivo original for removido, a referência
do i-node é perdida. - O SO é capaz de identificar que o arquivo possui
um link, mas não é capaz de encontrar cada um e
removê-los. - O i-node não é capaz de armazenar todas os links.
- A solução é remover o arquivo da entrada do
diretório do usuário, mas manter o i-node
intacto.
96Arquivos Compartilhados
- (a) Antes da ligação.
- (b) Após a ligação.
- (c) Após a remoção do arquivo original.
97Arquivos Compartilhados
- Vários acessos a disco são necessários para ler
os blocos do arquivo. - O caminho deve ser lido e sintaticamente
analisado até chegar ao i-node. - É necessário um i-node extra para armazenar o
caminho para cada ligação simbólica. - Tem a vantagem de poder ligar arquivos de locais
diferentes. - Basta o endereço da máquina e o caminho.
98Gerenciamento de Disco
- O gerenciamento do espaço do disco é uma das
principais preocupações de um projetista de
sistemas. - Como foi visto anteriormente, é possível
armazenar de duas formas - Blocos consecutivos (alocação contígua).
- Blocos espalhados no disco (alocação por lista
encadeada ou i-node).
99Tamanho do Bloco
- É visível a importância do tamanho do bloco no
gerenciamento do disco. - Os blocos podem ter tamanhos diferentes e
diferentes reações serão observadas no sistema. - A decisão do tamanho do bloco deve ser bem
pensada.
100Tamanho do Bloco
- Bloco muito grande
- Pouca leitura do disco necessária.
- Os arquivos usariam poucos blocos.
- Alta fragmentação interna.
- Poucos arquivos preencherão o bloco inteiro.
- Bloco muito pequeno
- Disco é melhor aproveitado.
- Baixa fragmentação interna.
- Muito leitura do disco.
- Muito acesso a disco, pois o arquivo pode estar
espalhado pelo disco inteiro.
101Tamanho do Bloco
102Monitoramento dos Blocos Livres
- Através de uma lista encadeada de blocos.
- Mapa de bits.
103Lista Encadeada de Blocos
- Um bloco de disco é utilizado para armazenar
ponteiros para os blocos livres. - Armazena o máximo possível de ponteiros.
- Mantém na memória principal apenas um bloco de
ponteiros. - Quando um arquivo é criado, os blocos necessários
são tirados da lista de blocos livres. - Quando a lista se esgota, outro bloco de
ponteiros é lido do disco.
104Lista Encadeada de Blocos
- Quando um arquivo é removido, novos ponteiros são
criados e adicionados ao bloco de ponteiros. - Quando o bloco está cheio, este é escrito ao
disco e outro é lido ou criado.
105Lista Encadeada de Blocos
- Desvantagem
- Causa muitas operações de E/S.
- Quando o bloco possui 2 ponteiros livres (a) e um
arquivo de 3 blocos é removido, a lista
transborda e um novo bloco de ponteiros é
criado e carregado na memória (b). - Se o arquivo que acaba de ser criado é
temporário, os blocos são desalocados e o bloco
anterior é recarregado.
106Lista Encadeada de Blocos
- Solução
- Manter o bloco de ponteiros sempre parcialmente
ocupado. - Sempre que o bloco de ponteiros se enche, apenas
metade dele é armazenada no disco (c).
107Lista Encadeada de Blocos
Inserir figura!!!!!!!!!
108Mapa de Bits
- Um mapa de bits é utilizado para representar os
blocos livres. - Utiliza apenas um bit para representar um bloco
livre. - 1 Livre
- 0 Alocado
- Também utiliza blocos do disco para armazenar o
mapa. -
109Mapa de Bits
- Só usa o disco quando o mapa está cheio.
- O mapa mantém os arquivos próximos.
- Pois estão no mesmo mapa.
110Mapa de Bits
Endereço 0x10cc00290
1 1 0 0 0 0 0 0 0 0 0 1 1 1 0 0
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1
1 1 1 1 1 1 1 1 1 0 0 0 1 1 1 0
1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0
0
16
32
48
64
- Representação de um mapa de bits.