Académique Documents
Professionnel Documents
Culture Documents
Resumo
Definio de arquivos e armazenamento memria secundria Organizao de arquivos Conceitos de arquivo fsico e arquivo lgico Manipulao de arquivos em C Acesso sequencial e aleatrio em arquivos em
Objetivos da aula
Ao final desta aula, espera-se que os alunos sejam capazes de
Explicar o que um arquivo, e as diferenas entre o armazenamento de dados em memria primria e secundria Comparar os tempos de acesso a dados em memria primria e secundria Explicar a importncia da organizao de arquivos para otimizao de acesso a dados em memria secundria Explicar os conceitos de arquivo fsico e arquivo lgico Implementar funes de manipulao de arquivos texto e binrio em linguagem C Explicar os conceitos de acesso sequencial e aleatrio em arquivos
Arquivos
Informao mantida em memria secundria
Disco rgido Flash memory Disquetes Fitas magnticas CD DVD Nuvem
O acesso RAM pode ser equivalente a procurar algo em um livro que se tem mo, enquanto procurar no disco seria comparvel a procurar algo em uma biblioteca
Tipo de armazenamento
HD no voltil RAM voltil
Estruturas de organizao de informaes em arquivos devem ser feitas com o objetivo de minimizar o acesso ao disco
Organizao de Arquivos
Objetivo: Minimizar as desvantagens do uso da memria externa
Minimizar o tempo de acesso ao dispositivo de armazenamento externo
Exemplo
prefervel acessar todas as informaes de um cliente (nome, endereo, compras) em um lugar s do que ter que procurar cada informao em um lugar diferente
Cronologia
Dados em fita com acesso sequencial Arquivos crescem demais e acesso sequencial fica proibitivo Uso de ndices que, com o crescimento dos arquivos, tambm ficam ineficientes Uso de rvores para apontar para os arquivos Porm, crescem de forma desigual rvores AVL ajudam com o balanceamento Mas garantem minizao de acessos a disco? rvores B e rvores B+ Hashing poderia ser uma boa opo, mas arquivos no so estveis Hashing dinmico
Abertura de arquivos
Arquivo novo (p/ escrita) ou arquivo j existente (p/ leitura ou escrita)... Em C
Comando fopen Parmetros especiais indicam o modo de abertura
Fechamento de arquivos
Encerra a associao entre arquivos lgico e fsico, garantindo que todas as informaes sejam atualizadas e salvas (contedo dos buffers de E/S enviados para o arquivo). S.O. fecha o arquivo se o aplicativo no o fizer. Interessante para:
Prevenir contra interrupo Liberar as estruturas associadas ao arquivo para outros arquivos
Exemplo de fechamento em C
fd= fopen(meuarq.dat,r) ...... fclose(fd)
#include <stdio.h> #include <stdlib.h> int main() { FILE *arq; Grava real e inteiro num float f=25.5, f1; arquivo, e depois os l int i=12, i1; if ((arq=fopen(teste.txt, wb+))==NULL) exit(1); fwrite(&f, sizeof(float), 1, arq); //grava em arq 1 bloco, de tamanho float, igual quele que inicia no endereo de f (i.e. o valor de f) fwrite(&i, sizeof(int), 1, arq); //grava em arq 1 bloco, de tamanho int, igual quele que inicia no endereo de i (i.e. o valor de i) rewind(arq); //posiciona no incio do arq fread(&f1, sizeof(float), 1, arq); // l 1 bloco de arq, de tam. float e armazena no endereo de f1 fread(&i1, sizeof(int), 1, arq); // l 1 bloco de arq, de tam. int e armazena no endereo de i1 fclose(arq); return(0); }
Fim de arquivo
Ponteiro de arquivo: controla o prximo byte a ser lido C:
feof() Retorna 1, se fim de arquivo; 0, caso contrrio
Seeking
Ao de mover o ponteiro para uma certa posio no arquivo
pos=fseek(fd, byte-offset, origin) Funo retorna a posio final do ponteiro byte-offset deslocamento, em bytes, a partir de origin Origin:
Seeking
#include <stdio.h> struct dados { L o 10 registro de um char c; arquivo int x; float y; } item; #define TAM sizeof(struct dados); int main() { FILE *pont; pont=fopen(arquivo.txt, r); if (fseek(pont, 9*TAM, 0)) //posiciona no incio do 10. Reg. printf(Erro na busca); else fread(&item, TAM, 1, pont); // l registro atual return(0); }
Bufferizao
Toda operao de I/O bufferizada
Buffer: I/O de dispositivos (teclado, vdeo, etc.),
exceto discos
Memria Cache: I/O discos 256K, 640K Os bytes passam por uma memria de transferncia de tamanho fixo e de acesso otimizado, de maneira a serem transferidos em blocos
Bufferizao
Qual o tamanho dos blocos de leitura/escrita?
Depende do SO e da organizao do disco Sistema de arquivo: gerencia a manipulao de dados no disco, determinando como arquivos podem ser gravados, alterados, nomeados ou apagados Ex. No Windows, determinado pela FAT File Allocation Table (FAT16, FAT32 ou NTFS)
Objetivos da aula
Ao final desta aula, espera-se que os alunos sejam capazes de
Explicar o que um arquivo, e as diferenas entre o armazenamento de dados em memria primria e secundria Comparar os tempos de acesso a dados em memria primria e secundria Explicar a importncia da organizao de arquivos para otimizao de acesso a dados em memria secundria Explicar os conceitos de arquivo fsico e arquivo lgico Implementar funes de manipulao de arquivos texto e binrio em linguagem C Explicar os conceitos de acesso sequencial e aleatrio em arquivos
Referncias Utilizadas
Livro: - FOLK, M.; ZOELLICK, B., File Structures, Second Edition. Addison-Wesley, 1992 Captulo 2.