Uma comparação de algoritmos e estruturas de dados para armazenamento de dados em sistemas operacionais Palm OS *



Documentos relacionados
Desenvolvimento de um Simulador de Gerenciamento de Memória

Orientação a Objetos

Sistemas Operacionais

AULA 5 Sistemas Operacionais

Notas da Aula 17 - Fundamentos de Sistemas Operacionais

LINGUAGEM DE BANCO DE DADOS

Gerenciamento de Clientes

Árvores Binárias de Busca

BUSCA EM LISTAS LISTAS SEQÜENCIAIS, LISTAS SIMPLESMENTE E DUPLAMENTE ENCADEADAS E LISTAS CIRCULARES

A memória é um recurso fundamental e de extrema importância para a operação de qualquer Sistema Computacional; A memória trata-se de uma grande

ArpPrintServer. Sistema de Gerenciamento de Impressão By Netsource Rev: 02

5 Mecanismo de seleção de componentes

Esta dissertação apresentou duas abordagens para integração entre a linguagem Lua e o Common Language Runtime. O objetivo principal da integração foi

Estruturas de Dados. Prof. Gustavo Willam Pereira Créditos: Profa. Juliana Pinheiro Campos

Microsoft Access XP Módulo Um

Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO

Sistemas de Banco de Dados Aspectos Gerais de Banco de Dados

IFPE. Disciplina: Sistemas Operacionais. Prof. Anderson Luiz Moreira

Sistemas Operacionais

Introdução a Java. Hélder Nunes

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

INF PROGRAMAÇÃO II LISTA DE EXERCÍCIOS 15

DESENVOLVIMENTO DE UM APLICATIVO DO TIPO SECRETÁRIO VIRTUAL PARA A PLATAFORMA ANDROID

Desenvolvendo Websites com PHP

Backup. Permitir a recuperação de sistemas de arquivo inteiros de uma só vez. Backup é somente uma cópia idêntica de todos os dados do computador?

Sistema de Arquivos FAT

Feature-Driven Development

LÓGICA DE PROGRAMAÇÃO

Arquitetura de Sistemas Operacionais

Sistemas Operacionais

Conceitos de Banco de Dados

EAD Árvore árvore binária

Figura 1 Busca Linear

Busca em Memória. Secundária

SAV Sistema de Aluguel de Veículos I - DOCUMENTO DE REQUISITOS Versão 1.00

MUDANÇAS NA ISO 9001: A VERSÃO 2015

Possui como idéia central a divisão de um universo de dados a ser organizado em subconjuntos mais gerenciáveis.

MRP II. Planejamento e Controle da Produção 3 professor Muris Lage Junior

Exercícios de revisão V2. FAT: 300 GB / 2KB = 150MB X 8 bytes (64 bits / 8) = 1.2GB

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

De uma forma ampla, o profissional egresso deverá ser capaz de desempenhar as seguintes funções:

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP)

Hashing. Rafael Nunes LABSCI-UFMG

Prof. Yandre Maldonado - 1 PONTEIROS. Prof. Yandre Maldonado e Gomes da Costa

Fundamentos de Sistemas Operacionais

5. EXPERIÊNCIAS E ANÁLISE DOS RESULTADOS Os Programas de Avaliação

- UNIVERSIDADE DO VALE DO RIO DOS SINOS CIÊNCIAS EXATAS E TECNOLÓGICAS Curso: Informática / Ciência da Computação

1. Domínio dos Atributos

Sistemas Operacionais

Web site. Objetivos gerais. Introdução. Profa. Patrícia Dockhorn Costa

Como funciona? SUMÁRIO

TRABALHO PRÁTICO Nro. 02 (Atualizado em 29/10/2008)

FACULDADE CAMPO LIMPO PAULISTA MESTRADO EM CIÊNCIA DA COMPUTAÇÃO. Projeto e Análise de Algoritmos II Lista de Exercícios 2

Semântica de Referência e Vetores / Matrizes

Algoritmos e Estrutura de Dados III. Árvores

Follow-Up Acompanhamento Eletrônico de Processos (versão 3.0) Manual do Sistema. 1. Como acessar o sistema Requisitos mínimos e compatibilidade

Junções e Índices em Tabelas

BC Sistemas Operacionais Sistema de Arquivos (aula 10 Parte 2) Prof. Marcelo Z. do Nascimento

Dadas a base e a altura de um triangulo, determinar sua área.

TOTVS BA Guia de Customização Linha Logix

04/08/2012 MODELAGEM DE DADOS. PROF. RAFAEL DIAS RIBEIRO, MODELAGEM DE DADOS. Aula 2. Prof. Rafael Dias Ribeiro. M.Sc.

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

TRABALHO BIBLIOTECA MD5

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

Manual SAGe Versão 1.2 (a partir da versão )

Índices* Professora Rosane Minghim. * Baseado no material de Leandro C. Cintra e M. C. F. de Oliveira. Fonte: Folk & Zoelick, File Structures.

Organização de Arquivos

Ajuda On-line - Sistema de Portaria. Versão 4.8.J

SISTEMAS DE GESTÃO São Paulo, Janeiro de 2005

Sistemas Operacionais Arquivos. Carlos Ferraz Jorge Cavalcanti Fonsêca

Manual Administrador - Mídia System

Estrutura de Dados. Introdução a Ponteiros. Prof. Gerson Borges Estrutura de Dados I 1

CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES

02 - Usando o SiteMaster - Informações importantes

ISO/IEC 12207: Gerência de Configuração

Orientação a Objetos

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS -HTML 5: ARMAZENAMENTO DE DADOS (CLIENTE) Prof. Angelo Augusto Frozza, M.Sc.

Introdução. Banco de dados. Por que usar BD? Por que estudar BD? Exemplo de um BD. Conceitos básicos

ÍNDICE 1 INTRODUÇÃO ACESSO AOS SISTEMAS DOCUMENTOS MANUTENÇÃO OCR REGISTRO DE DOCUMENTOS GERANDO DOCUMENTOS

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS

Projeto e Análise de Algoritmos Projeto de Algoritmos Introdução. Prof. Humberto Brandão humberto@dcc.ufmg.br

Apostilas OBJETIVA Escrevente Técnico Judiciário TJ Tribunal de Justiça do Estado de São Paulo - Concurso Público Caderno 1.

APLICATIVO WEB PARA O SETOR DE EXTENSÃO IFC VIDEIRA

Algoritmos e Estruturas de Dados II. Trabalho Prático 2

Processo de Controle das Reposições da loja

1. Introdução pág.3 2. Apresentação do sistema Joomla! pág.4 3. Acessando a administração do site pág.4 4. Artigos 4.1. Criando um Artigo 4.2.

MANUAL DE UTILIZAÇÃO SISTEMA DE CADASTRO INTRANET

Memória cache. Prof. Francisco Adelton

Estruturas de Dados Pilhas, Filas e Deques

Banco de Dados Aula 1 Introdução a Banco de Dados Introdução Sistema Gerenciador de Banco de Dados

? O SQL SERVER é um sistema de gerenciamento de banco de dados relacional que foi desenvolvido inicialmente pela Microsoft em parceria com a Sybase.

Programação Orientada a Objetos com PHP & MySQL Sistema Gerenciador de Banco de Dados: Introdução e configuração de bases de dados com Postgre e MySQL

Universidade Federal de Santa Maria Curso de Arquivologia. Disciplina de Banco de Dados Aplicados à Arquivística. Versao 1.

gerenciamento de portais e websites corporativos interface simples e amigável, ágil e funcional não dependendo mais de um profissional especializado

Unidade 5 Armazenamento e Indexação

Arquiteturas RISC. (Reduced Instructions Set Computers)

Fundamentos em Informática (Sistemas de Numeração e Representação de Dados)

Roteiro 2 Conceitos Gerais

Transcrição:

Uma comparação de algoritmos e estruturas de dados para armazenamento de dados em sistemas operacionais Palm OS * Rogério Celestino dos Santos 1, Rodrigo Otavio Rodrigues Antunes 1* ¹Instituto de Informática Pontifícia Universidade Católica de Minas Gerais Rua Walter Ianini, 255. São Gabriel. Belo Horizonte -MG Brasil rogerio.celestino@gmail.com, rora@pucminas.br Abstract. When we consider a system of data base in the Palm OS platform in we come across them with a primitive form of storage of data, since its structure is based on chained lists. Its efficiency is satisfactory up to determined volume of data, after this limit its efficiency is engaged. This work has intention to demonstrate a new form of more efficient storage of data for the Palm OS system. Two structures of data will be compared in order to verify which of them are capable to optimize the use of the data base, thus increasing, the capacity of storage of data, limited by the system. Resumo: Quando consideramos um sistema de banco de dados na plataforma Palm OS, nos deparamos com uma forma bastante primitiva de armazenamento de dados, já que sua estrutura é baseada em listas encadeadas. Sua eficiência é satisfatória até um determinado volume de dados, após o qual sua eficiência fica comprometida. Este trabalho tem o intuito de apresentar uma nova forma de armazenamento de dados, mais eficiente, para o sistema Palm OS. Para isso, duas estruturas de dados serão comparadas, a fim de identificar qual delas é capaz de otimizar o uso do banco de dados, aumentando, assim, a capacidade de armazenamento de dados, que é limitada pelo sistema. 1. Introdução O Palm OS é um sistema operacional utilizado em computadores de mão, mais conhecidos como palmtops [Foster 2000]. Esta plataforma oferece uma API (Application Programming Interface) simples de armazenamento de dados para aplicações existentes. Este sistema de armazenamento é muito inferior aos sistemas gerenciadores de bancos de dados conhecidos, como Oracle, MySql, SqlServer e outros [Rhodes and Mckeehan 1998]. Essa inferioridade se dá pela simplicidade da API de armazenamento do Palm OS, que oferece uma forma trivial de manipulação dos dados a serem armazenados. Essa manipulação é baseada em listas encadeadas. Os dados são simplesmente * Trabalho realizado com apoio da I2 software LTDA e da Pontifícia Universidade Católica de Minas Gerais. 1 Aluno do curso de Sistemas da Informação da PUC-MG. 1* Professor da Pontifícia Universidade Católica de Minas Gerais e orientador do trabalho.

gravados em memória RAM e manipulados pelas APIs do sistema operacional [Foster 2000], [PalmSource 2003] e [Rhodes and Mckeehan 1998]. O armazenamento de dados no Palm OS consiste basicamente em um vetor de apontadores, cada apontador contendo um handle (explicar o que é) para um registro físico. A estrutura de vetor de apontadores é implementada na forma de uma lista encadeada de apontadores, ou seja, o vetor é subdividido em vários vetores menores, que são encadeados através de apontadores, como mostrado na Figura 1. Figura 1. Estrutura de armazenamento de dados no Palm OS. O vetor de apontadores do banco de dados do Palm OS tem um limite de 64K registros e cada registro tem um limite de memória de 64K [Foster 2000]. Para aplicações nativas do Palm OS, essa estrutura é suficiente para armazenar muita informação (Ex: agenda, lista telefônica, memos etc). Aplicações mais sofisticadas podem ter a necessidade de armazenamento de uma quantidade maior de registros. Isso exige que a aplicação crie um novo banco de dados no sistema operacional, aumentando a sua complexidade (Ex: aplicações comerciais para cadastro de produtos, cadastro de clientes etc). 2. Descrição O trabalho apresenta a implementação de uma nova API para o Palm OS, a qual utiliza estruturas de dados para armazenar mais de um registro lógico dentro de um registro físico da API de armazenamento de dados do Palm OS. Os registros lógicos serão gravados usando vetores dentro de uma área da memória física armazenada através da API do Palm OS, que não terá nenhuma de suas funções descartadas. O trabalho engloba ainda uma comparação de algoritmos e estruturas de dados na manipulação destes registros lógicos, a fim de determinar a mais eficiente, usando como base a API do Palm OS. A Figura 2 mostra a nova estrutura de armazenamento de dados proposta.

Figura 2. Nova estrutura de armazenamento Neste trabalho, as duas estruturas utilizadas para armazenar os registros lógicos foram o vetor ordenado e a árvore binária [Cormen and et al 2002], sendo a árvore binária manipulada através de vetores e não de ponteiros. 3. Implementação Existem diversas linguagens para desenvolver aplicativos para Palm OS. Neste trabalho, foi utilizada a linguagem C/C++, escolhida para manter a compatibilidade com a API e com diversas versões do sistema Palm OS, já que ambos foram desenvolvidos nessa linguagem. Na implementação, houve a preocupação em criar uma estrutura para melhor organização dos dados e facilitar o manuseio dessa nova API. Para isso, foram desenvolvidas novas classes. Nenhuma função da antiga API foi descartada, pois ela é utilizada como base para as novas APIs. Na nova API, existem três níveis de classes, cada nível interagindo com o nível mais baixo. Em todos os níveis, existem quatro funções básicas para manipulação de dados: inserir, procurar, alterar e excluir. Estas funções serão detalhadas mais a seguir. A criação destes níveis organiza melhor as estruturas, facilita a manipulação de dados e disponibiliza um nível fixo, sendo que este e a estrutura são transparentes ao usuário. O primeiro nível é a classe fixa, que classe é igual para as duas estruturas de dados, seja o vetor ou a árvore binária. Dessa forma, fica transparente para o usuário qual estrutura está sendo utilizada para o armazenamento de dados. A classe fixa é o nível mais alto onde o usuário cria as instâncias de objetos para manipulação dos dados em seu aplicativo. O segundo e o terceiro nível são modificados de acordo com cada estrutura de dados. O segundo nível manipula todos os registros físicos do banco de dados. Este nível trabalha como se fosse a API atual do Palm OS, fazendo a busca de um registro físico através de seus índices e retornando o resultado ao terceiro nível, onde os registros lógicos são manipulados de acordo com a estrutura de dados utilizada. Na inserção de

um primeiro elemento, o segundo nível indica para o terceiro nível que deve ser criado um registro físico e alocado a ele um vetor de 50 posições, do tipo do elemento a ser inserido. Só serão criados os próximos registros físicos quando o vetor do tipo do elemento estiver cheio, e nos próximos serão alocados vetores com 100 posições. Os valores escolhidos para a quantidade de posições foram os apresentados anteriormente para que, futuramente, não sejam ultrapassados os 64k do registro físico. O segundo nível também tem o trabalho de indicar ao terceiro nível em qual registro físico se encontra o registro lógico a ser inserido, excluído, alterado e procurado. 3.1 Vetor ordenado Na utilização do vetor ordenado, é alocada a quantidade de memória utilizada pelo vetor na área física, de acordo com o tamanho do vetor e com o tipo de dado que será armazenado. Considerando que o segundo nível já tenha encontrado o registro físico a ser manipulado, o terceiro nível utiliza o método ordenação por inserção para inserir o elemento no vetor já ordenado. Este método foi escolhido por ser eficiente ao inserir dados em vetores já ordenados e pequenos. Para a busca utiliza-se o método "busca binária", que apresenta grande eficiência em busca de elementos em estruturas ordenadas. Para alteração de um elemento, faz-se uma busca binária no vetor pelo elemento a ser alterado, e a posição encontrada é atualizada com o novo valor. Na exclusão de um elemento, faz-se uma busca binária pelo elemento. Após encontrado, todos os elementos posteriores são movidos para a posição anterior. 3.2 Árvore binária A árvore binária, como já foi dito, não e manipulada por ponteiros mas por vetores. Ela é manipulada desta maneira para que a nova API seja compatível com outras versões de sistemas operacionais da Palm OS. Os dados são armazenados pela API nos registros físicos e o gerenciador de memória do Palm OS reorganiza-os na memória, causando a perda de referência de uma área de memória do ponteiro. Na utilização da árvore binária, é alocada na área física uma quantidade maior que a utilizada pelo vetor e o tamanho do vetor. É alocado também um vetor nodo, que contém um índice inteiro indicando o filho da esquerda e o da direita de um elemento, um boleano indicando se aquela posição do vetor contém um elemento e o próprio elemento. Considerando que o segundo nível já tenha encontrado o registro físico a ser manipulado, o terceiro nível então utiliza a teoria de árvores binárias nos vetores para armazenar, atualizar, pesquisar e apagar os dados. Utilizam-se os índices inteiros para indicar em qual posição do vetor estão o filho da direita e o da esquerda. Um valor negativo, por convenção o 1, indica que este filho não existe, correspondendo ao valor null normalmente utilizado. 4. Testes Os testes foram realizados em um Tungsten E, que possui sistema operacional Palm OS 5.2.1, processador OMAP 311 ARM de 126MHz e 32MB de memória. Na legenda dos gráficos, é indicada a quantidade de registros inseridos para realização dos testes.

O gráfico 1 apresenta a comparação do tempo gasto para a inserção de registros, em cada estrutura. Tempo gasto na inserção Tempo(s) 450 400 350 300 250 200 150 100 50 0 387 257 258 192 172 112 172 22 NA NA 17 27 DB Palm OS Vetor Árvore Binária Estruturas 10000 65535 100000 150000 Gráfico 1. Tempo de inserção. Já o gráfico 2 compara a área de memória utilizada por cada estrutura. Memória Utilizada Kbytes 10000 8000 6000 4000 2000 0 8831 7952 5888 5302 4737 3478 3863 723 NA NA 531 590 DB Palm OS Vetor Árvore Binária Estruturas 10000 65535 100000 150000 Gráfico 2 Memória Utilizada Como é mostrado nos gráficos, as novas estruturas obtiveram um desempenho melhor do que a atual do Palm OS, sendo o vetor tendo um resultado melhor que as demais, pois, além de um melhor desempenho, ele economiza memória, por utilizare menos apontadores para os registros físicos. No DB Palm OS, como foi dito, o limite máximo de registros é de 65535 (64k), por isso as faixas de 100000 e 150000 registros estão indicadas com NA (Não Avaliada). 5. Trabalho futuros Neste trabalho foram utilizadas duas estruturas de dados básicas (vetor ordenado e árvores binárias). Sugere-se o desenvolvimento de outros trabalhos, que comparem esses resultados com outras estruturas de dados, procurando uma maior eficiência.

6. Conclusão A estrutura atual do Palm OS, por ter mais áreas físicas de memória alocadas para os registros, gasta mais tempo para procurá-los e compará-los. Ao reduzir estes endereços, as duas novas estruturas obtiveram um desempenho melhor. A árvore binária, por utilizar alguns bytes a mais (índices que indicam um nó filho), e por sempre procurar uma posição livre no vetor para inserir um nó filho, torna-se mais lenta e ocupa mais memória do que o vetor ordenado. Isto faz com que o vetor se apresente como uma alternativa mais adequada para a situação analisada. 7. Referências Foster, Lonnon R. (2000) Palm OS Programming Bible. Second Edition. Wiley: IDG Book Worldwide, Inc., 2000. Cormen, Thomas H et al. (2002) Algoritmos: Teoria e Prática. Rio de Janeiro: Editora Campus. PalmSource, Inc. (2003) Palm OS Programmer s API Reference, Documento no. 3003-007, Setembro, 2003. Disponível em http://www.palmos.com/dev/support/docs/, Acessado em 05 de setembro de 2005. Rhodes, Neil; MCKEEHAN, Julie. (1998) Palm Programming: The Developer's Guide, 1ª. edição: O'Rielly and Associates, Inc. Drozdek, Adam. (2002) Estruturas de dados e algoritmos em C++. São Paulo: Editora Pioneira Thomson Learning.