Você está na página 1de 74

Centro Universitário da Grande Dourados

Curso Ciência da Computação


Disciplina Sistemas Operacionais II

Cap. 11 – Sistemas de
Arquivos

Profª Claudia Regina Tinós Peviani


e-mail: tpeviani@unigran.br
1
Introdução
 O sistemas de arquivos é o componente mais
visível de um S.O.;

 O sistema de arquivos é constituído de duas


partes distintas: uma coleção de arquivos, que
armazenam dados, e uma estrutura de diretórios,
que organiza e fornece informações sobre os
arquivos do sistema;

2
Introdução
 Veremos formas de proporcionar a proteção de
arquivos, que é necessária em um ambiente no
qual múltiplos usuários têm acesso aos arquivos
e onde é geralmente desejável controlar quem
acessa os arquivos e de que forma.

3
11.1 Conceito de arquivo
 Os computadores podem armazenar informações
em vários meios de armazenamento diferentes:
discos magnéticos, fitas magnéticas e discos
óticos;
 O SO fornece uma visão lógica uniforme do
armazenamento de informações;
 O SO abstrai das propriedades físicas de seus
dispositivos de armazenamento para definir uma
unidade de armazenamento lógica – o arquivo;

4
11.1 Conceito de arquivo
 Os arquivos são mapeados, pelo SO, em
dispositivos físicos. Esses dispositivos são,
normalmente, não-voláteis (seu conteúdo
persiste nos casos de falta de energia ou
reinicialização do sistema );

 Arquivo – coleção de informações correlatas qu


recebe um nome e é gravado no armazenamento
secundário;

5
11.1 Conceito de arquivo
 Na visão do usuário, um arquivos é a menor
unidade alocável de armazenamento secundário
lógico;

 O arquivo pode armazenar vários tipos de dados:


programas-fonte, programas-objeto, programas-
executáveis, dados numéricos, textos, registros
de pagamento, imagens gráficas, registros de
sons, e muitos outros mais.

6
11.1.1 Atributos de arquivo
 Um arquivo tem determinado atributos, que variam de um
SO para outro, mas em geral consistem em:
 Nome – nome simbólico, legível pelo homem;
 Tipo – determinar qual o tipo do arquivo;
 Posição – é um ponteiro para um dispositivo e a posição do
arquivo no dispositivo:
 Tamanho – tamanho atual do arquivo(em bytes, palavras ou
blocos);
 Proteção – controle de acesso, quem pode realizar
operações de leitura, escrita, execução;
 Hora, data e identificação de usuário – são definidas por (1)
criação, (2) última modificação e (3) último uso.
7
11.1.2 Operações com arquivos
 Um arquivo é um tipo abstrato de dados. Por
isso é necessário considerar as operações que
podem ser realizadas sobre ele;

 O SO fornece chamadas ao sistema para criar,


escrever, ler, reposicionar, excluir e truncar
arquivos;

8
11.1.2 Operações com arquivos
 Vamos considerar o que o SO deve fazer para
cada uma das seis operações básicas:
 Para criar um arquivo: 1º) deve haver espaço no
sistema de arquivo; 2º) a entrada deve ser feita no
diretório, onde registra o nome do arquivo e sua
localização;
 Para escrever em um arquivo: 1º) faz-se uma chamada
ao sistema especificando o nome do arquivo e as
informações a serem escritas; 2º) o sistema posiciona
o ponteiro de escrita onde ocorrerá a escrita e
atualiza o ponteiro;

9
11.1.2 Operações com arquivos
 Continuação
 Para ler um arquivo: 1º) faz-se uma chamada ao
sistema especificando o nome do arquivo e onde (na
memória) o próximo bloco do arquivo deverá ser
colocado; 2º) o sistema mantém um ponteiro de
leitura para a posição no arquivo na qual a próxima
leitura deverá ocorrer;
 Para reposicionar dentro do arquivo: 1º) o diretório é
pesquisado buscando a entrada apropriada; 2º) a
posição do arquivo atual é ajustada para um
determinado valor, essa operação é chamada de
busca no arquivo;

10
11.1.2 Operações com arquivos
 Continuação
 Para excluir um arquivo: 1º) pesquisa-se no diretório o
arquivo é identificado pelo nome; 2º) libera-se todo o
espaço de arquivo e apaga-se a entrada do diretório.
 Para truncar um arquivo: existem momento em que o
usuário deseja apagar o conteúdo do arquivo, mas
quer manter os atributos. Em vez dele excluir e depois
recriá-lo, essa função permite que todos os atributos
permaneçam inalterados, exceto o tamanho, pois será
reajustado para o tamanho zero.

11
11.1.2 Operações com arquivos
 Boa parte das operações de arquivo envolvem pesquisar
o diretório pela entrada associada com o arquivo
nomeado;

 Para evitar essa constante pesquisa, o sistema mantém


um pequena tabela contendo informações sobre todos os
arquivos abertos: a tabela de arquivos abertos (open-
file table);

 Quando uma operação é solicitada , um índice para essa


tabela é usado, de modo que a pesquisa não é feita,
quando o arquivo não estiver mais sendo usado
ativamente, ele será fechado.

12
11.1.2 Operações com arquivos
 Existem várias informações diferentes
relacionadas com um arquivo aberto:
 Ponteiro de arquivo – esse ponteiro é usado para
rastrear a última posição de leitura e escrita, como um
ponteiro de posição atual no arquivo;
 Contador de aberturas de arquivo – esse contador
rastreia o número de procedimentos de abertura e
fechamento;
 Posição do arquivo no disco – as informações
necessárias para localizar o arquivo no disco são
mantidas na memória para evitar ter de lê-las do disco
para cada operação.
13
11.1.3 Tipos de arquivos

Tipo de arquivo Extensão comum função


Programa de linguagem de
Executável exe, com, bin máquina pronto para
executar
Linguagem de máquina,
Objeto obj, o
compilado, sem linkedição
C, cc, pas, java, Código fonte em várias
Código-fonte
asm linguagens
Comandos para interpretador
Batch bat, sh
de comandos
Texto txt, doc Dados textuais, documentos

14
11.1.3 Tipos de arquivos

Processador Vários formatos de processador de


wpd, tex, doc
de Textos textos
Bibliotecas de rotinas para
Biblioteca lib, DLL
programadores
Arquivo ASCII ou binário em um
Impressão ou
ps, dvi, gif formato par impressão ou
visualização
visualização
Arquivos correlatos agrupados em
Arquivo um arquivo único, às vezes
arc, zip, tar
compactado compactado, para fins de
arquivamento ou armazenamento

15
11.1.4 Estrutura de arquivos
 A forma como os dados são dispostos dentro de
um arquivo determina sua estrutura interna;
 Cada tipo de arquivo possui uma estrutura
interna apropriada para a sua finalidade;
 Exemplo: Arquivos texto são organizados em
linhas e parágrafos. Arquivos que contêm
programas executáveis são organizados em
termos de segmentos de códigos e segmentos de
dados;

16
11.1.4 Estrutura de arquivos
 Existe uma enorme quantidade de diferentes
tipos de arquivos, cada tipo com sua estrutura
interna particular;

 Além é claro da quantidade de novas aplicações


que aparecem a cada dia, gerando novos tipos
de arquivos;

 Por isso, não é viável para SO conhecer todos os


tipos de arquivos;

17
11.1.4 Estrutura de arquivos
 Então como o SO trabalha com a estrutura
interna dos arquivos?
 Simplesmente ele ignora a estrutura interna dos
arquivos. Para SO, cada arquivo corresponde a
uma sequência de bytes, cujo significado é
conhecido pelo usuário que o criou;
 A única exceção são os arquivos que contêm
programas executáveis, onde a estrutura interna
é definida pelo próprio SO, responsável pela
carga do programa para a memória quando esse
deve ser executado.
18
11.2 Métodos de acesso
 Método de acesso diz respeito à forma como o
conteúdo de um arquivo é acessado;
 Existem várias formas das informações no
arquivo serem acessadas;
 Alguns sistemas fornecem apenas um método de
acesso aos arquivos;
 Em outros sistemas, muitos métodos de acesso
são aceitos, mas escolher o método correto é um
problema importante de projeto.
19
11.2.1 Acesso sequencial
 O método de acesso mais simples;
 As informações no arquivo são processadas em
ordem, um registro após o outro;
 Esse modo de acesso é muito usado, os
compiladores fazem uma leitura sequencial dos
programas fontes, assim como a impressão de
um arquivo é feita a partir de sua leitura
sequencial.
 O acesso sequencial é baseado no modelo de
arquivos armazenados em fitas.
20
11.2.2 Acesso direto
 Acesso direto ou acesso relativo;
 Um arquivo é formado por registros lógicos de
tamanho fixo que permitem que os programas
leiam e escrevam registros rapidamente sem
uma ordem específica;
 Esse método baseia-se em um modelo de disco
de um arquivo, onde os discos permitem acesso
aleatório a qualquer bloco do arquivo;

21
11.2.2 Acesso direto
 No acesso direto, o arquivo é visto como uma
seqüência numerada de blocos ou registros;
 Um arquivo de acesso direto permite que blocos
arbitrários sejam lidos e escritos;
 Não existem restrições quanto à ordem de leitura
e escrita para um arquivo de acesso direto;
 Os arquivos de acesso direto são úteis para o
acesso imediato a grandes quantidades de
informação.
22
11.2.3 Outros métodos de acesso
 Podem ser desenvolvidos com base no método de
acesso direto;
 Geralmente envolvem a construção de um índice
para o arquivo;
 O índice, como um índice na parte posterior de
um livro, contém ponteiros aos vários blocos;
 Para encontrar um registro no arquivo, primeiro
pesquisamos o índice e depois usamos o ponteiro
para acessar o arquivo diretamente e encontrar o
registro desejado;
23
11.2.3 Outros métodos de acesso
 Com arquivos grandes, o arquivo de índice
propriamente dito pode ficar grande demais para
ser mantido na memória;
 Uma solução é criar um índice para o arquivo de
índice;
 O arquivo de índice principal contém ponteiros
aos arquivos de índices secundários, que
apontam para os itens de dados reais.

24
11.3 Estrutura de diretório
 Os sistemas de arquivo dos computadores
podem ser enormes, armazenando milhares de
arquivos em centenas de gigabytes de disco;
 Para gerenciar todos esses dados, precisamos
organizá-los. Essa organização geralmente é feita
em duas partes:
 1º) O sistema é quebrado em partições, também
chamados de minidisco ou volume. Em geral, cada
disco contém pelo menos uma partição, que é uma
estrutura de baixo nível na qual residem arquivos e
diretórios;
25
11.3 Estrutura de diretório
 2º) Cada partição contém informações sobre os
arquivos dentro dela. Essas informações são mantidas
em entradas em um diretório de dispositivo ou índice
de volume. O diretório registra informações – tais
como nome, posição, tamanho e tipo, para todos os
arquivos naquela partição.

 Levando em consideração a estrutura de


diretório, vamos conhecer as operações que
deverão ser realizadas em um diretório:
 Pesquisar arquivos;
 Criar um arquivo;
26
11.3 Estrutura de diretório
 Excluir um arquivo;
 Listar um diretório;
 Renomear um arquivo;
 Percorrer o sistema de arquivos;

27
11.3.1 Diretório de nível único

diretório a teste dados correio cont hex reg

arquivos

28
11.3.2 Diretório de dois níveis

Diretório de arquivos Usuário 1 Usuário 2 Usuário 3


Mestre (MFD)

Diretório de
a teste dados correio cont hex reg
arquivos de
usuário
(UFD)

29
11.3.3 Diretórios estruturados em
árvore
raiz lex bin prog

estat correio dist proc cont hex org p e correio

proc cop imp exp ord lista proc hex cont

30
11.3.4 Diretórios em grafos acíclicos
raiz dict spell

list all w count count words list

list rade w7

31
11.3.5 Diretórios em grafo genérico
raiz avi tc jim

text mail count book book mail unhex hyp

avi count unhex hex

32
11.4 Proteção
 Quando as informações são mantidas em um
sistema de computação, uma importante
preocupação é a confiabilidade, ou ficar livre
de danos físicos;

 Outra é a proteção, ou não permitir acesso


indevido;

 A confiabilidade geralmente é obtida por cópias


duplicadas dos arquivos;

33
11.4 Proteção
 Existem programas que copiam automaticamente
os arquivos do disco para fita em intervalo
regulares;
 A proteção pode ser provida de muitas formas;
 Para um sistema pequeno, monousuário,
podemos remover os disquetes fisicamente e
colocá-los em um gabinete de arquivos ou
gaveta;
 Em um sistema multiusuário, outros mecanismos
são necessários.
34
11.4.1 Tipos de acesso
 A necessidade de proteger arquivos é resultado
direto da capacidade de acessar arquivos;
 Nos sistemas que não permitem acesso aos
arquivos de outros usuários, a proteção não é
necessária;
 Um extremo seria fornecer proteção completa
proibindo o acesso. Outro extremo é fornecer
acesso livre sem proteção;
 É necessário o acesso controlado;
35
11.4.1 Tipos de acesso
 Os mecanismos de proteção fornecem acesso
controlado limitando os tipos de acesso a arquivo
que podem ser feitos;
 O acesso é permitido ou negado dependendo de
vários fatores, um dos quais é o tipo de acesso
solicitado.

36
11.4.1 Tipos de acesso
 Vários tipos distintos de operação podem ser
controladas:
 Ler
 Escrever – escrever ou reescrever um arquivo
 Executar – carregar o arquivo na memória e executá-lo
 Anexar – escrever novas informações no final do
arquivo
 Excluir – excluir e liberar espaço para reutilização
 Listar - nomes e atributos de arquivos
37
11.4.2 Listas de acesso e grupos
 A abordagem mais comum ao problema de
proteção é tornar o acesso dependente da
identidade do usuário;

 Vários usuários podem precisar de diferentes


tipos de acesso a um arquivo ou diretório;

 O acesso dependente da identidade do usuário


pode ser implementado através de uma lista de
acesso;

38
11.4.2 Listas de acesso e grupos
 O principal problema com as listas de acesso é o
seu tamanho, pois se queremos que todos leiam
um arquivos, é preciso listar todos os usuários e
dar a eles o acesso de leitura;

 Para resolver esse problema, usa-se um versão


condensada da lista de acesso.

39
11.4.2 Listas de acesso e grupos
 Que reconhece 3 classificações de usuários em
relação a cada arquivo:
 Proprietário: o usuário que criou o arquivo é o
proprietário;
 Grupo: Um conjunto de usuários que compartilha o
arquivo e precisa de acesso semelhante é um grupo,
ou grupo de trabalho;
 Universo: todos os outros usuários no sistema
constituem o universo.

40
11.4.3 Outras abordagens de
proteção
 Existem outras abordagens ao problema de
proteção;

 Uma delas é associar um senha com cada


arquivo;

 Desvantagem – o nº de senhas que um usuário


deve lembrar aumenta, conforme aumenta o nº
de arquivos.

41
11.5 Estrutura do sistema de
arquivos
 Os discos são a principal parte do
armazenamento secundário no qual um sistema
de arquivos é mantido;

 Para melhorar a eficiência de I/O, realizamos


transferências entre a memória e o disco em
unidades de blocos;

42
11.5 Estrutura do sistema de
arquivos
 Os discos têm duas características importantes
que os tornam um meio conveniente para
armazenar múltiplos arquivos:
 Eles podem ser regravados;
 Podemos acessar diretamente qualquer bloco de
informações no disco.

43
11.5.1 Organização do sistema de
arquivos
Programas aplicativos

Sistemas de arquivos lógicos

Módulo de organização de arquivos

Sistema de arquivos básico

Controle de I/O

Dispositivos
44
11.5.1 Organização do sistema de
arquivos
 O nível mais baixo, o controle de I/O, consiste
em drivers de dispositivo e rotinas de
tratamento de interrupções que transferem
informações entre a memória e o sistema de
disco.

 Sistema de arquivos básico – só precisa


emitir comandos genéricos ao driver de
dispositivos apropriado para ler e gravar blocos
físicos no disco.

45
11.5.1 Organização do sistema de
arquivos
 Módulo de organização de arquivos – conhece os
arquivos e seus blocos lógicos, assim como os
blocos físicos. Ao conhecer o tipo de alocação de
arquivo usada e a posição do arquivo, esse
módulo pode traduzir os endereços de bloco
lógico em endereços de bloco físico para que o
sistema de arquivo básico faça a transferência.

46
11.5.1 Organização do sistema de
arquivos
 Sistema de arquivos lógico utiliza a estrutura de
diretório para fornecer ao módulo de organização
de arquivos as informações necessárias,
considerando um nome de arquivo simbólico. O
sistema de arquivos lógico também é
responsável pela proteção e segurança.

47
11.5.2 Montagem do sistema de
arquivos
 Assim como um arquivo deve estar aberto antes
de ser usado, um sistema de arquivos deve ser
montado antes de poder estar disponível aos
processos no sistema;

 O SO recebe o nome de dispositivo e a posição


na estrutura de arquivos na qual anexa o sistema
de arquivos (ponto de montagem);

48
11.5.2 Montagem do sistema de
arquivos
 O SO verifica se o dispositivo contém um sistema
de arquivos válido. Isso é feito pedindo ao driver
de dispositivo para ler o diretório do dispositivo e
verificar se o diretório tem o formato esperado;

 Finalmente, o SO registra na sua estrutura de


diretório que um sistema de arquivo está
montado no ponto de montagem especificado.

49
11.6 Métodos de alocação
 Quase sempre os arquivos são armazenados no
mesmo disco;

 O principal problema é como alocar espaço a


esses arquivos de modo que o espaço em disco
seja utilizado com eficácia e os arquivos sejam
acessados rapidamente;

 Existem 3 métodos principais para alocar espaço


em disco: contíguo, encadeado e indexado.

50
11.6.1 Alocação Contígua
 Esse método requer que cada arquivo ocupe um
conjunto de blocos contíguos no disco. Os
endereços de disco definem uma ordenação
linear no disco;
 A alocação contígua de um arquivo é definida
pelo endereço de disco(do 1º bloco) e o tamanho
(em unidades de blocos).
 Se o arquivo começar na posição b e tiver n
blocos de comprimento, ele ocupará os blocos b,
b+1, b+2, ..., b+n-1.
51
11.6.1 Alocação Contígua
 Acessar um arquivo que tenha sido alocado de
forma contígua é fácil;

 Tanto o acesso seqüencial quanto o direto


podem ser suportados por esse método;

 O problema de alocação contígua é encontrar


espaço para um novo arquivo e depois de
encontrar o problema está no caso de
precisarmos aumentar esse arquivo.

52
11.6.1 Alocação Contígua

53
11.6.2 Alocação Encadeada
 A alocação encadeada resolve todos os
problemas da alocação contígua;
 Na alocação encadeada, cada arquivo é uma lista
encadeada de blocos de disco;
 Os blocos de disco podem estar dispersos em
qualquer parte do disco. O diretório possui um
ponteiro ao primeiro e último bloco do arquivo.

54
11.6.2 Alocação Encadeada
 Exemplo: Um arquivo de cinco blocos pode
começar no bloco 9, continuar no bloco 16,
depois bloco 1, bloco 10 e finalmente bloco 25;
 Cada bloco contém um ponteiro para o próximo
bloco. Esses ponteiros não são disponíveis para o
usuário;
 Se cada bloco tiver 512 bytes, e um endereço de
disco (o ponteiro) requer 4 bytes, então o
usuário verá blocos de 508 bytes.

55
11.6.2 Alocação Encadeada
 A vantagem da alocação encadeada está em
permitir que qualquer bloco físico possa ser
alocado a qualquer arquivo;
 A desvantagem é que não permite a acesso
relativo com facilidade;
 Para acessar o bloco lógico 5 do arquivo, é antes
necessário acessar os blocos lógicos de 0 a 4,
mesmo que o programa em execução não
necessite dessas informações.

56
11.6.3 Alocação Indexada
 A alocação indexada é capaz de resolver o
problema do crescimento dos arquivos ao mesmo
tempo que permite o acesso relativo;
 Na alocação indexação, cada arquivo possui uma
bloco de índices. Cada entrada do bloco de
índices contém um endereço de um dos blocos
físicos que formam o arquivo;
 A alocação indexada sofre de desperdício de
espaço. O custo dos ponteiros do bloco de índice
é maior que os ponteiros da alocação encadeada.
57
11.6.3 Alocação Indexada
 Na alocação encadeada, perdemos o espaço de
apenas um ponteiro por bloco. Já na alocação
indexada, um bloco de índice inteiro deverá ser
alocado;
 Uma questão muito importante é o tamanho da
tabela de índices.
 Todo arquivo deve ter um bloco de índice, por
isso esse bloco deve ser o menor possível.
Entretanto, se o bloco de índice for muito
pequeno, ele não poderá conter ponteiros
suficientes para um arquivo grande. 58
11.6.4 Desempenho
 Os métodos de alocação variam em termos de
eficiência de armazenamento e tempos de
acesso ao blocos de dados, ambos são
importantes para a implementação em SO;
 Uma dificuldade na comparação do desempenho
dos vários sistemas é determinar como os
sistemas serão usados;
 Para qualquer tipo de acesso, a alocação
contígua requer apenas um acesso para obter
um bloco de disco.
59
11.6.4 Desempenho
 Para a alocação encadeada, também podemos
manter o endereço do próximo bloco na memória
e fazer a leitura diretamente. Esse método
funciona para o acesso seqüencial, já no acesso
direto isso complica, pois um acesso ao bloco i
pode exigir i leituras de disco;
 Alguns sistemas suportam arquivos de acesso
direto usando alocação contígua e acesso
seqüencial por alocação encadeada.

60
11.6.4 Desempenho
 A alocação indexada é mais complexa. Devido ao
bloco de índice.
 Assim sistemas combinam a alocação contígua
com a indexada usando a alocação contígua para
arquivos pequenos (de 3 a 4 blocos), e
alternando automaticamente para a alocação
indexada se o arquivo ficar grande.

61
11.7 Gerência de espaço livre
 Como só existe uma quantidade limitada de espaço
em disco, é necessário reutilizar o espaço de
arquivos excluídos para novos arquivos, se possível.
(Exemplo disco ótico – CD-R);
 Para controlar a quantidade de espaço livre em
disco, o sistema mantém uma lista de espaço
livre;
 Esta lista registra todos os blocos de disco que
estão livres, ou seja, os que não estão alocados a
algum arquivo ou diretório.
62
11.7 Gerência de espaço livre
 Para criar um arquivo, pesquisamos a lista de
espaço livre pra encontrar a quantidade de
espaço desejado, e alocamos esse espaço ao
novo arquivo. Esse espaço é então removido da
lista de espaço livre;
 Quando um arquivo é excluído, seu espaço em
disco é adicionado à lista de espaço livre.

63
11.7.1 Vetor de Bits
 A lista de espaço livre é implementada como um
mapa de bits ou um vetor de bits;
 Cada bloco é representado por 1 bit. Se o bloco
estiver livre, o bit será 1; se o bloco estiver
alocado, o bit será 0;
 A principal vantagem dessa abordagem é que é
relativamente simples e eficiente encontrar o
primeiro bloco livre, ou n blocos livres
consecutivos no disco.

64
11.7.1 Vetor de Bits
 A desvantagem – procurar um seqüência de bits
desligados do tamanho correspondente à área
desejada. O mapa de bits deve ser mantido na
memória principal para que a busca seja rápida;
 Com base nisso, imagine um disco com 1 Gbyte,
com blocos físicos de 4 Kbytes, teremos 256 K
blocos físicos. O mapa de bits terá tamanho de
256 Kbits. Mesmo com todo o mapa de bits na
memória principal, esse método torna-se lento
quando o disco está quase cheio e a maioria dos
bits estão ligados.
65
11.7.2 Lista encadeada
 O espaço livre de disco também pode ser
gerenciado através de uma lista contendo os
números de todos os blocos físicos livres;
 Nessa abordagem é encadear todos os blocos de
disco livres, mantendo um ponteiro ao primeiro
bloco livre em um posição especial no disco e
armazenando-o em cache na memória;
 Esse primeiro bloco contém um ponteiro ao
próximo bloco livre de disco, e assim por diante;

66
11.7.2 Lista encadeada
 A maior vantagem dessa abordagem está na sua
rapidez em localizar blocos físicos livres,
independentemente da ocupação do disco;
 A maior desvantagem está no fato de a lista ser
mantida desordenada, o que inviabiliza na
prática a alocação de áreas contíguas no disco;
 Ainda que a lista seja criada ordenada, a
constante alocação e liberação de blocos acaba
por desordená-la.

67
11.7.3 Agrupamento
 Modificando a lista livre pode-se armazenar os
endereços de n blocos livres no primeiro bloco
livre;
 Os primeiros n-1 desses blocos estão realmente
livres. O bloco final contém os endereços de
outros n blocos livres, e assim por diante;
 Vantagem: os endereços de um grande número
de blocos livres podem ser rapidamente
encontrados, diferentes da lista encadeada.

68
11.7.4 Contadores
 Outra abordagem de gerenciar o espaço livre em
disco;
 Em vez de manter uma lista de n endereços de
disco livres, podemos manter o endereço do
primeiro bloco livre e o número n de blocos
contíguos livres que seguem esse primeiro bloco;
 Cada entrada na lista de espaço livre consiste
então em um endereço de disco e um contador.

69
11.8 Implementação de diretórios
 A seleção dos algoritmos de alocação e gerência
de diretórios tem um grande efeito na eficiência,
desempenho e confiabilidade do sistema de
arquivos;
 Um diretório pode ser entendido como sendo um
conjunto de arquivos ou um conjunto de
referências a arquivos.

70
11.8.1 Lista Linear
 O método mais simples de implementar um
diretório é usar uma lista linear de nomes de
arquivos com ponteiros aos blocos de dados;
 Uma lista linear de entradas de diretório requer
uma pesquisa linear para encontrar uma
determinada entrada;
 Esse método é simples de implementar, mas
demorado de executar;

71
11.8.1 Lista Linear
 A verdadeira desvantagem de uma lista linear de
entradas de diretório é a pesquisa linear para
encontrar um arquivo;
 As informações de diretório são usadas
frequentemente, e uma implementação lenta de
acesso a elas seria percebida pelos usuários;
 Uma solução seria uma lista ordenada, através
de uma estrutura de dados (Árvore B) teria uma
listagem de diretório ordenada.

72
11.8.2 Tabelas de hash
 Outra estrutura de dados que tem sido utilizada
para diretórios de arquivos é uma tabela de
hash;
 Nesse método, uma lista linear armazena
entradas de diretório, mas uma estrutura de
dados com hash também é usada;
 A tabela de hash pega um valor calculado a
partir do nome do arquivo e retorna um ponteiro
ao nome de arquivo na lista linear.

73
11.8.2 Tabelas de hash
 Vantagem – A pesquisa é rápida, e não existe a
necessidade de manter a lista ordenada;
 Desvantagem – algoritmos mais complexos,
necessários para lidar com os problemas típicos
de uma tabela de hash: tratamento de colisões e
expansão da tabela;

74

Você também pode gostar