Sistema de Arquivos
Ambientes Operacionais
Prof. Simão Sirineo Toscani
[email protected]
www.inf.pucrs.br/~stoscani
Gerência de Arquivos



É um dos serviços mais visíveis do SO.
Arquivos são normalmente implementados a
partir de discos magnéticos.
Como um acesso a disco demora cerca de
10000 vezes mais que um acesso à memória,
são necessárias estruturas de dados e
algoritmos que otimizem os acessos ao disco.
Arquivo



Coleção de dados relacionados entre si
Referenciados através de nomes
Possuem atributos como:
•
•
•
•
tipo
momento da criação
tamanho
nome do criador
Tipos de Arquivos

Cada arquivo possui uma estrutura interna,
conforme sua aplicação:
•
•
•
Um arquivo texto (.doc) é composto por uma
sequência de caracteres organizados em linhas e
parágrafos
um programa executável é uma seqüência de bytes
representando instruções em código de máquina
um programa fonte é uma seqüência de caracteres
que representam comandos de uma linguagem de
programação (arquivos tipo “somente texto”, que não
admitem qualquer tipo de formatação especial)
Sistemas Baseados em Fita

Inicialmente, cada arquivo era gravado em uma
única fita. Haviam dois problemas:
•
•


Arquivos muito grandes não cabiam em uma fita
Arquivos pequenos geravam desperdício de espaço
Criação de sistemas multi-volume, para suprir
necessidades de arquivos grandes
Utilização de diretórios permitiram armazenar
diversos arquivos em uma única fita
Sistemas Baseados em Fitas


Diretório: criado para localizar a
partição em que se encontra cada
arquivo na fita.
Cada entrada do diretório contém um
nome de arquivo e sua posição na fita.
Sistemas Baseados em Fita

Leitura de arquivo:
• localizar e carregar a fita indicada pelo usuário
• localizar no diretório a entrada correspondente
•
•
•
ao arquivo
posicionar a fita no ponto correspondente ao
início do arquivo
iniciar a leitura
terminar a leitura quando encontrar a marca
de fim de arquivo
Sistemas Baseados em Disco




Um disco é dividido em trilhas
O número de trilhas é particular de cada
dispositivo
Cada trilha dividida em setores
Setor a menor unidade de informação
que pode ser lida ou escrita em um
disco
Sistemas Baseados em Disco

Acesso a um setor:
• informar face, trilha e setor desejado
• as cabeças de leitura e gravação são
•
•
deslocadas até a trilha correta (tempo de
seek),
o cabeçote da face correta é selecionado
eletronicamente
esperar até o setor desejado passar por baixo
do cabeçote (tempo de latência)
Sistemas Baseados em Disco



Normalmente, uma unidade de disco rígido é
formada por vários discos superpostos (no
máximo 8 discos, com a tecnologia atual)
Cilindro: é formado pelas trilhas que estão na
mesma posição, porém em diferentes faces
(no caso de 8 discos superpostos cada
cilindro é formado por 16 trilhas).
Não é necessário deslocar as cabeças para
acessar trilhas de um mesmo cilindro
Sistemas Baseados em Disco


Hoje em dia, o SO trata o disco como
um vetor de blocos, cada bloco
corresponde a um setor.
Vantagem do disco sobre a fita:
• possibilidade de acessar facilmente qualquer
setor a qualquer momento (a fita permite
apenas o acesso seqüencial)
Sistemas Baseados em Discos



Os discos possuem diretórios
Os diretórios são armazenados no
próprio disco, normalmente em um
endereço fixo
Isto possibilita a remoção do disco sem
perda das informações correspondentes
aos arquivos
Suporte a Arquivos

Chamadas de sistema permitem as
seguintes operações sobre arquivos:
• criar um arquivo
• escrever no arquivo
• ler o arquivo
• remover o arquivo
• reposicionar o ponto de acesso ao arquivo
Operações em Arquivos

Criar um arquivo:
• necessita de dois passos:
• encontrar e alocar espaço suficiente no disco,
• adicionar uma entrada no diretório para conter as
informações referentes ao arquivo (nome,
localização, ...)
Operações em Arquivos

Escrever no Arquivo:
• para escrever em uma arquivo o usuário deve
•
fornecer o nome do arquivo e o bloco com a
informação a ser escrita
O SO procura a localização do final do
arquivo no disco, escreve o bloco e atualiza o
ponteiro de final de arquivo
Operações em Arquivos

Ler o Arquivo:
• o usuário executa uma chamada de sistema
fornecendo o nome do arquivo e a posição da
memória principal para onde as informações
do bloco serão copiadas
Operações em Arquivos

Remover o Arquivo:
• pesquisa o diretório e remove a entrada
correspondente ao arquivo. Libera o espaço
em disco ocupado pelo arquivo
Operações em Arquivos

Reposicionar o arquivo:
• consiste em localizar a entrada no diretório
correspondente ao arquivo e modificar o valor
do ponteiro que indica a posição corrente do
arquivo
Operações em Arquivos



Todas as operações sobre um arquivo
envolvem uma pesquisa no diretório em
busca da entrada correspondente ao
arquivo desejado.
Cada entrada do diretório corresponde a
um descritor de arquivo
O descritor contém todas as
informações necessárias para a
manipulação do arquivo
Tabela de Descritores de
Arquivos Abertos (TDAA)



O acesso a um arquivo é feito através do seu
descritor
Para evitar a pesquisa freqüente ao disco, o SO
mantém na memória uma Tabela de
Descritores de Arquivos Abertos
O arquivo é aberto quando ele começa a ser
utilizado (desse modo, todas as informações
sobre os arquivos em uso são mantidas na
memória principal)
TDAA e TAAP




Um mesmo arquivo pode ser utilizado simultaneamente por
vários processos (i.é, uma mesma entrada da TDAA pode
ser utilizada por vários processos)
Por isso, cada entrada da TDAA contém uma indicação de
quantos processos estão utilizando o arquivo
correntemente
O mesmo arquivo pode estar sendo acessado por
diferentes processos em pontos diferentes e com direitos
de acesso diferentes
Por isso, cada processo contém uma tabela extra com
informações apenas sobre os arquivos abertos por esse
processo. Essa tabela é denominada Tabela de Arquivos
Abertos por Processo (TAAP)
Tabela de Arquivos Abertos por
Processo (TAAP)

No mínimo, a TAAP contém em cada
entrada as seguintes informações:
• Posição corrente no arquivo;
• Tipo de acesso (apenas leitura ou leitura e
•
escrita);
Apontador para a entrada correspondente na
TDAA.
TDAA e TAAP
TAAP do processo 0
0
0
1
TDAA
Pos. Cor. 12
Leitura
0
Ar q u i v o A
Pos. Cor. 55
Leit. & Escr.
2
1
2
Ar q u i v o B
TAAP do processo 1
3
0
Pos. Cor. 10
Leitura
2
4
Tanto a TDAA como as TAAP devem ficar na memória do sistema operacional, fora do
acesso dos processos de usuário.
Métodos de Acesso



Acesso seqüencial
Acesso direto
Acesso indexado
Acesso Seqüencial


Uma leitura sempre acessa o próximo
registro e avança um ponteiro sobre o
arquivo
O ponteiro indica qual a próxima
posição a ser lida ou escrita
Acesso Seqüencial
A rquivo
A
B
C
D
E
F
...
L e r Ar q u i v o
A
L e r Ar q u i v o
B
L e r Ar q u i v o
C
Acesso Direto


O arquivo é uma seqüência numerada
de registros (blocos)
Qualquer registro pode ser diretamente
lido ou escrito
Acesso Direto
A rquivo
A
B
C
D
E
F
...
L e r Ar q u i v o , p o s i ç ã o
C
L e r Ar q u i v o , p o s i ç ã o
E
L e r Ar q u i v o , p o s i ç ã o
A
Acesso indexado


Envolve a construção de índices nos
descritores de arquivos
Usa como base o serviço de acesso
direto
Gerência do Espaço Livre


Espaço em disco é limitado, por isto é
necessário reaproveitar todo o espaço
disponível
Lista de setores livres: mantida pelo
SO para controlar os espaços livres no
disco
Métodos de Alocação



Contígua
Encadeada
Indexada
Alocação Contígua



Cada arquivo ocupa um conjunto de
blocos (setores) contíguos no disco
Para localizar um arquivo basta saber o
número do primeiro setor e o tamanho
do arquivo em blocos
Para acessar o arquivo de forma
seqüencial, o SO mantém o número do
último bloco acessado
Alocação Contígua


Dificulta o processo de localizar espaço
livre para novos arquivos
Usa os algoritmos:
• first-fit: utiliza o primeiro espaço grande o
•
•
suficiente que for encontrado
best-fit: utiliza espaço livre que deixa a menor
sobra
worst-fit: maior sobra
Alocação Contígua


No momento da criação, é difícil
determinar o número de blocos a serem
alocados para o arquivo
É difícil aumentar o tamanho do arquivo
Alocação Encadeada



Cada arquivo corresponde a uma lista
encadeada de blocos, estando os
mesmos em qualquer local do disco
Diretório possui apenas o endereço do
bloco inicial e o número de blocos (ou
endereço do último bloco)
Cada bloco possui o endereço do bloco
seguinte (ponteiros associados a cada
bloco)
Alocação Encadeada


Os arquivos podem ser criados com
tamanho zero
Inserções em arquivos resultam na
retirada de blocos da lista de livres e
inserção dos mesmos na lista que forma
o arquivo
Alocação Encadeada



Não permite acesso direto a um bloco
Eficiente na implementação de acesso
seqüencial
Não confiável: caso ocorra algum
problema com um bloco, boa parte do
arquivo é perdida, pois cada bloco
possui um link para o setor seguinte
Alocação Indexada




Cada arquivo possui um bloco de índices
O diretório possui o endereço do bloco de
índices de cada arquivo
Para acessar um bloco específico do arquivo
é necessário acessar o bloco de índices para
determinar o seu endereço físico no disco
Os arquivos podem ser criados com tamanho
zero
Alocação Indexada
Disco
Bloco
0
Físico
1
Descritor
BL 3
2
3
BL 0
4
5
BL 2
6
7
BL 4
8
BL 1
9
12
13
Indices: 0
3
1
8
2
5
3
1
4
7
5
11
6
7
10
11
Tamanho: 6
8
BL 5
9
Alocação Indexada



Permite acesso direto
Ocupa-se um setor inteiro para índices
Para arquivos grandes são necessários
vários setores de índices
Tamanho da tabela de índices



Uma questão importante é o tamanho da tabela de
índices. O número de entradas na tabela define o
tamanho máximo de um arquivo no sistema.
Se cada bloco físico tem 4 Kbytes, para que o tamanho
máximo de um arquivo seja 4 Gbytes, é necessário uma
tabela de índices com “4 Gbytes ÷ 4 Kbytes” entradas, ou
seja, 1.048.576 entradas (o que é um exagero)
Por outro lado, uma tabela de índices com apenas 5
entradas seria suficiente para um arquivo de 20 Kbytes
(este é o tamanho médio dos arquivos em sistemas de
propósito geral)
Tamanho da tabela de índices


A solução típica que compatibiliza
eficiência na representação de arquivos
pequenos e tamanho máximo
satisfatório para arquivos grandes é
empregar níveis de indireção na
indexação.
O slide a seguir mostra o uso de índices
(apontadores diretos e indiretos) no
sistema Unix
10 * 4K
0
Bloco de dados (4 Kbytes)
1
2
. . . Bloco de apontadores
3
( 1024 apontadores de 4 bytes)
4
5
6
7
1024 * 4K
8
9
...
...
10
1024 * 1024 * 4K
...
11
12
...
...
...
...
...
...
1024 * 1024 * 1024 * 4K
...
...
...
...
...
...
...
...
...
...
Sistema de Diretórios



Diretório de nível único
Diretório de dois níveis
Diretórios em forma de árvore
Diretório de Nível Único


Todos os arquivos fazem parte do
mesmo diretório
Problemas de organizaçãono caso de
muitos arquivos. É necessário nome
único para cada arquivo
Diretório de Dois Níveis



Criam-se diretórios separados para cada
usuário
No diretório principal mantem-se apenas
os endereços dos diretórios dos
usuários
Proteção contra acessos indevidos
Diretórios Estruturados em
Árvore



Os usuários podem criar seus próprios
sub-diretórios para organizar seus
arquivos
A árvore possui um diretório raiz
Cada arquivo possui um pathname
(nome do arquivo composto pelos
nomes de diretórios que formam o
caminho da raiz até ele)
Formas de Implementar
Diretórios



Basicamente, um diretório contém um conjunto
de descritores (que apontam para outros
diretórios ou para arquivos de dados)
A forma mais simples de implementar
diretórios é considerá-los como arquivos
especiais, cujo conteúdo é manipulado pelo
próprio SO
Diretórios passam a ser arquivos cujo
conteúdo é definido pelo SO e cujo acesso,
por parte de usuários, é controlado
Formas de Implementar
Diretórios

Um diretório pode ser organizado na
forma de:
• um conjunto de descritores de arquivos
• um conjunto de endereços de descritores
de arquivos
Diretório organizado como um
conjunto de descritores de arquivos


O diretório contém diretamente os registros
descritores (de arquivos ou diretórios)
Desvantagens:
•
•
(1) os nomes ficam fortemente vinculados aos
descritores de arquivos (impede, p.ex., que se use
mais de um nome para um mesmo arquivo);
(2) os diretórios tendem a ser maiores e estão mais
sujeitos a inconsistências, pois estão espalhadas por
todo o disco.
Diretório organizado como um
conjunto de descritores de arquivos
"passw d"
atributos
localização
"etc"
atributos
localização
"usr"
atributos
localização
"bin"
atributos
localização
"hosts"
atributos
localização
conteúdo do
arquivo "/etc/passw d"
conteúdo do
arquivo "/etc/hosts"
conteúdo do
arquivo "/usr"
conteúdo do
arquivo "/bin"
(retângulos de cantos agudos representam diretórios e retângulos de
cantos arrendodados representam arquivos de dados)
Diretório organizado como um conjunto
de endereços de descritores



Cada entrada do diretório contém um par: um
nome de arquivo (ou de diretório) e um
ponteiro para o descritor correspondente
Neste esquema, é comum reservar uma parte
do disco para armazenar exclusivamente os
descritores de arquivos
Esses blocos reservados constituem um vetor
de descritores, no qual cada descritor pode
ser perfeitamente identificado pela posição
nesse vetor.
Diretório organizado como um conjunto
de endereços de descritores
conteúdo do "/"
"etc"
1
sistema de arquivos f lat
0
"usr"
2
"bin"
3
atributos
localização
conteúdo do "/etc"
1
atributos
localização
"passw d"
4
2
atributos
localização
conteúdo do
arquivo "/usr"
3
atributos
localização
conteúdo do
arquivo "/bin"
4
atributos
localização
conteúdo do
arquivo "/etc/passw d"
5
atributos
localização
conteúdo do
arquivo "/etc/hosts"
"hosts"
5
Supõe-se que o primeiro descritor
do vetor de descritores (índice 0)
descreve o diretório raiz da árvore
Proteção dos Arquivos

Confiabilidade: é proteção física

Proteção: é precaução contra acessos
indevidos
• obtêm-se criando cópias dos arquivos
• obtêm-se impossibilitando o acesso por
•
outros usuários
tipos de acesso: leitura, gravação e execução
(envolvem acesso a arquivo); criação e
remoção (envolvem acesso a diretório)
Questões de Implementação

Definição de como o sistema de arquivos vai
ser visto pelo usuário (conjunto de arquivos
lógicos):
• definição de arquivos e seus atributos
• operações permitidas
• estrutura de diretórios

Definição dos algoritmos e estruturas de
dados a serem usados para mapear o
sistema de arquivos lógicos nos dispositivos
físicos utilizados pelo sistema de arquivos
Questões de Implementação

Conceitualmente, um sistema de
arquivos é dividido em três níveis de
serviço:
• serviço de disco
• serviço de arquivo básico
• serviço de de diretório
Níveis de Serviço


Serviço de disco: responsável pela leitura e
escrita de setores diretamente no disco, sem
se preocupar com a organização dos arquivos
Serviço de arquivo básico: lida com a
abstração de arquivos, compostos por um
conjunto de registros (blocos). Operações
básicas do tipo leitura e escrita a partir de uma
determinada posição do arquivo
Níveis de Serviço


Serviço de diretório: preocupa-se com
a identificação e proteção de arquivos
descritos a partir de diretórios, de forma
que eles sejam acessados de forma
segura e conveniente.
Os diretórios mapeiam nomes
simbólicos em identificadores numéricos
utilizados pelo serviço de arquivos
(camada de baixo)
Níveis de Serviço
Usuários
Serviço de Diretório
Serviço de Arquivo
Básico
Serviço de Disco
FIM
Download

Sistema de Arquivos