Ruby & GCs Entendendo Gerenciamento de Memória

Tamanho: px
Começar a partir da página:

Download "Ruby & GCs Entendendo Gerenciamento de Memória"

Transcrição

1 Ruby & GCs Entendendo Gerenciamento de Memória

2

3

4 "G1 GC is an incremental parallel compacting GC that provides more predictable pause times compared to CMS GC and Parallel Old GC. By introducing a parallel, concurrent and multiphased marking cycle, G1 GC can work with much larger heaps while providing reasonable worst-case pause times."

5

6

7 Obsoletos Atuais

8 #include<stdio.h> int main() { int *ptr_one;! ptr_one = (int *)malloc(sizeof(int));! if (ptr_one == 0) { printf("error: Out of memory\n"); return 1; }! *ptr_one = 25; printf("%d\n", *ptr_one);! free(ptr_one);! return 0; }

9 #include<stdio.h> int main() { int *ptr_one;! ptr_one = (int *)malloc(sizeof(int));! if (ptr_one == 0) { printf("error: Out of memory\n"); return 1; }! *ptr_one = 25; printf("%d\n", *ptr_one);! free(ptr_one);! return 0; }

10 #include<stdio.h> int main() { int *ptr_one;! ptr_one = (int *)malloc(sizeof(int));! if (ptr_one == 0) { printf("error: Out of memory\n"); return 1; }! *ptr_one = 25; printf("%d\n", *ptr_one);! free(ptr_one);! return 0; }

11 #include<stdio.h> int main() { int *ptr_one;! ptr_one = (int *)malloc(sizeof(int));! if (ptr_one == 0) { printf("error: Out of memory\n"); return 1; }! *ptr_one = 25; printf("%d\n", *ptr_one);! free(ptr_one);! return 0; }

12 #include<stdio.h> int main() { int *ptr_one;! ptr_one = (int *)malloc(sizeof(int));! if (ptr_one == 0) { printf("error: Out of memory\n"); return 1; }! *ptr_one = 25; printf("%d\n", *ptr_one);! free(ptr_one);! return 0; }

13 40 bytes livres

14 Slot (40 bytes) Heap (ex 6 slots)

15 Slot (40 bytes) Heap (ex 6 slots) Instância de RVALUE

16 typedef struct RVALUE { union { struct { VALUE flags; /* always 0 for freed obj */ struct RVALUE *next; } free; struct RBasic basic; struct RObject object; struct RClass klass; struct RFloat flonum; struct RString string; struct RArray array; struct RRegexp regexp; struct RHash hash; struct RData data; struct RTypedData typeddata; struct RStruct rstruct; struct RBignum bignum; struct RFile file; struct RNode node; struct RMatch match; struct RRational rational; struct RComplex complex; struct { struct RBasic basic; VALUE v1; VALUE v2; VALUE v3; } values; } as; #if GC_DEBUG const char *file; VALUE line; #endif } RVALUE; struct RString { struct RBasic basic; union { struct { long len; char *ptr; union { long capa; VALUE shared; } aux; } heap; char ary[rstring_embed_len_max + 1]; } as; }; RVALUE RSTRING(str)->as.heap.ptr

17 Slot (40 kb) Heap (ex 6 slots) Instância de RVALUE Dados do RVALUE

18

19 Slot (40 kb) Heap (ex 6 slots) Instância de RVALUE Dados do RVALUE

20 Slot (40 kb) Heap (ex 6 slots) Instância de RVALUE Dados do RVALUE

21 Mark and Sweep GC Full Marking and Full Sweep GC

22 Slots de mesmo tamanho (não há problema com fragmentação) Quanto mais heaps, mais lento Fase de marcação conservadora pode haver leaks (ex. constantes) Processo Stop-the-World"

23

24

25 NGINX request Master Unicorn ou Passenger fork() fork() Rails App Rails App Rails App 150mb 150mb 150mb

26

27 Copy on Write (CoW) só copia o trecho da memória quando for modificada

28

29 Mark Bit Map

30 Bitmap Marking GC Full Bitmap Marking and Full Sweep GC

31 NGINX request Master Unicorn ou Passenger fork() fork() Rails App Rails App Rails App 150mb 100mb 100mb

32 Mark Sweep Mark Sweep Mark Sweep

33 Mark Mark Mark

34 Lazy Sweep GC Full Bitmap Marking and Lazy Sweep GC

35

36 https://gist.github.com/akitaonrails/

37

38

39 RUBY_GC_MALLOC_LIMIT= \ RUBY_HEAP_MIN_SLOTS= \ bundle exec rails server

40 RUBY_GC_MALLOC_LIMIT RUBY_HEAP_MIN_SLOTS

41

42 env_gc_malloc_limit_in_mb 7.6mb 26.6mb total_gc_runs heaps_with_used_slots total_heaps_allocated total_heaps_allocated_in_mb 30.6mb 30.7mb heaps_to_allocate_next_gc 869 0

43

44 2.49Mb 71.9Mb

45

46

47

48

49

50

51 GC Anterior

52

53

54

55

56 Weak Generational Hypothesis Most young objects die young"

57 Young Generation (Eden) Old Generation (Tomb)

58 Generational GC Copying Garbage Collector

59

60

61 From-Heap To-Heap

62 From-Heap To-Heap

63 Mark-Compact GC Mark Copy Compact Heap Swap GC

64 Stop-and-Copy Sweep precisa ir slot a slot, neste é só considerar tudo no primeiro heap como livre Gerenciamento interno de ponteiros Feito para corrigir fragmentação Ruby tem slots de mesmo tamanho Não suporta Copy-on-Write

65 Ruby 2.1.x Shady vs Non-Shady

66 Ruby Array Ruby Object Write Barrier (Non-Shady only)

67 Shady Object Non-Shady Object (Sunny)

68 Mark bitmap (mark_bits[]) Shady bitmap ( rememberset_bits[])

69 Objetos "Old" 96.4% Objetos "Young" 3.6% Objetos "Shady" 1.5%

70 Mark Mark Mark

71 Major GC Minor GC

72 2.49Mb 71.9Mb

73

74 Restricted Generational GC (RGenGC) Full M&S for Shady, Generational for Non-Shady

75 Partial Markings, Lazy Sweeps = Menos Stop Shady objects não vão para o Tomb Write Barriers (referência old para new - non-shady only) Compatível com extensões C (Shady) Objetos em Tomb só são remarcados em Full Mark

76

77

78

79

80

81

82

83 ruby-trunk e ruby (não lançado)

84

85 < 1.3! (+ major GC)

86 força GC por diminuir o teto RUBY_GC_MALLOC_LIMIT_MAX= \ RUBY_GC_OLDMALLOC_LIMIT_MAX= \ RUBY_GC_HEAP_OLDOBJECT_LIMIT_FACTOR=0.9 bundle exec rails server basicamente desabilita minor GC (de volta a Ruby 2.0.0)

87 RUBY_GC_MALLOC_LIMIT_MAX RUBY_GC_OLDMALLOC_LIMIT_MAX RUBY_GC_HEAP_OLDOBJECT_LIMIT_FACTOR RUBY_GC_HEAP_INIT_SLOTS RUBY_GC_HEAP_FREE_SLOTS RUBY_GC_HEAP_GROWTH_FACTOR RUBY_GC_HEAP_GROWTH_MAX_SLOTS (no limit) (obs: monitore, mensure, tuning, mensure de novo!)

88 Objetos vão para Tomb se sobreviverem 1 GC Objetos podem ir para Tomb cedo demais Eden - Survivor - Tenured - Permanent RGENGC_THREEGEN mode (experimental) Parallel Marking (ex. em Thread separada) Tri-Color Marking (talvez) Futuro: Incremental Major Phase (major GC menores)

89 Java Young Generation -XX:+UseSerialGC (copying collector) -XX:+UseParallelGC (copying collector multi-thread) -XX:+UseParNewGC Old Generation -XX:+UseParallelOldGC -XX:+UseConcMarkSweepGC

90 NGINX request Master Unicorn ou Passenger Rails App Rails App Rails App 190ms 190ms 190ms 50ms de Full GC!

91 NGINX request Master Unicorn ou Passenger Rails App Rails App Rails App 140ms 140ms Full GC Executa Full GC quando não receber request

92 OOBGC Out-of-Band Major GC

93

94

95 Pausas foram de 125ms para 50ms

96

97

98

99 slideshare.net/akitaonrails

2.1. Princípios de garbage collection Garbage Collector

2.1. Princípios de garbage collection Garbage Collector Capítulo 2 Java Virtual Machine Com a JVM no centro da Plataforma Java, conhecer seu funcionamento interno é essencial para qualquer aplicação Java. Muitas vezes, deixamos de lado ajustes importantes de

Leia mais

Garbage Collection. Automatic Garbage Collection. Introdução. Fontes

Garbage Collection. Automatic Garbage Collection. Introdução. Fontes Fontes Garbage Collection Compiladores II 1 Modern Compiler Implementation in java: capítulo 13 Artigos : Garbage Collection in an Uncooperative Environment de Boehm e Weiser (Software Practice and Experience

Leia mais

Gerência de Memória em Java Parte II: Monitoração e configuração da máquina virtual HotSpot

Gerência de Memória em Java Parte II: Monitoração e configuração da máquina virtual HotSpot Tópicos selecionados de programação em Java Gerência de Memória em Java Parte II: Monitoração e configuração da máquina virtual HotSpot Helder da Rocha Setembro 2005 Otimização da JVM HotSpot A HotSpot

Leia mais

Gerência de Memória em Java Parte I: Arquitetura da JVM e algoritmos de coleta de lixo

Gerência de Memória em Java Parte I: Arquitetura da JVM e algoritmos de coleta de lixo Tópicos selecionados de programação em Java Gerência de Memória em Java Parte I: Arquitetura da JVM e algoritmos de coleta de lixo Helder da Rocha Setembro 2005 1 Por que gerenciar memória? Há linguagens

Leia mais

PADI 2015/16. Aula 1 Introdução à Plataforma.NET

PADI 2015/16. Aula 1 Introdução à Plataforma.NET PADI 2015/16 Aula 1 Introdução à Plataforma.NET 1 Sumário 1. Framework.NET Arquitectura 2. Linguagem C# 2.0 Sintaxe C# vs. Java vs. C++ 3. IDE: MS Visual Studio 2005 ou superior Ferramentas Console/Win

Leia mais

Introdução a POO. Introdução a Linguagem C++ e POO

Introdução a POO. Introdução a Linguagem C++ e POO Introdução a POO Marcio Santi Linguagem C++ Introdução a Linguagem C++ e POO Programação Orientada a Objetos (POO) e C++ Recursos C++ não relacionados às classes Incompatibilidades entre C e C++ Classes

Leia mais

1ª versão. #include #include #include #define maxdiscos 1000

1ª versão. #include <stdio.h> #include <string.h> #include <stdlib.h> #define maxdiscos 1000 #include #include #include #define maxdiscos 1000 typedef struct { char nomeautor[80]; char nomedisco[100]; int numdiscosvendidos; DISCO; 1ª versão int main() { DISCO listadiscos[maxdiscos];

Leia mais

DEPARTAMENTO DE ENGENHARIA INFORMÁTICA FACULDADE DE CIÊNCIAS E TECNOLOGIA DA UNIVERSIDADE DE COIMBRA

DEPARTAMENTO DE ENGENHARIA INFORMÁTICA FACULDADE DE CIÊNCIAS E TECNOLOGIA DA UNIVERSIDADE DE COIMBRA DEPARTAMENTO DE ENGENHARIA INFORMÁTICA FACULDADE DE CIÊNCIAS E TECNOLOGIA DA UNIVERSIDADE DE COIMBRA Sistemas Operativos 2003/2004 Trabalho Prático #2 -- Programação em C com ponteiros -- Objectivos Familiarização

Leia mais

ESTRUTURAS DE DADOS I. Notas de Aula. Prof. Dr. Gilberto Nakamiti

ESTRUTURAS DE DADOS I. Notas de Aula. Prof. Dr. Gilberto Nakamiti ESTRUTURAS DE DADOS I Notas de Aula 1 SUMÁRIO 1. INTRODUÇÃO... 2 1.1 Array (vetores)... 2 2. BUSCA DE ELEMENTOS... 3 2.1 Busca Seqüencial... 3 2.2 Busca Binária... 3 2.3 Busca Indexada... 3 2.4 Busca Hash...

Leia mais

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

MC102 Algoritmos e programação de computadores Aula 3: Variáveis MC102 Algoritmos e programação de computadores Aula 3: Variáveis Variáveis Variáveis são locais onde armazenamos valores na memória. Toda variável é caracterizada por um nome, que a identifica em um programa,

Leia mais

Algoritmos e Estruturas de Dados

Algoritmos e Estruturas de Dados Introdução aos Algoritmos e Estruturas de Dados 2 o Teste - A Ano lectivo: 2010/2011 2 o Semestre RESOLUÇÃO DO 2 o TESTE Grupo I (2.0 + 2.5 + 2.0 = 6.5 val.) I.a) Considere os tipos enum ocasiao e Presente

Leia mais

MC-102 Algoritmos e Programação de Computadores

MC-102 Algoritmos e Programação de Computadores MC-102 Algoritmos e Programação de Computadores Prof. Ariel Vargas Unicamp Arquivos Binários Arquivos Arquivos Texto Podem ser manipulados por um editor de texto comum Os dados são gravados como caracteres

Leia mais

Programação Estruturada I

Programação Estruturada I Programação Estruturada I Introdução a Linguagem C Prof. Thiago Caproni Tavares 1 Prof. Mateus dos Santos 2 1 thiago.tavares@ifsuldeminas.edu.br 2 mateus.santos@ifsuldeminas.edu.br Última Atualização:

Leia mais

Module Introduction. Programação. Cap. 10 Estruturas (Structs)

Module Introduction. Programação. Cap. 10 Estruturas (Structs) 5374 : Engenharia Informática 6638 : Tecnologias e Sistemas de Informação 9099 : Bioengenharia 10135 : Ciências Biomédicas Cap. 10 Estruturas () Module Introduction Sumário: Taxonomia de tipos de dados

Leia mais

Tipo de Dados em Linguagem C

Tipo de Dados em Linguagem C Tipo de Dados em Linguagem C Principais tipos de dados em C int : tipo de dados inteiros (exemplo: 1, -3, 100, -9, 18, etc.) float : tipo de dados reais (exemplo: 1.33, 3.14, 2.00, -9.0, 1.8, etc.) Ocupa

Leia mais

Coleta de Lixo na JVM

Coleta de Lixo na JVM Coleta de Lixo na JVM Adriano da Silva Castro Universidade Federal de Juiz de Fora Instituto de Ciências Exatas Departamento de Ciência da Computação Bacharelado em Ciência da Computação Orientador: Prof.

Leia mais

Programação por Objectos. Java

Programação por Objectos. Java Programação por Objectos Java Parte 1: Introdução MEEC@IST Java 1/27 História versões (1) [1995] Versão 1.0, denominada Java Development Kit (JDK) 212 classes em 8 pacotes Lento, muitos bugs, mas com Applets

Leia mais

Algoritmos e Programação

Algoritmos e Programação Universidade Federal do Vale do São Francisco Curso de Engenharia da Produção / Elétrica Algoritmos e Programação Parte 05 Prof. Jorge Cavalcanti jorge.cavalcanti@univasf.edu.br www.univasf.edu.br/~jorge.cavalcanti

Leia mais

Templates e Pilhas. 1. Introdução

Templates e Pilhas. 1. Introdução Templates e Pilhas 1. Introdução Templates ou Generics é considerado uma forma de polimorfismo [1]. É uma forma de programar onde o tipo do dado não é considerado. Programa-se para um tipo de dado indefinido.

Leia mais

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

Estrutura da linguagem de programação C Prof. Tiago Eugenio de Melo tiago@comunidadesol.org Estrutura da linguagem de programação C Prof. Tiago Eugenio de Melo tiago@comunidadesol.org Breve Histórico A linguagem de programação C foi criada na década de 70, por Dennis Ritchie, que a implementou,

Leia mais

Resumo da última aula. Compiladores. Tipos. Regras semânticas. Expressões de tipos. Análise Semântica e checagem de tipos.

Resumo da última aula. Compiladores. Tipos. Regras semânticas. Expressões de tipos. Análise Semântica e checagem de tipos. Resumo da última aula Compiladores Análise semântica Verificação de tipos 1 Implementação: Esquemas S-atribuídos: Mecanismo bottom-up direto Esquemas L-atribuídos: Mecanismo top-down: Necessita gramática

Leia mais

Por dentro do Windows: Gerenciamento de Memória

Por dentro do Windows: Gerenciamento de Memória Por dentro do Windows: Gerenciamento de Memória Rodrigo Strauss http://www.1bit.com. ://www.1bit.com.brbr 1 Definindo Windows Falaremos somente sobre Windows NT NT 3.51 NT 4 Windows 2000 (NT5) Windows

Leia mais

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

Programação Engenharia Informática (11543) 1º ano, 1º semestre Tecnologias e Sistemas de Informação (6619) 1º ano, 1º semestre Programação Engenharia Informática (11543) 1º ano, 1º semestre Tecnologias e Sistemas de Informação (6619) 1º ano, 1º semestre Cap. 02 Fundamentos de Linguagens Sumário : Linguagem, alfabeto e gramática

Leia mais

Tutorial Gerência de memória em Java

Tutorial Gerência de memória em Java Tutorial Gerência de memória em Java Edição 1.0 (outubro 2005) Helder da Rocha (helder.darocha@gmail.com) 1 Arquitetura da JVM, memória e algoritmos de coleta de lixo 2 Arquitetura da HotSpot JVM e otimização

Leia mais

Sistemas de Arquivos. Gerenciamento de Espaço em Disco

Sistemas de Arquivos. Gerenciamento de Espaço em Disco Sistemas de Arquivos Diretórios Gerenciamento de Espaço em Disco Implementação de Diretórios (1) Contém informações que permitem acessar os arquivos As entradas do diretório fornecem informações para encontrar

Leia mais

Conceitos de Linguagens de Programação

Conceitos de Linguagens de Programação Conceitos de Linguagens de Programação Aula 07 Nomes, Vinculações, Escopos e Tipos de Dados Edirlei Soares de Lima Introdução Linguagens de programação imperativas são abstrações

Leia mais

Fundamentos de Programação

Fundamentos de Programação Fundamentos de Programação CP41F Aula 38 Prof. Daniel Cavalcanti Jeronymo Declaração de tipos (typedef). Tipos enumerados (enum). Registros (struct). Uniões (union). Universidade Tecnológica Federal do

Leia mais

Sumário. Armazenamento de dados. Tipos de dados dinâmicos. Exemplos. Vectores Vectores dinâmicos Dados dinamicos. Declaração Uso 10-1

Sumário. Armazenamento de dados. Tipos de dados dinâmicos. Exemplos. Vectores Vectores dinâmicos Dados dinamicos. Declaração Uso 10-1 Sumário Armazenamento de dados Vectores Vectores dinâmicos Dados dinamicos Tipos de dados dinâmicos Declaração Uso Exemplos 10-1 Armazenamento de dados Tamanho conhecido antes compilação Vectores BI vect[200]

Leia mais

Pragmática das Linguagens de Programação 2004/2005

Pragmática das Linguagens de Programação 2004/2005 Instituto Superior Técnico Pragmática das Linguagens de Programação 2004/2005 Segundo Exame 11/2/2005 Número: Turma: Nome: Escreva o seu número em todas as folhas do teste. O tamanho das respostas deve

Leia mais

Estruturas de Dados. Parte dos slides a seguir são adaptações, extensões e traduções para C dos originais:

Estruturas de Dados. Parte dos slides a seguir são adaptações, extensões e traduções para C dos originais: Estruturas de Dados Pilhas Prof. Ricardo J. G. B. Campello Créditos Parte dos slides a seguir são adaptações, extensões e traduções para C dos originais: disponíveis em http://ww3.datastructures.net/ cedidos

Leia mais

Descobrindo o Profiling de

Descobrindo o Profiling de artigo Descobrindo o Profiling de Aplicações Java com JProfiler Aprenda como encontrar problemas de performance na sua aplicação com o JProfiler. Muitas vezes, nos deparamos com problemas de performance

Leia mais

5.2 - Armazenamento em Disco

5.2 - Armazenamento em Disco CEFET-RS Curso de Eletrônica 5.2 - Armazenamento em Disco Aspectos LógicosL Formatação e Sistemas de Arquivos Profs. Roberta Nobre & Sandro Silva robertacnobre@gmail.com e sandro@cefetrs.tche.br Unidade

Leia mais

Métodos Computacionais. Árvores

Métodos Computacionais. Árvores Métodos Computacionais Árvores Árvores Vetores e Listas são ótimos para representar estrutura de dados lineares, mas não para modelar dados hierárquicos Exemplos de dados hierárquicos: sistema de arquivos

Leia mais

Enunciados de exercícios seleccionados de testes e exames P2 / EDa

Enunciados de exercícios seleccionados de testes e exames P2 / EDa Enunciados de exercícios seleccionados de testes e exames P2 / EDa 1. Qual o resultado apresentado pelo seguinte troço de código. Justifique. double d[] = { 5.4, 3.2, 1.0 ; double *pd = d[1]; ++pd; printf(

Leia mais

Sistemas Operacionais Aula 04: Processos (Parte B) Ezequiel R. Zorzal ezorzal@unifesp.br www.ezequielzorzal.com

Sistemas Operacionais Aula 04: Processos (Parte B) Ezequiel R. Zorzal ezorzal@unifesp.br www.ezequielzorzal.com Sistemas Operacionais Aula 04: Processos (Parte B) Ezequiel R. Zorzal ezorzal@unifesp.br www.ezequielzorzal.com Objetivos Descrever as diversas características dos processos, inclusive o scheduling, a

Leia mais

Fundamentos de Programação

Fundamentos de Programação Fundamentos de Programação CP41F Conversão de tipos. Alocação dinâmica de memória. Recursão. Aula 16 Prof. Daniel Cavalcanti Jeronymo Universidade Tecnológica Federal do Paraná (UTFPR) Engenharia de Computação

Leia mais

1. Fazer um programa em C que pergunta um valor em metros e imprime o correspondente em decímetros, centímetros e milímetros.

1. Fazer um programa em C que pergunta um valor em metros e imprime o correspondente em decímetros, centímetros e milímetros. Lista de exercícios: Grupo I - programa seqüênciais simples 1. Fazer um programa em C que pergunta um valor em metros e imprime o correspondente em decímetros, centímetros e milímetros. 2. Fazer um programa

Leia mais

ITENS FUNDAMENTAIS. Profª Angélica da Silva Nunes

ITENS FUNDAMENTAIS. Profª Angélica da Silva Nunes ITENS FUNDAMENTAIS Profª Angélica da Silva Nunes CONCEITOS BÁSICOS Hardware - é a parte física do computador, tais como: teclado, monitor de vídeo, etc. Software - são os programas e aplicativos que permitem

Leia mais

Keeper of Knowledge. Capítulo 1 Conceitos Básicos do Java

Keeper of Knowledge. Capítulo 1 Conceitos Básicos do Java Capítulo 1 Conceitos Básicos do Java INTRODUÇÃO O objectivo deste tutorial é ensinar as regras básicas de programação em Java e facilitar a aprendizagem dos capítulos que se seguem. Qualquer dúvida sobre

Leia mais

Fundamentos de Programação II. Introdução à linguagem de programação C++

Fundamentos de Programação II. Introdução à linguagem de programação C++ Fundamentos de Programação II Introdução à linguagem de programação C++ Prof. Rafael Henrique D. Zottesso Material cedido por Prof. Msc. Everton Fernando Baro Agenda IDE HelloWorld Variáveis Operadores

Leia mais

Introdução. A verificação de tipos pode ser estática e dinâmica

Introdução. A verificação de tipos pode ser estática e dinâmica Análise Semântica Introdução Verifica se as construções sintaticamente corretas possuem significado lógico dentro da linguagem Verifica a consistência da declaração e uso dos identificadores Além disso,

Leia mais

Manual do Desenvolvedor Criptografia de Arquivos do WebTA

Manual do Desenvolvedor Criptografia de Arquivos do WebTA Manual do Desenvolvedor Criptografia de Arquivos do WebTA Versão 1.4 Índice 1. Objetivo..3 2. Processo..3 3. API de Criptografia - Biblioteca Java..4 3.1 WEBTACryptoUtil..4 3.1.1 decodekeyfile..4 3.1.2

Leia mais

Aula 3 Alocação Dinâmica

Aula 3 Alocação Dinâmica Aula 3 Alocação Dinâmica Universidade Federal de Santa Maria Colégio Agrícola de Frederico Westphalen Curso Superior de Tecnologia em Sistemas de Internet Prof. Bruno B. Boniati www.cafw.ufsm.br/~bruno

Leia mais

INF 1010 Estruturas de Dados Avançadas

INF 1010 Estruturas de Dados Avançadas INF 1010 Estruturas de Dados Avançadas Listas de Prioridades e Heaps 1 Listas de Prioridades Em muitas aplicações, dados de uma coleção são acessados por ordem de prioridade A prioridade associada a um

Leia mais

UNIVERSIDADE. Sistemas Distribuídos

UNIVERSIDADE. Sistemas Distribuídos UNIVERSIDADE Sistemas Distribuídos Ciência da Computação Prof. Jesus José de Oliveira neto Aula 17-18: Middleware: Implementação de RMI (cont.), RPC, Modelo de Eventos, Exemplo com Java RMI Chamadas dinâmicas

Leia mais

Professor J. c o l u n a

Professor J. c o l u n a c o l u n a Professor J Conhecendo os parâmetros de configuração mais utilizados da JVM Aprenda como configurar a Máquina Virtual JAVA para evitar os indesejados estouros de memória Muitas vezes, ao criarmos

Leia mais

Sistemas Operativos. Gestão de memória. Rui Maranhão (rma@fe.up.pt)

Sistemas Operativos. Gestão de memória. Rui Maranhão (rma@fe.up.pt) Sistemas Operativos Gestão de memória Rui Maranhão (rma@fe.up.pt) Gestão de memória idealmente a memória seria grande rápida não volátil contudo, na realidade existem limitações físicas! Portanto... hierarquia

Leia mais

Curso Adonai QUESTÕES Disciplina Linguagem JAVA

Curso Adonai QUESTÕES Disciplina Linguagem JAVA 1) Qual será o valor da string c, caso o programa rode com a seguinte linha de comando? > java Teste um dois tres public class Teste { public static void main(string[] args) { String a = args[0]; String

Leia mais

UNIVERSIDADE FEDERAL DE GOIÁS INSTITUTO DE INFORMÁTICA. Sistemas Distribuídos

UNIVERSIDADE FEDERAL DE GOIÁS INSTITUTO DE INFORMÁTICA. Sistemas Distribuídos UNIVERSIDADE FEDERAL DE GOIÁS INSTITUTO DE INFORMÁTICA Sistemas Distribuídos Mestrado em Ciência da Computação 1o. Semestre / 2006 Prof. Fábio M. Costa fmc@inf.ufg.br www.inf.ufg.br/~fmc/ds-msc2006 Aula

Leia mais

Ruby e Ruby on Rails

Ruby e Ruby on Rails Ruby e Ruby on Rails Universidade Federal de São Carlos Anderson Kenji Mise kenji@vardump.com Ruby? linguagem de programação orientada a objetos (tudo é objeto) Ruby on Rails? RoR é um framework para desenvolvimento

Leia mais

Sistemas de Arquivos. André Luiz da Costa Carvalho

Sistemas de Arquivos. André Luiz da Costa Carvalho Sistemas de Arquivos André Luiz da Costa Carvalho Sistemas de arquivos Sistema de arquivos é o nome que se dá a implementação da organização de dados em discos. Vai desde o acesso a baixo nível até a interface

Leia mais

ESTRUTURAS DE DADOS AVANÇADAS (INF 1010) (a) Seja um TAD definido por uma lista circular implementada em um vetor.

ESTRUTURAS DE DADOS AVANÇADAS (INF 1010) (a) Seja um TAD definido por uma lista circular implementada em um vetor. PUC-Rio Departamento de Informática Período: 2015.1 Horário: 2as-feiras e 4as-feiras de 17-19 30 de março de 2015 ESTRUTURAS DE DADOS AVANÇADAS (INF 1010) 1 a Lista de Exercícios 1. Lista (a) Seja um TAD

Leia mais

Memory Leak em Java?

Memory Leak em Java? 1 Memory Leak em Java? Saiba como memory leaks se manifestam em Java e como evitá-los Sobre o Autor Carlos Eduardo G. Tosin (carlos@tosin.com.br) é formado em Ciência da Computação pela PUC-PR, pós-graduado

Leia mais

INTRODUÇÃO AO C++ SISTEMAS DE INFORMAÇÃO DR. EDNALDO B. PIZZOLATO

INTRODUÇÃO AO C++ SISTEMAS DE INFORMAÇÃO DR. EDNALDO B. PIZZOLATO INTRODUÇÃO AO C++ SISTEMAS DE INFORMAÇÃO DR. EDNALDO B. PIZZOLATO Tópicos Estrutura Básica B de Programas C e C++ Tipos de Dados Variáveis Strings Entrada e Saída de Dados no C e C++ INTRODUÇÃO O C++ aceita

Leia mais

Conceito de classe em C++

Conceito de classe em C++ Introdução à Programação com Classes em C++ Ana Paula Rocha, Luís Paulo Reis, João Pascoal Faria FEUP - MIEEC Programação 2-2008/2009 Conceito de classe em C++ Classe em sentido lato: tipo de dados definido

Leia mais

JAVA. Fabrício de Sousa fabbricio7@yahoo.com.br

JAVA. Fabrício de Sousa fabbricio7@yahoo.com.br JAVA Fabrício de Sousa fabbricio7@yahoo.com.br Agenda 2 Características Ambientes de Desenvolvimento Sintaxe Comentários Tipos de dados primitivos Caracteres especiais Variáveis Operadores Aritméticos

Leia mais

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

Prof. Yandre Maldonado - 1 PONTEIROS. Prof. Yandre Maldonado e Gomes da Costa Prof. Yandre Maldonado - 1 PONTEIROS Prof. Yandre Maldonado e Gomes da Costa PONTEIROS Prof. Yandre Maldonado - 2 Ponteiro é uma variável que possui o endereço de outra variável; É um poderoso recurso

Leia mais

Algoritmos e Estrutura de Dados II

Algoritmos e Estrutura de Dados II Universidade Federal do Vale do São Francisco Algoritmos e Estrutura de Dados II Professor: Marcelo Santos Linder E-mail: marcelo.linder@univasf.edu.br Ementa Árvores B, grafos e tabelas de hash: alocação

Leia mais

LISTAS ENCADEADAS OU NÃO- SEQÜENCIAIS. Estrutura de Dados

LISTAS ENCADEADAS OU NÃO- SEQÜENCIAIS. Estrutura de Dados LISTAS ENCADEADAS OU NÃO- SEQÜENCIAIS Listas Lineares Como visto anteriormente, as operações básicas para o nosso TAD Lista Linear são: FLVazia Vazia Retira Insere Imprime A implementação através de arrays

Leia mais

INF 1007 Programação II

INF 1007 Programação II INF 1007 Programação II Aula 08 Busca em Vetor Edirlei Soares de Lima Busca em Vetor Problema: Entrada: vetor v com n elementos; elemento d a procurar; Saída: m se o elemento procurado

Leia mais

Mar 13, 2009 Roteiro Entrada & Saída Contêineres Algoritmos Exemplos Leitura simples #include // cin, cout, endl int a; float b; cin >> a >> b; if (cin) cout

Leia mais

Programação em C++: Introdução

Programação em C++: Introdução Programação em C++: Introdução J. Barbosa J. Tavares Visualização Científica Conceitos básicos de programação Algoritmo Conjunto finito de regras sobre as quais se pode dar execução a um dado processo

Leia mais

Números positivos ordenados

Números positivos ordenados Sumário Armazenamento de dados Vectores Vectores dinâmicos Listas Tipos de dados dinâmicos Declaração Uso Exemplos Armazenamento de dados Tamanho conhecido antes compilação Vectores BI vect[200] Tamanho

Leia mais

Persistência de Dados

Persistência de Dados Persistência de s Universidade do Estado de Santa Catarina - Udesc Centro de Ciências Tecnológicas - CCT Departamento de Ciência da Computação Tecnologia de Sistemas de Informação Estrutura de s II - DAD

Leia mais

Linguagem de Programação C

Linguagem de Programação C ICMC USP Linguagem de Programação C Aula: Funções em C Prof Alneu de Andrade Lopes MODULARIZAÇÃO Um problema complexo é melhor abordado se for dividido primeiramente em vários subproblemas MODULARIZAÇÃO

Leia mais

Documento de Programação em C#

Documento de Programação em C# Documento de Programação em C# Guia inicial e para programadores Java AtendeX 2009 2 Conteúdo Programação Em C# com associação ao Java... 4 Declaração de variáveis... 4 Controle de Fluxo... 4 Iteração...

Leia mais

struct LISTA item quant

struct LISTA item quant UNIVERSIDADE SÃO JUDAS TADEU ESTRUTURA DE DADOS - PROF. H. Senger IMPLEMENTAÇÃO DE LISTAS COM VETORES A implementação de listas utilizando vetores é simples. Existe apenas uma pequena questão, com relação

Leia mais

A Pilha. Aula 02. DPEE 1038 Estrutura de Dados para Automação Curso de Engenharia de Controle e Automação Universidade Federal de Santa Maria

A Pilha. Aula 02. DPEE 1038 Estrutura de Dados para Automação Curso de Engenharia de Controle e Automação Universidade Federal de Santa Maria Engenharia de CONTROLE e AUTOMAÇÃO A Pilha Aula 02 DPEE 1038 Estrutura de Dados para Automação Curso de Engenharia de Controle e Automação Universidade Federal de Santa Maria beltrame@mail.ufsm.br 1/5

Leia mais

Paradigmas da Programação PPROG. Linguagem JAVA. Interfaces. (Livro Big Java, Late Objects Capítulo 9) Nelson Freire (ISEP DEI-PPROG 2013/14) 1/33

Paradigmas da Programação PPROG. Linguagem JAVA. Interfaces. (Livro Big Java, Late Objects Capítulo 9) Nelson Freire (ISEP DEI-PPROG 2013/14) 1/33 PPROG Paradigmas da Programação Linguagem JAVA Interfaces (Livro Big Java, Late Objects Capítulo 9) Nelson Freire (ISEP DEI-PPROG 2013/14) 1/33 PPROG Motivação para usar Interfaces Definição de Interface

Leia mais

Algoritmo e Técnica de Programação - Linguagem C

Algoritmo e Técnica de Programação - Linguagem C Algoritmo e Técnica de Programação Linguagem C Gilbran Silva de Andrade 5 de junho de 2008 Introdução A liguagem C foi inventada e implementada por Dennis Ritchie em um DEC PDP-11 que utilizava o sistema

Leia mais

Aula 1 Tipo Abstrato de Dados

Aula 1 Tipo Abstrato de Dados Aula 1 Tipo Abstrato de Dados Luiz Chaimowicz e Raquel O. Prates Livro Projeto de Algoritmos Capítulo 1 2009-1 O que é um algoritmo? O que é um programa? Algoritmos Sequência de ações executáveis para

Leia mais

/*(Atenção: Em se tratando de uma lista estaticamente alocada, temos utilizado a estratégia de passa o tamanho máximo do vetor.)*/

/*(Atenção: Em se tratando de uma lista estaticamente alocada, temos utilizado a estratégia de passa o tamanho máximo do vetor.)*/ ========================TDA.H #include "info.h" #define TRUE 1 #define FALSE 0 #define INI_LISTA 1 #define OK 1; #define NOK -1; typedef struct nolista{ info dados; struct nolista *prox; struct nolista

Leia mais

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

Linguagem C: agregados heterogêneos, arquivos binários, recursividade. Prof. Críston Algoritmos e Programação Linguagem C: agregados heterogêneos, arquivos binários, recursividade Prof. Críston Algoritmos e Programação Agregados heterogêneos Permitem agrupar variáveis de diferentes tipos em um único registro struct

Leia mais

Experimentos com a memória cache do CPU

Experimentos com a memória cache do CPU Experimentos com a memória cache do CPU Alberto Bueno Júnior & Andre Henrique Serafim Casimiro Setembro de 2010 1 Contents 1 Introdução 3 2 Desvendando o cache 3 2.1 Para que serve o cache?.....................

Leia mais

Hashing (Tabela de Dispersão)

Hashing (Tabela de Dispersão) Hashing (Tabela de Dispersão) Motivação! Os métodos de pesquisa vistos até agora buscam informações armazenadas com base na comparação de suas chaves.! Para obtermos algoritmos eficientes, armazenamos

Leia mais

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

Análises Geração RI (representação intermediária) Código Intermediário Front-end Análises Geração RI (representação intermediária) Código Intermediário Back-End Geração de código de máquina Sistema Operacional? Conjunto de Instruções do processador? Ambiente de Execução O

Leia mais

Programação com Posix Threads

Programação com Posix Threads 9 Programação com Posix Threads Revisão: Data: 11-03-2016 Cap. 9 1/6 Programação multi-threaded com Pthreads 9.1. O que é uma thread? Um processo represente a execução pelo sistema operativo dum programa.

Leia mais

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

Operaçõe õ s c om o Strings Intr oduç ão a o Ponte iros o e Funçõe õ s Universidade de São Paulo São Carlos Instituto de Ciências Matemáticas e de Computação Operações com Strings Introdução a Ponteiros e Funções Profa Rosana Braga 1 Strings Strings são seqüências de caracteres

Leia mais

Práticas de Desenvolvimento de Software

Práticas de Desenvolvimento de Software Aula 3. 09/03/2015. Práticas de Desenvolvimento de Software Aula 3 - Introdução à linguagem de programação Ruby Oferecimento Ruby (1) Ruby Ruby (2) Ruby Linguagem de programação dinâmica, de código aberto,

Leia mais

História. Nasceu em 1993, numa discussão entre Yuhikiro Matsumoto e um colega.

História. Nasceu em 1993, numa discussão entre Yuhikiro Matsumoto e um colega. 1 1. Overview 2 História Nasceu em 1993, numa discussão entre Yuhikiro Matsumoto e um colega. Matz procurava por uma linguagem de script orientada a objetos. A primeira versão estável de Ruby (1.2) foi

Leia mais

Unidade IV: Ponteiros, Referências e Arrays

Unidade IV: Ponteiros, Referências e Arrays Programação com OO Acesso em Java a BD Curso: Técnico em Informática Campus: Ipanguaçu José Maria Monteiro Pontifícia Universidade Católica do Rio de Janeiro PUC-Rio Departamento Clayton Maciel de Informática

Leia mais

Sistemas de Arquivos. Arquivos e Diretórios Características e Implementação Tadeu Ferreira Oliveira - tadeu.ferreira@ifrn.edu.br

Sistemas de Arquivos. Arquivos e Diretórios Características e Implementação Tadeu Ferreira Oliveira - tadeu.ferreira@ifrn.edu.br Sistemas de Arquivos Arquivos e Diretórios Características e Implementação Tadeu Ferreira Oliveira - tadeu.ferreira@ifrn.edu.br Tadeu Ferreira IFRN 2016 Sistemas de Arquivos Objetivos Armazenar uma quantidade

Leia mais

Manual do Usuário - JIDOSHA

Manual do Usuário - JIDOSHA Manual do Usuário - JIDOSHA Biblioteca de Software para Reconhecimento Automático de Placas Veiculares Versão 1.5.18 Última atualização: 2015/07 1 Visão Geral 1.1 Condições Gerais 1.2 Licença de software

Leia mais

DAS5102 Fundamentos da Estrutura da Informação

DAS5102 Fundamentos da Estrutura da Informação Fila de Prioridade A fila de prioridade nada mais é que uma fila comum que permite que elementos sejam adicionados associados com uma prioridade. Cada elemento na fila deve possuir um dado adicional que

Leia mais

Métodos Computacionais. Fila

Métodos Computacionais. Fila Métodos Computacionais Fila Definição de Fila Fila é uma estrutura de dados dinâmica onde: Inserção de elementos se dá no final e a remoção no início O primeiro elemento que entra é o primeiro que sai

Leia mais

Programação Básica em STEP 7 Blocos de Dados. SITRAIN Training for Automation and Drives. Página 8-1

Programação Básica em STEP 7 Blocos de Dados. SITRAIN Training for Automation and Drives. Página 8-1 Conteúdo Página Áreas de Armazenamento para Dados... 2 (DBs)... 3 Visão Geral dos Tipos de Dados no STEP 7... 4 Tipos de Dados Elementares no STEP 7... 5 Criando um Novo Bloco de Dados... 6 Editando, Salvando,

Leia mais

Técnicas de Programação: ESTRUTURAS, UNIÕES E TIPOS DEE UFPB

Técnicas de Programação: ESTRUTURAS, UNIÕES E TIPOS DEE UFPB Técnicas de Programação: ESTRUTURAS, UNIÕES E TIPOS DEFINIDOS PELO USUÁRIO Prof. Protásio DEE UFPB 1 Estruturas É uma coleção de variáveis que são referenciadas sob um único nome. Uma estrutura fornece

Leia mais

PROCESSOS. Prof. Maicon A. Sartin mapsartin@gmail.com

PROCESSOS. Prof. Maicon A. Sartin mapsartin@gmail.com PROCESSOS Prof. Maicon A. Sartin mapsartin@gmail.com Cenários em Sistemas Multitarefas Um usuário pode executar diversas atividades simultâneas Música Editoração de texto Navegar na Internet Servidor pode

Leia mais

Algoritmos Eficientes de Ordenação

Algoritmos Eficientes de Ordenação AED 2002/2003 p.1/22 Algoritmos Eficientes de Ordenação Quick Sort Merge Sort Heap Sort Utilizar informação das chaves: Counting Sort Radix Sort AED 2002/2003 p.2/22 Quick Sort int partition(item a[],

Leia mais

O COMPUTADOR. Introdução à Computação

O COMPUTADOR. Introdução à Computação O COMPUTADOR Introdução à Computação Sumário O Hardware O Software Linguagens de Programação Histórico da Linguagem C Componentes Básicos do Computador O HARDWARE: O equipamento propriamente dito. Inclui:

Leia mais

O que é um algoritmo? O que é um programa? Algoritmos. Programas. Aula 1 Tipo Abstrato de Dados

O que é um algoritmo? O que é um programa? Algoritmos. Programas. Aula 1 Tipo Abstrato de Dados Aula 1 Tipo Abstrato de Dados O que é um algoritmo? Luiz Chaimowicz e Raquel O. Prates Livro Projeto de Algoritmos Capítulo 1 O que é um programa? 2009-1 Algoritmos Sequência de ações executáveis para

Leia mais

CONCEITOS DE LINGUAGEM DE PROGRAMAÇÃO CARACTERÍSTICAS. João Gabriel Ganem Barbosa

CONCEITOS DE LINGUAGEM DE PROGRAMAÇÃO CARACTERÍSTICAS. João Gabriel Ganem Barbosa CONCEITOS DE LINGUAGEM DE PROGRAMAÇÃO CARACTERÍSTICAS João Gabriel Ganem Barbosa Sumário Motivação História Linha do Tempo Divisão Conceitos Paradigmas Geração Tipos de Dados Operadores Estruturada vs

Leia mais

INF 1007 Programação II

INF 1007 Programação II INF 1007 Programação II Aula 14 Árvores Binárias Edirlei Soares de Lima Árvores Uma estrutura de dados do tipo árvore permite que dados sejam organizados de maneira hierárquica.

Leia mais

2. Constantes e Variáveis

2. Constantes e Variáveis 2. Constantes e Variáveis Neste capitulo veremos como os dados constantes e variáveis são manipulados pela linguagem C. O que são constantes inteiras, reais, caracteres e strings. Quais são as regras de

Leia mais

Instituto de C. Linguagem C: Filas. Luis Martí Instituto de Computação Universidade Federal Fluminense lmarti@ic.uff.br - http://lmarti.

Instituto de C. Linguagem C: Filas. Luis Martí Instituto de Computação Universidade Federal Fluminense lmarti@ic.uff.br - http://lmarti. Instituto de C Linguagem C: Filas Luis Martí Instituto de Computação Universidade Federal Fluminense lmarti@ic.uff.br - http://lmarti.com Tópicos Principais Conceito de Filas Interface tipo fila Implementação

Leia mais

Tipo Abstrato de Dados

Tipo Abstrato de Dados Tipo Abstrato de Dados David Menotti Algoritmos e Estruturas de Dados II DInf - UFPR Qual a diferença entre um algoritmo e um programa? Algoritmos e Estruturas de Dados Algoritmo: Sequência de ações executáveis

Leia mais

Tabela de símbolos: tabelas de espalhamento

Tabela de símbolos: tabelas de espalhamento Tabela de símbolos: tabelas de espalhamento Marcelo K. Albertini 14 de Janeiro de 2014 2/28 Resumo de complexidades Análises para operação efetuada após N inserções pior caso caso médio keys chave get

Leia mais

Linguagem C: variáveis, operadores, entrada/saída. Prof. Críston Algoritmos e Programação

Linguagem C: variáveis, operadores, entrada/saída. Prof. Críston Algoritmos e Programação Linguagem C: variáveis, operadores, entrada/saída Prof. Críston Algoritmos e Programação Linguagem C Linguagem de uso geral (qualquer tipo de aplicação) Uma das linguagens mais utilizadas Foi utilizada

Leia mais

Sistemas de Ficheiros. 1. Ficheiros 2. Directórios 3. Implementação de sistemas de ficheiros 4. Exemplos de sistemas de ficheiros

Sistemas de Ficheiros. 1. Ficheiros 2. Directórios 3. Implementação de sistemas de ficheiros 4. Exemplos de sistemas de ficheiros Sistemas de Ficheiros 1. Ficheiros 2. Directórios 3. Implementação de sistemas de ficheiros 4. Exemplos de sistemas de ficheiros Organização de um Sistema Operativo System Call Handler File System 1...

Leia mais

Computadores de Programação (MAB353)

Computadores de Programação (MAB353) Computadores de Programação (MAB353) Aula 7: 29 de abril de 2010 1 2 Subrotinas Um procedimento ou função é uma subrotina armazenada que executa uma tarefa específica baseada nos parâmetros de entrada

Leia mais