Fundamentos de Arquivos. SCC203 Algoritmos e Estruturas de Dados II



Documentos relacionados
Fundamentos de Arquivos. SCE-183 Algoritmos e Estruturas de Dados II

Introdução. Manipulação de arquivos em C. Estrutura de Dados II Prof Jairo Francisco de Souza

Algoritmos e Programação _ Departamento de Informática

Manipulação de Arquivos

Estruturas de Dados. Profa. Juliana Pinheiro Campos

14. Arquivos. W. Celes e J. L. Rangel. Estruturas de Dados PUC-Rio 13-1

Programação de Computadores I. Linguagem C Arquivos

Arquivos. Estruturas de Dados II Vanessa Braganholo

Persistência de Dados

MC-102 Algoritmos e Programação de Computadores

Armazenamento Secundário. SCE-183 Algoritmos e Estruturas de Dados II

Algoritmos e Estruturas de Dados I 01/2013. Arquivos. Pedro O.S. Vaz de Melo

Algoritmos e Estruturas de Dados I. Arquivos. Pedro O.S. Vaz de Melo

Arquivos. Fundamentos de Arquivos. Discos X Memória Principal. Memória Secundária x Principal. Informação mantida em memória secundária (externa)

Computação 2. Aula 8. Profª. Fabiany Arquivos

Fundamentos de Arquivos

Algoritmos e Programação Estruturada

Armazenamento de Dados. Prof. Antonio Almeida de Barros Junior

Fundamentos de Arquivos e Armazenamento Secundário

Fundamentos de Programação 1

Operaçõe õ s c om o Strings Intr oduç ão a o Ponte iros o e Funçõe õ s

Computação 2. Aula 9. Diego Addan Arquivos

Estrutura da linguagem de programação C Prof. Tiago Eugenio de Melo tiago@comunidadesol.org

8. Tratamento de Arquivos

1ª versão. #include <stdio.h> #include <string.h> #include <stdlib.h> #define maxdiscos 1000

SOP - TADS Sistemas de Arquivos Cap 4 Tanenmbaum

PIP/CA - Programa Interdisciplinar de Pós-Graduação em Computação Aplicada da UNISINOS ALGORITMOS & ESTRUTURAS DE DADOS

Arquivos. Programação de Computadores I. Natália Batista.

Sistemas Operacionais

INF 1005 Programação I

Aula 14 Oficina de Programação Tópicos Especiais em C: Arquivos. Profa. Elaine Faria UFU

10) REGISTROS : Exemplos: var N,I: integer; A,B,C: real; CHAVE: boolean; CARAC: char; V: array[1..20] of real; M: array[1..10,1..

1 Funções básicas de implementação de arquivos

SSC304 Introdução à Programação Para Engenharias. Arquivos. GE4 Bio

INF 1005 Programação I

Introdução a Programação. Ponteiros e Strings, Alocação Dinâmica

Funções de um SO. Gerência de processos Gerência de memória Gerência de Arquivos Gerência de I/O Sistema de Proteção

Capacidade = 512 x 300 x x 2 x 5 = ,72 GB

Projeto: Camada Independente de Dispositivo

Sistema de Arquivos. Ambientes Operacionais. Prof. Simão Sirineo Toscani

Estruturas de Dados. Módulo 15 - Arquivos. 2/6/2005 (c) Dept. Informática - PUC-Rio 1

Sistema de Memórias de Computadores

6 - Gerência de Dispositivos

ARQUITETURA DE COMPUTADORES

Programação II. Arquivos - Conceito. Arquivos

AULA 5 Sistemas Operacionais

Primeiro Curso de Programação em C 3 a Edição

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA RIO GRANDE DO NORTE

SSC INTRODUÇÃO À COMPUTAÇÃO PARA ENGENHARIA AMBIENTAL REGISTROS E ARQUIVOS. Profa. Dra. Milena Guessi Margarido

Sistemas Operacionais: Sistema de Arquivos

MEMÓRIA. A memória do computador pode ser dividida em duas categorias:

Sistemas Operacionais 3º bimestre. Dierone C.Foltran Jr.

Departamento de Sistemas de Computação Universidade de São Paulo Introdução a Ciência de Computação I. Aula 13 Arquivos

Computação Eletrônica. Aula 12 Arquivos Texto e Binário. Prof: Luciano Barbosa. CIn.ufpe.br

Capítulo 2: Introdução à Linguagem C

Busca. Pesquisa sequencial

Manipulação de Arquivos

Aula: ARQUIVOS. Introdução à Ciência da Computação I Simone Senger Souza. ICMC/USP São Carlos

LP II Estrutura de Dados. Introdução e Linguagem C. Prof. José Honorato F. Nunes honorato.nunes@ifbaiano.bonfim.edu.br

Acadêmicos: Luís Fernando Martins Nagata Gustavo Rezende Vinícius Rezende Santos

Introdução. INF1005 Programação I 33K Prof. Gustavo Moreira gmoreira@inf.puc-rio.br

Métodos Computacionais. Arquivos

Existe uma quantidade de informação que pode ser armazenada para resolver o problema.

Pesquisa em Memória Primária. Prof. Jonas Potros

13a. Aula Manipulação de arquivos

Trabalho 3: Agenda de Tarefas

Estrutura de um programa em linguagem C

1) Ao ser executado o código abaixo, em PHP, qual será o resultado impresso em tela?

Exercício 1. Tabela 1: Cadastro de usuários, senhas e privilégios (exemplo). Login Senha Privilégio Armamento

Linguagem C: agregados heterogêneos, arquivos binários, recursividade. Prof. Críston Algoritmos e Programação

Sistemas Operacionais e Introdução à Programação. Programação com linguagem C

Computadores Digitais 2. Prof. Rodrigo de Souza Couto

Capítulo 6. Gerenciamento de Arquivos. 6.1 Arquivos 6.2 Diretórios 6.3 Implementação (6.3.1 a 6.3.6) 6.4 Exemplos

Introdução a Programação. Arquivos

CAP. IX - MANIPULAÇÃO DE ARQUIVOS Generalidades sobre Arquivos. 9.2 Abertura e Fechamento de Arquivos. Operações com arquivos:

MC102 Algoritmos e programação de computadores Aula 3: Variáveis

Disciplina de Introdução à Ciência da Computação ICC 1 - Teoria

SISTEMAS OPERACIONAIS ABERTOS Prof. Ricardo Rodrigues Barcelar

Sistemas de Arquivos. André Luiz da Costa Carvalho

Organização de Arquivos

Introdução à Programação

UFRJ IM - DCC. Sistemas Operacionais I. Unidade IV Sistema de arquivos. Prof. Valeria M. Bastos Prof. Antonio Carlos Gay Thomé 13/06/2012 1

2. OPERADORES ALGORITMOS, FLUXOGRAMAS E PROGRAMAS FUNÇÕES... 10

UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE INFORMÁTICA INFORMÁTICA APLICADA

INTRODUÇÃO À LINGUAGEM C++

Algoritmos e Estruturas de Dados II IEC013

Sistemas de Informação. Sistemas Operacionais 4º Período

Laboratório de Hardware

3. Arquitetura Básica do Computador

Introdução a Programação. Manipulando Arquivos em Modo Texto

Fundamentos de Sistemas Operacionais

Análises Geração RI (representação intermediária) Código Intermediário

Estruturas de Armazenamento e Indexação. Rafael Lage Moreira Barbosa

Programação Engenharia Informática (11543) 1º ano, 1º semestre Tecnologias e Sistemas de Informação (6619) 1º ano, 1º semestre

USP - ICMC - SSC SSC o. Semestre Disciplina de Introdução à Ciência da Computação ICC 1 - Teoria

Transcrição:

Fundamentos de Arquivos SCC203 Algoritmos e Estruturas de Dados II

Arquivos Informação mantida em memória secundária HD Disquetes Fitas magnéticas CD DVD 2

Discos X Memória Principal Tempo de acesso HD: ~ microsegundos s (10-6 ) RAM: ~ nanosegundos s (10-9 ) HDs são centenas e até milhares de vezes mais lentos que memória RAM 3

Discos X Memória Principal Exemplo: O acesso à RAM equivale a buscar uma informação no índice de um livro que está em suas mãos O acesso a disco seria equivalente a mandar buscar a mesma informação em uma biblioteca 4

Discos X Memória Principal Capacidade de Armazenamento HD muito alta, a um custo relativamente baixo RAM limitada pelo custo e espaço Tipo de Armazenamento HD não volátil RAM volátil 5

Discos X Memória Principal Em resumo acesso a disco é muito caro, isto é, lento! Então o número de acessos ao disco deve ser minimizado a quantidade de informações recuperadas em um acesso deve ser maximizada Estruturas de organização de informação em arquivos 6

Organização de Arquivos Meta: minimizar as desvantagens do uso da memória externa Minimizar o tempo de acesso ao dispositivo de armazenamento externo De forma independente da tecnologia Tempo de Acesso = nro. de acessos * tempo de 1 acesso 7

Discos X Memória Principal Estruturas de dados eficientes em memória principal são inviáveis em disco Seria fácil obter uma estrutura de dados adequada para disco se os arquivos fossem estáveis (não sofressem alterações) Solução: organização adequada de arquivos no disco, e de informações em arquivos 8

Discos X Memória Principal O ideal é que a informação necessária possa ser obtida com apenas 1 acesso a disco. Se o ideal não pode ser atingido, deseja-se chegar o mais próximo possível. Por exemplo, o método de busca binária permite que um registro pesquisado entre 50.000 seja encontrado em no máximo 16 comparações (log 2 50.000 ~ 16)... mas acessar o disco 16 vezes para buscar uma informação é tempo demais. Precisamos de estruturas que permitam recuperar esse mesmo registro em dois ou três acessos! 9

Discos X Memória Principal Queremos estruturas que agrupem informações de modo a permitir que toda (ou quase toda) a informação necessária seja obtida, idealmente, em uma única operação de acesso a disco Por exemplo, se precisamos do nome, endereço, telefone, saldo, número da conta, etc. de um certo cliente, é preferível obter toda essa informação de uma só vez ao invés de ficar procurando em vários lugares... 10

Discos X Memória Principal História - Cronologia Dados em fitas com acesso sequencial Arquivos cresceram demais e o acesso sequencial ficou proibitivo Uso de índices que, com o crescimento dos arquivos, também ficam ineficientes Uso de árvores para apontar para os arquivos, mas árvores crescem de maneira desigual AVLs Qual a dificuldade? Árvores B e árvores B+ Hashing seria uma boa opção, mas arquivos não são estáveis Hashing dinâmico 11

Arquivo Físico e Arquivo Lógico Arquivo Físico: sequência de bytes armazenada no disco Arquivo Lógico: arquivo como visto pelo aplicativo que o acessa Associação arquivo físico arquivo lógico: iniciada pelo aplicativo, gerenciada pelo S.O. 12

Arquivo Físico e Arquivo Lógico Arquivo Físico: conjunto de bytes no disco, geralmente agrupados em setores de dados. Gerenciado pelo sistema operacional Arquivo Lógico: modo como a linguagem de programação enxerga os dados. Uma sequência de bytes, eventualmente organizados em registros ou outra estrutura lógica. 13

Arquivo Físico e Arquivo Lógico Arquivo lógico é como usar um telefone para se conectar com qualquer pessoa Não precisamos saber onde a pessoa está, mas podemos falar com ela O arquivo lógico pode se relacionar a um arquivo em disco ou a outros dispositivos de E/S 14

Exemplo: Associação entre Arquivo Físico e Arquivo Lógico Em C: (associa e abre para leitura) file *p; if ((p=fopen( meuarq.dat, r ))==NULL) else... printf( erro... ) 15

Esquema Memória Cache RAM Hard Disk Programas Dados fd 100110000111 S.O: sist. Arquivos - FAT meu_arq 16

Abertura de Arquivos Arquivo novo (p/ escrita) ou arquivo já existente (p/ leitura ou escrita)... 17

Abertura de Arquivos Em C Comando fopen Parâmetros especiais indicam o modo de abertura 18

Função fopen fd=fopen(<filename>,<flags>) <filename>: nome do arquivo a ser aberto <flags>: controlam o modo de abertura r apenas leitura modo texto; o arquivo precisa existir w cria arquivo vazio para escrita modo texto (se já existe, é apagado) a adiciona (append) texto no final do arquivo (se arquivo não existe, cria) r+ Abre arquivo para leitura e escrita modo texto w+ Cria arquivo vazio para leitura e escrita modo texto a+ Abre arquivo para leitura e adição modo texto rb, wb, ab, rb+, wb+, ab+ : análogo para modo binário 19

Fechamento de Arquivos Encerra a associação entre arquivos lógico e físico, garantindo que todas as informações sejam atualizadas e salvas (conteúdo dos buffers de E/S enviados para o arquivo). S.O. fecha o arquivo se o aplicativo não o fizer. Interessante para: Prevenir contra interrupção Liberar as estruturas associadas ao arquivo para outros arquivos 20

Exemplo: fechamento de arquivos C: fd= fopen( meuarq.dat, r )... fclose(fd) 21

Leitura e Escrita Modo Texto C: Funções da linguagem fgets(<cadeia>,<nro_caracteres>,<fd>) fputs(<cadeia>,<fd>) dados lidos/escritos como strings Não se especifica formato 22

Leitura e Escrita Modo Texto #include <stdio.h> #include<stdlib.h> #include <string.h> int main() { char str[80]; FILE *fp; if ((fp=fopen( teste.txt, w ))==NULL) { printf( Arquivo não encontrado ); exit(1); } do { printf( Entre com uma string: ); gets(str); fputs(str,fp); while (strcmp(str, fim )); fclose(fp); return(0); } Lê da console até a cadeia fim e grava no arquivo 23

Leitura e Escrita Modo Texto C: Funções da linguagem fscanf(fd,formato,argumentos) fprintf(fd,formato,argumentos) dados lidos/escritos de modo formatado Especifica formato (+ flexível) 24

Leitura e Escrita Modo Texto #include <stdio.h> int main() { FILE *f, *g; char c, d; f=fopen( arq1.txt, r ); g=fopen( arq2.txt, w ); switch (fscanf(f, %c %c, &c, &d)) { } } fclose(f); fclose(g); return(0); Lê 2 caracteres de um arquivo e grava em outro case 1: fprintf(g, %c, c); break; // leu um valor case 2: fprintf(g, %c %c, c, d); break; // leu dois valores default: if ferror(f) printf( problemas na leitura do arquivo ); break; 25

Leitura e Escrita Caracteres C: Funções da linguagem fgetc() fputc() dados lidos/escritos um caracter por vez 26

Leitura e Escrita Modo Binário fread(<dest-address>,<nro_bytes>,<contador>,fd) fwrite(<dest-address>,<nro_bytes>,<contador>,fd) dados lidos/escritos como registros ou blocos de bytes modo binário 27

Leitura e Escrita Modo Binário #include <stdio.h> #include <stdlib.h> int main() { FILE *arq; float f=25.5, f1; int i=12, i1; if ((arq=fopen( teste.txt, wb+ ))==NULL) exit(1); Grava real e inteiro num arquivo, e depois os lê fwrite(&f, sizeof(float), 1, arq);//grava em arq 1 bloco, de tamanho float, igual àquele que inicia no endereço 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 endereço de i (i.e. o valor de i) rewind(arq); //posiciona no início do arq fread(&f1, sizeof(float), 1, arq); // lê 1 bloco de arq, de tam. float e armazena no endereço de f1 fread(&i1, sizeof(int), 1, arq); // lê 1 bloco de arq, de tam. int e armazena no endereço de i1 fclose(arq); return(0); 28

Fim de Arquivo Ponteiro de arquivo: controla o próximo byte a ser lido C: feof() Retorna 1, se fim de arquivo; 0, c.c. 29

O ponteiro no arquivo lógico 30

Acesso sequencial X aleatório Leitura sequencial: ponteiro de leitura avança byte a byte (ou por blocos), a partir de uma posição inicial Acesso aleatório (direto): acesso envolve o posicionamento do ponteiro em um byte ou registro arbitrário 31

Seeking Ação de mover o ponteiro para uma certa posição no arquivo pos=fseek(fd, byte-offset, origin) Função retorna a posição final do ponteiro byte-offset deslocamento, em bytes, a partir de origin Origin: 0 início do arquivo 1 posição corrente 2 final do arquivo Retorna 0 quando bem sucedida 32

Seeking #include <stdio.h> struct dados { char c; int x; float y; } item; #define TAM sizeof(struct dados); int main() { FILE *pont; pont=fopen( arquivo.txt, r ); } Lê 10º. registro de arquivo if (fseek(pont, 9*TAM, 0)) printf( Erro na busca ); else fread(&item, TAM, 1, pont); // lê registro atual return(0); //posiciona no início do 10º. Reg. 33

Bufferização Toda operação de I/O é bufferizada Buffer: I/O de dispositivos (teclado, vídeo, etc.) exceto discos Memória Cache: I/O discos 256K, 640K Os bytes passam por uma memória de transferência de tamanho fixo e de acesso otimizado, de maneira a serem transferidos em blocos Por quê? 34

Bufferização Qual o tamanho dos blocos de leitura/escrita? Depende do SO e da organização do disco Sistema de arquivo: gerencia a manipulação 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) 35

Leitura e Escrita Exercício (a) Escrever um programa em C que Declare uma estrutura com o nome e a nota de um aluno Leia do usuário os nomes e as notas de uma turma de graduação com 50 alunos (assuma que cada aluno tem um número identificador de 1 a 50) Escreva em um arquivo todos os dados lidos Recupere o nome e a nota de um aluno de número especificado pelo usuário (b) idem, mas ordene os dados pelos nomes dos alunos antes de gravá-los no arquivo. 36