Escolar Documentos
Profissional Documentos
Cultura Documentos
Cap. 11 – Sistemas de
Arquivos
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 );
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;
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;
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;
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
14
11.1.3 Tipos de arquivos
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;
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.
27
11.3.1 Diretório de nível único
arquivos
28
11.3.2 Diretório de dois níveis
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
30
11.3.4 Diretórios em grafos acíclicos
raiz dict spell
list rade w7
31
11.3.5 Diretórios em grafo genérico
raiz avi tc jim
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;
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;
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;
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;
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;
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
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.
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;
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;
49
11.6 Métodos de alocação
Quase sempre os arquivos são armazenados no
mesmo disco;
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;
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