Sistemas de Arquivos
Sistemas
Operacionais
Mitsuo Takaki
Capítulo 6 – Sistemas de Arquivos
6.1 Arquivos
6.2 Diretórios
6.3 Implementação
Capítulo 6 – Sistemas de Arquivos
6.1 Arquivos
6.2 Diretórios
6.3 Implementação
Arquivos
•
É um mecanismo de abstração.
•
Oferece meios de
informações no disco.
–
•
armazenar
e
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.
ler
Nomeaçã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.
Nomeaçã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.
Nomeaçã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.
Nomeaçã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++.
Estrutura de Arquivos
Estrutura 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.
Estrutura 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.
Tipos 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.
Tipos 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.
Tipos de Arquivos
(a) Arquivo executável
(b) Repositório
Tipos 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.
Tipos 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.
Tipos 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.
Tipos de Arquivos
•
Todo SO deve ser capaz de reconhecer pelo
menos um tipo de arquivo.
–
O seu próprio executável.
Acesso 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.
Atributos de Arquivos
Atributos 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.
Operaçõ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.
Operações com Arquivos
–
Close, realizado quando o processo termina de
usar o arquivo.
•
–
Read, lê os dados do arquivo na posição atual.
•
–
Força a escrita do último bloco do arquivo.
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.
Operações com Arquivos
–
Append, chamada restrita de Write.
•
–
Seek, busca uma posição no arquivo.
•
–
Só permite escrita no final do arquivo, não
permite sobrescrevê-lo.
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.
Operações com Arquivos
–
Set Attributes, define atributos do arquivo.
•
–
Alguns atributos podem ser alterados pelo
usuário.
Rename, modifica o nome do arquivo.
Arquivos 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.
Arquivos 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.
Arquivos Mapeados em Memória
Espaço de endereçamento de um processo.
Arquivos 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 é
Arquivos 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.
Arquivos 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.
Arquivos 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.
Arquivos 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.
Capítulo 6 – Sistemas de Arquivos
6.1 Arquivos
6.2 Diretórios
6.3 Implementação
Sistemas 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.
Ní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.
Nível Único
A,B e C são os proprietários dos arquivos.
Ní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.
Ní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.
Dois 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.
Dois Níveis
Dois 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.
Diretórios Hierárquicos
•
Os arquivos são organizados de acordo com
o usuário.
–
•
É criada uma hierarquia de diretórios.
É utilizado até hoje.
Diretórios Hierárquicos
Nomes 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.
Nome 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
Nome 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: /
Nome 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.
Nome 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.
Nomes 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.
Operações com Diretórios
•
As operações variam para cada SO. As mais
comuns são:
–
Create, cria um diretório vazio.
•
•
–
Delete, remove um diretório.
•
•
–
Exceto pelo ponto e ponto-ponto.
Geralmente inseridos pelo programa mkdir.
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
Operaçõ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.
Operaçõ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.
Operaçõ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.
Capítulo 6 – Sistemas de Arquivos
6.1 Arquivos
6.2 Diretórios
6.3 Implementação
Implementação do Sistema de
Arquivos
•
Como o sistema de arquivos funciona sob a
ótica do programador.
Esquema 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.
Esquema 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.
Esquema do Sistema de Arquivos
Esquema 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.
Esquema 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.
Esquema 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.
Implementaçã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.
Alocaçã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.
Alocação Contígua
Alocaçã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.
Alocaçã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.
Alocaçã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.
Alocaçã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.
Alocação Por Lista Encadeada
Alocaçã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.
Alocaçã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.
Alocação Por Lista Encadeada
•
Leitura de um arquivo.
–
Concatenando os dados de dois blocos.
Alocaçã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.
Alocação Por Lista Encadeada
usando Tabela na Memória
Alocaçã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.
Alocaçã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.
i-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.
i-Nodes
i-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.
i-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.
Implementaçã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.
Implementaçã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...
Armazenamento dos Atributos dos
Arquivos
(a) Atributos armazenados diretamente na
entrada do diretório.
(b) Atributos armazenados nos i-nodes.
Armazenamento 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.
Armazenamento 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.
Armazenamento 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.
Armazenamento 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.
Armazenamento 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.
Armazenamento do Nome dos
Arquivos
Implementaçã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.
Arquivos 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).
Arquivos 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.
Arquivos Compartilhados
Pode ser resolvido de duas formas:
1.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.
2.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.
Arquivos Compartilhados
Ambas soluções apresentam desvantagens:
1.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.
Arquivos Compartilhados
(a) Antes da ligação.
(b) Após a ligação.
(c) Após a remoção do arquivo original.
Arquivos Compartilhados
2. 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.
Gerenciamento 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:
1. Blocos consecutivos (alocação contígua).
2. Blocos espalhados no disco (alocação por lista
encadeada ou i-node).
Tamanho 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.
Tamanho 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.
Tamanho do Bloco
Monitoramento dos Blocos Livres
(a)Através de uma lista encadeada de blocos.
(b)Mapa de bits.
Lista 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.
Lista 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.
Lista 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.
Lista 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).
Lista Encadeada de Blocos
Inserir figura!!!!!!!!!
Mapa 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.
Mapa 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.
Mapa de Bits
Endereço: 0x10cc00290
0 1
1
0
0
0
0
0
0
0
0
0
1
1
1
0
0
16 1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
32 0
48 1
0
0
0
0
0
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
1
1
0
0
0
1
1
1
0
64 1
1
1
1
1
0
0
0
0
0
0
0
0
0
0
0
• Representação de um mapa de bits.
Download

Capítulo 6