Introdução aos Sistemas de
Gerência de Arquivos
Bianchi Serique Meiguins
Diovanni Moraes
Roberto Franco
Belém, 24/11/2011
Conceitos
• Arquivo:
– É um conjunto de registros definidos pelo sistema de arquivos e podem ser armazenados em
diferentes dispositivos físicos.
– É constituído de informações logicamente
relacionadas, podendo representar programas ou dados.
• A representação de dados dentro de um
computador digital é feita na forma de
Conceitos
• No Linux ou no Windows, arquivos são
concebidos e tratados como STREAMS
(minhocas) de BYTES.
• O que é um BYTE? Um BYTE é um número
entre 0 e 255.
Representação de um Arquivo
• O computador só entende números
• Portanto, para ele entender letras, números e
caracteres especiais é definido uma tabela de
códigos.
– Ex: Tabela ASCII, Tabela UNICODE
A : 65 B : 66 ... Z : 90 a : 97 b : 98 ... z : 122 0 : 48 1 : 49 ... 9 : 57 Caracteres especiais: 0 : NULO 8 : BACKSPACE 9 : TAB 10 : mudança de linha 12 : mudança de página 13 : ENTER
Representação de um Arquivo
• Representação interna do conteúdo de um
arquivo:
• Convertendo a representação interna de um
arquivo (considere para um arquivo texto):
65 66 67 10 49 50 51 10 68 69 10 97 98 10 A B C 10 1 2 3 10 D E 10 a b 10 mudança de linha mudança de linha mudança de linha mudança de linha
Sistemas de Arquivos
• O sistema de arquivos é gerenciado pelo
sistema operacional.
• Sua estrutura é apresentada de forma
independente, uniforme e visível,
possibilitando a organização das informações.
• É responsável por guardar um conjunto de
dados com características ACID (Atomididade,
Consistência, Isolamento e Durabilidade).
• Meio de armazenamento implica em uma
organização de arquivos específica.
Características dos sistemas de
arquivos
• Segurança ou permissões
• Listas de controle de acesso (ACLs)
• Mecanismo para evitar a fragmentação
• Capacidade de enlaces simbólicos (symbolic links)
ou duros (hard links)
• Integridade do sistema de arquivos (Journaling)
• Suporte para arquivos dispersos
• Suporte para quotas de discos
• Suporte de crescimento do sistema de arquivos
nativo
Métodos de Acesso
• Acesso Seqüencial
– É o mais conhecido e mais freqüentemente
utilizado. Num arquivo seqüencial, a ordem lógica e física dos registros armazenados é a mesma.
Como os registros são armazenados um após o outro em seqüencia, a leitura de um registro n requer que os n-1 registros anteriores também sejam lidos.
Métodos de Acesso
• O arquivo seqüencial pode ser:
– Ordenado utiliza um campo chave – Não ordenado ordem de gravação
• Tarefas que podem ser realizadas em um
arquivo seqüencial:
– Inserir registros – Remover registros – Atualizar registros – Consultar registros
Métodos de Acesso
• Acesso Direto
– Permite a leitura/gravação de um registro
diretamente na sua posição. É realizado através do número de registro. Não existe restrição a ordem em que os registros são lidos ou gravados.
Somente é possível quando é definido com registros de tamanho fixo.
– O endereço usado para localizar um registro pode ser absoluto ou relativo
Métodos de Acesso
• Acesso Indexado ou por chave
– O arquivo deve possuir uma área de índice onde existam ponteiros para os diversos registros e a partir desta informação realiza-se um acesso direto.
– Podemos fazer analogia a organização de um livro – Essa área de índice nada mais são do que arquivos
Métodos de Acesso
• O arquivo de índice pode ser criado de duas
formas:
– Índice Denso: existe um registro no arquivo de índices para cada valor de chave no arquivo principal. É mais rápido porém mais pesado
– Índice Esparso: registros de índice são criados para apenas alguns registros. Outros valores de chave são procurados a partir do registro de índice mais próximo. É menos pesado e mais lento que o
anterior, porém tem a vantagem de tomar menor esforço na manutenção para inclusões e
Métodos de Acesso
Métodos de Acesso
• Acesso Seqüencial-Indexado
– Utiliza o princípio da pesquisa seqüencial: a partir do primeiro, cada registro é lido seqüencialmente até encontrar uma chave maior ou igual a chave de pesquisa.
– Duas providências para melhorar a eficiência e não percorrer todos em seqüência:
– 1- O arquivo deve ser mantido ordenado pelo campo chave do registro
– 2- Um arquivo de índices contendo pares de valores <x, p> deve ser criado, onde x representa uma chave e
p representa o endereço da página na qual o primeiro
Métodos de Acesso
Algoritmos de Pesquisa
• Pesquisa Exaustiva
k -1 // significa que Elem não foi encontrado em V i 0
Enquanto (i < tam) e (k = -1) Fazer Se (V[i] = Elem) então
k i senão
i i + 1 Se (k = -1) então
Elem não se encontra em V senão
Algoritmos de Pesquisa
• Pesquisa Seqüencial
k -1 // significa que Elem ainda não foi encontrado em V i 0 // índice dos elementos do vector V
Enquanto (i < tam) e (k = -1) Fazer Se (V[i] = Elem) então
k i senão
Se (V[i] < Elem) então i i + 1 senão
k -2; // significa que Elem não está em V Se (k ≥ 0) então
Elem encontra-se na posição k senão
Algoritmos de Pesquisa
• Pesquisa Binária
• A idéia é comparar o elemento a pesquisar
com o elemento que está ao meio do vetor e
analisar 3 situações diferentes:
1.se aquele elemento é igual ao que está ao
meio,
2.se aquele elemento está antes do meio,
3.se aquele elemento está depois do meio.
Algoritmos de Pesquisa
• Pesquisa Binária
inicio <-- 0 fim <-- tam - 1
k <-- -1 // k recebe a posição de Elem (no início presume-se que não está) Enquanto ( (inicio ≤ fim) e (k = -1) ) Fazer
meio <-- (inicio + fim) / 2 Se (Elem = V[meio]) então
k <-- meio senão
Se (Elem < V[meio]) então fim <-- meio – 1 senão
inicio <-- meio + 1 Se (k ≥ 0) então
Elem encontra-se em V na posição k senão
Cache de sistemas de arquivos
Cache de sistemas de arquivos
• Vantagens e Desvantagens da Buffer Cache
• Minimização do número de transferências entre o disco e a memória (cache hits);
• O acesso a disco é tratado de uma forma uniforme.Existe apenas uma interface para acessar os dados de um disco; • Ajudar a manter a coerências dos blocos. Se dois processos
tentam acessar o mesmo bloco a buffer cache ordena os acessos;
• Torna o sistema mais vulnerável a acidentes de parada total (falta de energia, por exemplo) ("crashes");
• Torna a transferência de grandes quantidades de informação mais lenta.
Mapa Conceitual do Sistema de
Arquivos com Cache
• Estruturas Dinâmicas
– Listas – Árvores
• Hashing
• Monitoramento de Espaço Livre
– Lista Encadeada – Mapa de Bits
• TAREFAS
– Pesquisar sobre a estrutura de arquivos do Linux – Dica: como funciona os sistemas de partições
Estruturas Dinâmicas
• Árvores
– É uma estrutura de dados que herda as características das topologias em árvore.
Conceitualmente diferente das listas encadeadas, em que os dados se encontram numa sequência, nas árvores os dados estão dispostos de forma hierárquica.
Estruturas Dinâmicas
Estruturas Dinâmicas
• Árvore de Pesquisa Binária
– É uma estrutura de dados de árvore
binária baseada em nós, onde todos os nós da subárvore esquerda possuem um valor numérico inferior ao nó raiz e todos os nós da subárvore direita possuem um valor superior ao nó raiz (pode ser invertido).
Revisando:
Tamanho = nº de nós
Profundidade = nº de níveis Raiz 8
Estruturas Dinâmicas
• Algoritmo Árvore de Pesquisa Binária
• Busca
Estruturas Dinâmicas
• Algoritmo Árvore de Pesquisa Binária
• Inserir
Estruturas Dinâmicas
• Algoritmo Árvore de Pesquisa Binária
• Exclusão
Estruturas Dinâmicas
• Hashing
– O conceito teórico diz que "hash é a transformação de
uma grande quantidade de informações em uma pequena quantidade de informações".
– Essa sequência busca identificar um arquivo ou informação unicamente. Por exemplo, uma mensagem de correio
eletrônico, uma senha, uma chave criptográfica ou mesmo um arquivo.
– Como a sequência do hash é limitada, muitas vezes não passando de 512 bits, existem colisões (sequências iguais para dados diferentes). Quanto maior for a dificuldade de se criar colisões intencionais, melhor é o algoritmo.
Monitoramento do Espaço Livre
• Mapa de Bits
– Nesta forma de gerenciamento, é utilizado um espaço fixo adicional em disco especificamente
para o mapeamento do espaço livre, de forma que para cada bloco em disco é utilizado um bit no
mapa. Sendo assim, um disco com n blocos requer um mapa de bits com n bits. Não surpreende,
portanto, que os mapas de bits requeiram menos espaço, já que ele usa 1 bit por bloco, contra 32 bits no modelo de lista encadeada.