01 Arquivos: fundamentos SCC0215 Organização de Arquivos

Documentos relacionados
08 Arquivos: fundamentos SCC0503 Algoritmos e Estruturas de Dados II

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

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

Fundamentos de Arquivos

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

Algoritmos e Estruturas de Dados II IEC013

Leandro C. Cintra M.C.F. de Oliveira Rosane Minghim PAE 2012: Rafael Martins. Fonte: Folk& Zoelick, File Structure

Operações em Arquivos. MC102 Felipe Bergo

LINGUAGEM C: ARQUIVOS

Universidade Federal de Uberlândia Faculdade de Computação. Linguagem C: Manipulação de arquivos

Métodos Computacionais. Arquivos

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

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

Aula de Arquivos. Jesimar da Silva Arantes. Instituto de Ciências Matemáticas e de Computação Universidade de São Paulo - São Carlos, SP

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

Faculdade de Computação

Arquivos em C. Material da Prof. Ana Eliza

1/24 FICHEIROS DE TEXTO

E/S em Arquivo. Para ler ou escrever arquivos é preciso usar ponteiros de arquivo. Um ponteiro de arquivo é uma variável ponteiro do tipo FILE:

Programação de Computadores II

LINGUAGEM C: ARQUIVOS

FUNDAMENTOS DE ARQUITETURAS DE COMPUTADORES SISTEMAS DE COMPUTAÇÃO. Cristina Boeres

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

Sumário. Ficheiros. Ficheiros

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

Introdução a Programação. Arquivos

Computação Eletronica: Arquivos (Introdução)


Programação. MEAer e LEE. Manipulação de ficheiros de texto. Bertinho Andrade da Costa. Instituto Superior Técnico. 2010/2011 1º Semestre

MC-102 Aula 24 Arquivos em C e Parâmetros do Programa

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

Prof. Benito Piropo Da-Rin. Arquitetura, Organização e Hardware de Computadores - Prof. B. Piropo

Memória Principal. Tiago Alves de Oliveira

Linguagem C arquivos. IF61A/IF71A - Computação 1 Prof. Leonelo Almeida. Universidade Tecnológica Federal do Paraná

Puca Huachi Vaz Penna

Rosane Minghim e Guilherme P. Telles

ü Capítulo 4 Livro do Mário Monteiro ü Introdução ü Hierarquia de memória ü Memória Principal ü Memória principal ü Memória cache

Manipulação de Arquivos

ORGANIZAÇÃO DE COMPUTADORES CAPÍTULO4: MEMÓRIAPRINCIPAL

Arquivos. Fundamentos de Arquivos. Discos X Memória Principal. Informação mantida em memória secundária:

Outline. 33. Manipulação de arquivos DIM

ORGANIZAÇÃO DE COMPUTADORES MEMÓRIA. Prof. Dr. Daniel Caetano

Sistemas de Entrada e Saída

Arrays, Criação de Funções, Estruturas e Manipulação de Arquivos.

Profa. Leda G. F. Bueno

Arquivos em C Parte 2

Sistemas de Arquivos. (Aula 23)

Programação para Computação 13ª Aula

13a. Aula Manipulação de arquivos

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

UNIVERSIDADE DA BEIRA INTERIOR

Introdução à Informática

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

Linguagem C. Armazenamento de Dados em Arquivos - Continuação

1/22 FICHEIROS BINÁRIOS

C Arquivos. Adriano Cruz 21 de julho de Instituto de Matemática Departamento de Ciência da Computação UFRJ

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

Organização de Arquivos. SCE-183 Algoritmos e Estruturas de Dados II

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

CURSO BÁSICO DE PROGRAMAÇÃO AULA 17. Manipulação de arquivos binários.

Ordenação e Busca em Arquivos

9/24/2014. Prof. André Backes

Introdução à Informática UFRPE - UAST

Tópicos da aula. Histórico e Evolução dos Computadores. Noções Básicas de Arquitetura de Computadores

FUNDAMENTOS DE ARQUITETURAS DE COMPUTADORES MEMÓRIA PRINCIPAL CAPÍTULO 4. Cristina Boeres

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

Aula 16: Manipulação de Arquivos em C

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

Universidade de São Paulo São Carlos Instituto de Ciências Matemáticas e de Computação. Arquivos em C

Introdução à Informática. Alexandre Meslin

Sistema de Arquivos. Introdução

Unidade II FUNDAMENTOS DE SISTEMAS OPERACIONAIS. Prof. Victor Halla

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

Leitura de Arquivos. Prof. Fabrício Olivetti de França

Hardware - Processador

Algoritmos e Estruturas de Dados I Linguagem C

Introdução. Estrutura de Dados II Prof Jairo Francisco de Souza

Arquivos. Estruturas de Dados II Vanessa Braganholo

Aula 11: Memória Principal: Conceitos Básicos e Organização

Computação L. Apresentação da Disciplina e Conceitos Básicos de Computadores

Programação II. Arquivos - Conceito. Arquivos

ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES MEMÓRIA. Prof. Dr. Daniel Caetano

Fundamentos de Arquivos. SCC203 Algoritmos e Estruturas de Dados II

Sistemas Operacionais II Unix: Memória e E/S. Geraldo Braz Junior

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

Capítulo 11 Sistemas de Arquivos

Computadores Digitais 2. Prof. Rodrigo de Souza Couto

Fundamentos de Programação

Unidade II. Organização de Computadores. Prof. Renato Lellis

Implementação de Sistemas de Arquivos. Na Aula Anterior... Esquema do Sistema de Arquivos. Nesta Aula 31/10/2016. Estrutura de Baixo Nível de um Disco

Fundamentos de Arquivos e Armazenamento Secundário

UFRJ IM - DCC. Sistemas Operacionais I. Unidade IV Gerência de Recursos Entrada e Saída. 02/12/2014 Prof. Valeria M. Bastos

Principais Componentes do Gabinete. Componentes Básicos de um Computador. CPU ou UCP (Processador) 17/02/2017

Capítulo 11: Implementação de Sistemas de Arquivos. Operating System Concepts 8th Edition

DISCO MAGNÉTICO Cabeçote Trilha

USP - ICMC - SSC SSC o. Semestre Disciplina de Introdução à Computação para Engenharia Ambiental

Administração de Sistemas Operacionais Prof.: Marlon Marcon

Linguagem C: Arquivo-Texto

Transcrição:

01 Arquivos: fundamentos SCC0215 Organização de Arquivos Prof. Moacir Ponti Jr. www.icmc.usp.br/~moacir Instituto de Ciências Matemáticas e de Computação USP 2013/1 Moacir Ponti Jr. (ICMCUSP) Fundamentos Arquivos 2013/1 1 / 33

Sumário 1 Introdução Características do armazenamento secundário em disco Estruturas de arquivos: objetivos e exemplos Histórico 2 Operações e fundamentos de arquivos Arquivos Físicos e Lógicos Implementação em C Comandos do sistema de arquivos Unix Moacir Ponti Jr. (ICMCUSP) Fundamentos Arquivos 2013/1 2 / 33

Sumário 1 Introdução Características do armazenamento secundário em disco Estruturas de arquivos: objetivos e exemplos Histórico 2 Operações e fundamentos de arquivos Arquivos Físicos e Lógicos Implementação em C Comandos do sistema de arquivos Unix Moacir Ponti Jr. (ICMCUSP) Fundamentos Arquivos 2013/1 3 / 33

Arquivos Informação mantida em memória secundária HD Disquetes (old) Fitas magnéticas CD, DVD e Blu-ray Memória ash: pen-drives, mp3-9 player, cartões Outros? Futuro? bactérias [6], átomos, cristais [7]? Moacir Ponti Jr. (ICMCUSP) Fundamentos Arquivos 2013/1 4 / 33

Terminologia geral arquivo: uma estrutura de dados em um sistema de arquivos, que é mapeado para nomes para objetos como arquivos ou diretórios. estrutura de arquivo (le structure): um padrão para se organizar dados num arquivo (incluindo ler, escrever e modicar). algoritmo: um conjunto nito de regras bem-denidas para a solução de um problema num numero nito de passos. estrutura de dados: um padrão para organizar dados num algoritmo ou programa. Moacir Ponti Jr. (ICMCUSP) Fundamentos Arquivos 2013/1 5 / 33

Terminologia de acesso a arquivos armazenamento volátil: armazenamento que perde o conteúdo quando não alimentado por energia. armazenamento não-volátil: armazenamento que retém o conteúdo quando não alimentado por energia. dados persistentes: informação que é retida mesmo após a execução de um programa que a cria. Moacir Ponti Jr. (ICMCUSP) Fundamentos Arquivos 2013/1 6 / 33

Velocidade de acesso Discos são lentos! (assim como outros dispositivos para armazenamento secundário). No entanto são muito úteis por combinar baixo custo, alta capacidade de armazenamento e portabilidade. Quão lentos? O tempo de acesso típico em memória principal (RAM) é de 50 nanossegundos, ou 0, 00005 milissegundos. Para acesso a cache CPU ou registradores é de 1 nanossegundo. Para acessar a mesma informação em disco: 12 ms em HDDs portáteis, 10 ms em HDDs desktop, 4 mm em HDDs de servidor. 0, 10 ms em SSDs uma diferença da ordem de 200.000 em HDDs ou 2.000 em SSDs para a RAM. Moacir Ponti Jr. (ICMCUSP) Fundamentos Arquivos 2013/1 7 / 33

Velocidade de acesso Uma analogia para entender a diferença na velocidade do acesso: se acessar a memória principal é como encontrar uma informação num livro usando o índice, em 20 segundos, acessar o disco seria como ter que fazer uma requisição por escrito, para um funcionário de uma biblioteca, para que ela procure pela informação por toda a biblioteca, e devolva o resultado pelo correio. comparativamente, usando o cálculo anterior, signica que obter a informação demoraria por volta de 1100 horas, ou pouco mais de 45 dias. Moacir Ponti Jr. (ICMCUSP) Fundamentos Arquivos 2013/1 8 / 33

Outras comparações Custo: RAM: US$ 0.05 / Mbit HD: US$ 0.0002 / Mbit Capacidade: RAM: acima de 1 Gigabyte HD: acima de 0,5 Terabyte Volatilidade: RAM: volátil HD/SSD: não-volátil Persistência: (SSD: US$ 0.001 / Mbit) (SSD: acima de 60 Gigabytes) RAM: informação é retida enquanto o programa que controla as variáveis estiver sendo executado. HD/SSD: informação pode ser persistente. Moacir Ponti Jr. (ICMCUSP) Fundamentos Arquivos 2013/1 9 / 33

Objetivos no estudo de estruturas de arquivo Minimizar o número de acessos ao disco: idealmente obter/processar a informação num único acesso Maximizar a quantidade de informações recuperadas ou processadas em um acesso, agrupando informações relacionadas. De forma independente da tecnologia: Tempo de acesso = Número de acessos tempo de 1 acesso. deve-se ter cautela para não projetar uma estrutura de arquivo muito dependente da tecnologia atual (há 10-15 anos o uso de disquete e CD era amplo e hoje quase inexistente) Moacir Ponti Jr. (ICMCUSP) Fundamentos Arquivos 2013/1 10 / 33

Estruturas de arquivo Estruturas de dados ecientes em memória são muitas vezes inviáveis em disco. Um dos problemas em se obter uma estrutura de dados adequada é a constante necessidade de alterações em arquivos. O ideal é evitar sequências de acessos (várias requisições à bibliotecária, no exemplo anterior). Moacir Ponti Jr. (ICMCUSP) Fundamentos Arquivos 2013/1 11 / 33

Um exemplo de inviabilidade O método de busca binária permite que 1 registro pesquisado entre n = 1 milhão seja encontrado em no máximo 20 comparações (log 2 (n) 20) mas acessar o disco 20 vezes pode ser demais. esse método exigiria que os dados estivessem ordenados no disco. é preciso recuperar esse registro em poucos acessos (1 idealmente). agrupar informações para permitir recuperar o máximo de informação em uma única operação de acesso por exemplo, ao consultar um pedido de um cliente e buscar suas informações pessoais (nome, endereço, telefone, CPF, etc.), é preferível obter todas as informações de uma vez ao invés de procurar em vários lugares Moacir Ponti Jr. (ICMCUSP) Fundamentos Arquivos 2013/1 12 / 33

Sumário 1 Introdução Características do armazenamento secundário em disco Estruturas de arquivos: objetivos e exemplos Histórico 2 Operações e fundamentos de arquivos Arquivos Físicos e Lógicos Implementação em C Comandos do sistema de arquivos Unix Moacir Ponti Jr. (ICMCUSP) Fundamentos Arquivos 2013/1 13 / 33

Histórico Os primeiros trabalhos com arquivos presumiam o armazenamento em tas acesso sequencial tamanho dos arquivos cresceu muito e inviabilizou esse tipo de acesso São, no entanto ainda usadas principalmente para armazenamento o-line redundante pela vida útil longa (até 100 anos) vide caso de recuperação de perdas do Gmail por backup em tas. Moacir Ponti Jr. (ICMCUSP) Fundamentos Arquivos 2013/1 14 / 33

Histórico Em discos foram adicionados índices aos arquivos que tornaram possível manter uma lista de chaves e ponteiros para acesso aleatório. mais uma vez o crescimento dos arquivos de índice tornou difícil a sua manutenção. Em 1960 o uso de árvores surgiu como solução em potencial, com a desvantagem de crescerem de maneira desigual Árvores AVL (1963) foram investigadas para esse problema. Árvores-B: demoraram 10 anos para serem desenvolvidas pela diferença de abordagem em disco e RAM crescimento bottom-up e acesso sequencial as tornaram a base para os sistemas de arquivos. Hashing: possibilita acesso em tempo constante, mas em arquivos que não se modiquem. Hashing dinâmico: permitiu modicação no tamanho dos índices e recuperação da informação em no máximo dois acessos. Moacir Ponti Jr. (ICMCUSP) Fundamentos Arquivos 2013/1 15 / 33

Sumário 1 Introdução Características do armazenamento secundário em disco Estruturas de arquivos: objetivos e exemplos Histórico 2 Operações e fundamentos de arquivos Arquivos Físicos e Lógicos Implementação em C Comandos do sistema de arquivos Unix Moacir Ponti Jr. (ICMCUSP) Fundamentos Arquivos 2013/1 16 / 33

Arquivos Físicos e Lógicos Um arquivo sempre é físico do ponto de vista do armazenamento. É um conjunto de bytes armazenados e rotulados com um nome. Para um aplicativo a noção é diferente, pois só é possível acompanhar o uxo de bytes de leitura e escrita no arquivo. O programa é geralmente limitado a 20 conexões com arquivos (analogia com linhas telefônicas). Os bytes podem ser orignários de um arquivo físico, do teclado ou outros dispositivos. Assim, a linha de comunicação aberta pelo sistema operacional para o programa é chamado de arquivo lógico, o que é distinto do arquivo físico no disco ou ta, gerenciado apenas pelo sistema operacional. Moacir Ponti Jr. (ICMCUSP) Fundamentos Arquivos 2013/1 17 / 33

Arquivos Físicos e Lógicos No código fonte, uma instrução liga o arquivo físico a uma variável lógica. Uma vez ligado, é preciso declarar o que desejamos executar no arquivo. Em geral duas opções: abrir um arquivo existente, ou criar um novo arquivo, apagando qualquer conteúdo anterior no arquivo físico. Após abrir um arquivo estaremos posicionados no início do arquivo e portanto prontos para escrever ou ler. Moacir Ponti Jr. (ICMCUSP) Fundamentos Arquivos 2013/1 18 / 33

Sumário 1 Introdução Características do armazenamento secundário em disco Estruturas de arquivos: objetivos e exemplos Histórico 2 Operações e fundamentos de arquivos Arquivos Físicos e Lógicos Implementação em C Comandos do sistema de arquivos Unix Moacir Ponti Jr. (ICMCUSP) Fundamentos Arquivos 2013/1 19 / 33

Implementação em C Dois níveis de manipulação funções de baixo nível, funções de alto nível: implementadas em baixo nível, mantém área de memória (buer ) para manipulação dos bytes. Moacir Ponti Jr. (ICMCUSP) Fundamentos Arquivos 2013/1 20 / 33

Implementação em C Na stdio.h: #define FOPEN_MAX (20) typedef struct _iobuf { char* _ptr; int _cnt; char* _base; int _flag; int _file; int _charbuf; int _bufsiz; char* _tmpfname; } FILE; Moacir Ponti Jr. (ICMCUSP) Fundamentos Arquivos 2013/1 21 / 33

Implementação em C Abertura de arquivo: FILE *fd=fopen(<filename>,<flags>) filename: nome do arquivo a ser aberto flags: modo de abertura r: apenas leitura (o arquivo precisa existir) w: cria arquivo vazio para escrita (apaga um arquivo já existente) a: adiciona conteúdo a um arquivo r+: abre arquivo para leitura e escrita w+: cria arquivo vazio para leitura e escrita a+: abre arquivo para leitura e adição de dados b: inserir após as ags anteriores para trabalhar com arquivo binário, caso contrário será aberto em modo texto. Moacir Ponti Jr. (ICMCUSP) Fundamentos Arquivos 2013/1 22 / 33

Implementação em C Fechamento de arquivo, transfere o restante da informação no buer e desliga a conexão com o arquivo físico: fclose(<fd>) fd: le descriptor, do tipo o ponteiro FILE Porque se utiliza buer? Moacir Ponti Jr. (ICMCUSP) Fundamentos Arquivos 2013/1 23 / 33

Implementação em C Grupos de funções para manipulação de arquivos: por caractere por cadeia de caracteres dados formatados blocos de bytes Moacir Ponti Jr. (ICMCUSP) Fundamentos Arquivos 2013/1 24 / 33

Implementação em C Por caractere fputc(<char>,<file>): escreve um caractere no arquivo, <char> = fgetc(<file>): lê um caractere do arquivo. EOF: caractere que indica m de arquivo. feof(<file>): funcão que retorna 1 se m de arquivo Moacir Ponti Jr. (ICMCUSP) Fundamentos Arquivos 2013/1 25 / 33

Implementação em C Por cadeia de caracteres fputs(<char *>,<FILE>): escreve uma string no arquivo, fgets(<char *>,<int>,<file>): lê do arquivo uma determinada quantidade de caracteres e armazena a cadeia de caracteres numa variável, retorna NULL se m de arquivo. Moacir Ponti Jr. (ICMCUSP) Fundamentos Arquivos 2013/1 26 / 33

Implementação em C Por dados formatados fprintf(<file>,formatacao,...): similar ao printf, escreve num arquivo a string formatada. fscanf(<file>,formatacao,...): similar ao scanf, le do arquivo strings formatadas, retorna EOF se m de arquivo. Moacir Ponti Jr. (ICMCUSP) Fundamentos Arquivos 2013/1 27 / 33

Implementação em C Por blocos de bytes (arquivos binários), assim como estão armazenados na memória principal <size_read> = fread(<buffer>, <size_un>, <size_buffer>, <FILE>): size_read: unidades lidas (0 se m de arquivo), buffer: variável que vai armazenar a leitura, size_un: tamanho de cada unidade (bloco) de bytes a ser lido, size_buffer: número de blocos FILE: ponteiro FILE fwrite(<buffer>, <size_un>, <size_read>, <FILE>): similar ao fread, mas realiza a escrita fseek(<file>, <move_bytes>, <start_byte>): move o ponteiro do arquivo para uma posição determinada (SEEK_SET, SEEK_CUR e SEEK_END). Moacir Ponti Jr. (ICMCUSP) Fundamentos Arquivos 2013/1 28 / 33

Sumário 1 Introdução Características do armazenamento secundário em disco Estruturas de arquivos: objetivos e exemplos Histórico 2 Operações e fundamentos de arquivos Arquivos Físicos e Lógicos Implementação em C Comandos do sistema de arquivos Unix Moacir Ponti Jr. (ICMCUSP) Fundamentos Arquivos 2013/1 29 / 33

Redirecionamento de E/S e Pipes em Unix O redirecionamento de entrada e saída permite especicar a gravação ou leitura de um arquivo em substituição à entrada: stdin e saída: stdout. < file: redireciona stdin para file > file: redireciona stdout para file Pipes permitem o envio de saídas de um programa para serem usados por outros programas programa1 programa 2: pega a saída stdout do programa1 e usa na entrada stdin do programa2. Um exemplo: ls sort: a listagem de arquivos é enviada para o programa sort, que as ordena e mostra na tela Moacir Ponti Jr. (ICMCUSP) Fundamentos Arquivos 2013/1 30 / 33

Outros comandos cat <filename1> <filename2>...: lista o conteúdo dos arquivos tail <filename>: lista as dez últimas linhas do arquivo cp <filename1> <filename2>: copia o arquivo1 para o arquivo2 mv <filename1> <filename2>: move (e renomeia) o arquivo1 para o arquivo2 rm <filename>: apaga arquivos ls : lista o conteúdo do diretório atual mkdir <name>: cria um diretório rmdir <name>: remove um diretório cd <name>: acessa um diretório Moacir Ponti Jr. (ICMCUSP) Fundamentos Arquivos 2013/1 31 / 33

Bibliograa I FOLK, M.; ZOELLICK, B. File Structures FOLK, M. et al File Structures: an object-oriented approach with C++ VITTER, J.S. Algorithms and Data Structures for External Memory, ELSMARI, R.; NAVATHE, S. Sistemas de banco de dados, 6.ed Parte 7 YOUNG, J.H. File Structures http://www.comsci.us/fs/notes/ch01a.html Moacir Ponti Jr. (ICMCUSP) Fundamentos Arquivos 2013/1 32 / 33

Bibliograa II DURLEE, D. Germ of an Idea: Hong Kong Researchers Store Data in Bacteria http://geekbeat.tv/bacteria/ KOVAR, J.F. GE Unveils 500-GB, Holographic Disc Storage Technology http://www.crn.com/news/storage/217200230/ ge-unveils-500-gb-holographic-disc-storage-technology.htm Moacir Ponti Jr. (ICMCUSP) Fundamentos Arquivos 2013/1 33 / 33