Professional Documents
Culture Documents
Faculdade de Tecnologia
Universidade Estadual de Campinas
celmar@ft.unicamp.br
1
ST562 – Estruturas de Arquivos
Aula 01
● Assuntos:
– Avisos gerais
– Introdução à disciplina
2
ST562 – Estruturas de Arquivos
Revisão básica
3
ST562 – Estruturas de Arquivos
Memórias
4
ST562 – Estruturas de Arquivos
Lentidão
5
ST562 – Estruturas de Arquivos
Lentidão
Lentidão
7
ST562 – Estruturas de Arquivos
RAM x Discos
● RAM
– Acesso praticamente imediato aos dados
armazenados
– Capacidade: Pequena (ex. 4 GB)
– Não mantém os dados se computador for desligado
(volátil)
● Discos
– Acesso lento aos dados armazenados
– Capacidade: Grande (ex. 2 TB... ou mais!)
– Mantém os dados mesmo se computador for
desligado (não-volátil)
8
ST562 – Estruturas de Arquivos
Discos
Capacidade e não-volatilidade
9
ST562 – Estruturas de Arquivos
10
ST562 – Estruturas de Arquivos
11
ST562 – Estruturas de Arquivos
Algumas preocupações
12
ST562 – Estruturas de Arquivos
Algumas preocupações
13
ST562 – Estruturas de Arquivos
História de estruturas de
arquivos
● Primeiros trabalhos:
– Arquivos estavam gravados em fita
– Acesso sequencial: custo crescia com o tamanho do
arquivo
– Uso de índices
● 1960...:
– Índices cresciam muito e se tornavam difíceis de
gerenciar, devido a alterações frequentes
– Uso de árvores para tentar resolver esse problema
– 1963: Desenvolvimento de árvore AVL para uso na
RAM; AVL não parecia adequada para uso com arquivos
14
ST562 – Estruturas de Arquivos
História de estruturas de
arquivos
● 1970...:
– 1973: Desenvolvimento de árvore B para organização
de índices em arquivo – Rápido acesso a registros
individuais.
– Problema: acesso sequencial ficou prejudicado
– Desenvolvimento de árvore B+: acesso sequencial e a
registros individuais
– Acessos a registro de arquivo em 3 ou 4 acessos a disco
● 1980...:
– Hashing e Hashing estendido: acessos a registro de
arquivo em 1 acesso a disco
15
ST562 – Estruturas de Arquivos
Operações fundamentais de
processamento de arquivos
● Abrir arquivo
● Fechar arquivo
● Leitura de sequência de bytes
● Escrita de sequência de bytes
● Seeking (mover apontador de leitura e escrita)
16
ST562 – Estruturas de Arquivos
Criação de arquivo
#include <stdio.h>
int main() {
const int TAMANHO_BUFFER = 1024;
const int TOTAL = 100*1024*1024;
char buffer[TAMANHO_BUFFER+1];
FILE *fp;
fp = fopen("test","w");
int x,t;
for (t=0; t<TAMANHO_BUFFER; t++) {
buffer[t]=65 + (t & 15);
}
for (x=0; x<TOTAL/TAMANHO_BUFFER; x++) {
fwrite(&buffer, TAMANHO_BUFFER, 1, fp);
}
fclose(fp);
}
17
ST562 – Estruturas de Arquivos
Leitura de arquivo
#include <stdio.h>
#include <stdlib.h>
19
ST562 – Estruturas de Arquivos
20
ST562 – Estruturas de Arquivos
Tam. de bloco X Velocidade
0,600
0,500
Velocidade de leitura (s)
0,400
0,300
0,200
0,100
0,000
0 512 1024 1536 2048 2560 3072 3584 4096 4608
Tam. de bloco (bytes)
22
ST562 – Estruturas de Arquivos
Tam. de bloco X Velocidade
2,500
2,000
Velocidade de leitura (s)
1,500
1,000
0,500
0,000
1 10 100 1000 10000 100000
Tam. de bloco (bytes)
Exercícios
último)?
24