Aula 10 - Streams (Parte I)

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

Download "Aula 10 - Streams (Parte I)"

Transcrição

1 Disciplina de TICs 1 - Introdução a Programação em GPGPU Aula 10 - Streams (Parte I)

2 Introdução Até então foi visto como engenho de processamento paralelo massivo de dados nas GPUs pode aumentar assombrosamente o ganho em tempo quando comparado com as CPUs Contudo ainda há outro tipo de paralelismo a ser explorado Esta outra forma é semelhante as tarefas multithreads nas aplicações em CPU Ao invés de realizar a mesma função sobre vários dados de forma paralela, esta nova forma de paralelismo é realizar duas ou mais tarefas completamente diferentes ao mesmo tempo. Neste contexto, uma tarefa poderia ser qualquer número de coisas Exemplo: uma aplicação que uma thread redesenha a GUI e uma segunda thread realiza um download de uma atualização sobre a rede.

3 Alocações de Memória Como já visto até então, quando é desejado alocar memória, Memória na GPU: utiliza-se a função cudamalloc() Memória no Host: utiliza-se a função malloc()

4 Alocações de Memória Como já visto até então, quando é desejado alocar memória, Memória na GPU: utiliza-se a função cudamalloc() Memória no Host: utiliza-se a função malloc() Contudo ainda há uma outra forma de alocar memória no device, O runtime CUDA oferece um mecanismo de alocação de memória no Host, utilizando-se a função cudahostalloc()

5 Alocações de Memória Como já visto até então, quando é desejado alocar memória, Memória na GPU: utiliza-se a função cudamalloc() Memória no Host: utiliza-se a função malloc() Contudo ainda há uma outra forma de alocar memória no device, O runtime CUDA oferece um mecanismo de alocação de memória no Host, utilizando-se a função cudahostalloc() Contudo, porque utiliza a função cudaalloc() ao invés de malloc()?

6 Alocações de Memória Na realidade há uma diferença entra a memória alocada pela função Malloc() e a função cudahostalloc() A função Malocc() alocará uma memória padrão, uma memória paginável no host A função cudahostalloc() irá alocar uma memória com página travada (memória presa)

7 Alocações de Memória Na realidade há uma diferença entra a memória alocada pela função Malloc() e a função cudahostalloc() A função Malocc() alocará uma memória padrão, uma memória paginável no host A função cudahostalloc() irá alocar uma memória com página travada (memória presa) Um buffer com página travada tem uma importante propriedade: o S.O. nunca irá paginar para o disco uma memória presa, garantindo sua permanência na memória. Assim, um corolário é que este se transforma em uma região segura de memória para o S.O. permitir o acesso de uma aplicação ao endereço físico da memória.

8 DMA - Acesso Direto a Memória Uma vez que o endereço físico (real) é conhecido, a GPU pode utilizá-lo para acessar diretamente a memória (DMA) para copiar dados para ou a partir do host.

9 DMA - Acesso Direto a Memória Uma vez que o endereço físico (real) é conhecido, a GPU pode utilizá-lo para acessar diretamente a memória (DMA) para copiar dados para ou a partir do host. Com o Acesso Direto da Memória, a cópia DMA procede sem a intervenção da CPU. Caso a memória acessada diretamente não foce preza, significaria que a CPU estaria podendo realizar um paginamento no endereço que a GPU estaria acessando. Observe que toda vez que se deseja realizar uma cópia de memória paginável, o CUDA está utilizando uma cópia DMA. Assim, esta cópia ocorre em duas etapas: primeiro a partir de um buffer paginável um buffer da página travada é criado, e depois deste último buffer é transferido para a GPU.

10 Uso de Memória com Página Travada Contudo, deve-se resistir a tentação de se trocar todos os malloc()s por cudahostalloc() Utilizar uma memória preza é uma faca de dois gumes! A paginação de memória não foi desenvolvida a toa! A memória virtual é de suma importância para a grande maioria das aplicações poderem rodar em uma configuração mínima de memória bem abaixo do espaço que esta mesma aplicação necessitaria para rodar sem a memória virtual ou paginação de memória.

11 Uso de Memória com Página Travada Contudo, deve-se resistir a tentação de se trocar todos os malloc()s por cudahostalloc() Utilizar uma memória preza é uma faca de dois gumes! A paginação de memória não foi desenvolvida a toa! A memória virtual é de suma importância para a grande maioria das aplicações poderem rodar em uma configuração mínima de memória bem abaixo do espaço que esta mesma aplicação necessitaria para rodar sem a memória virtual ou paginação de memória. Outro ponto é que deve existir memória para garantir todos os buffers de página travada, visto que estes não sofrerão swap como disco.

12 Uso de Memória com Página Travada Contudo, deve-se resistir a tentação de se trocar todos os malloc()s por cudahostalloc() Utilizar uma memória preza é uma faca de dois gumes! A paginação de memória não foi desenvolvida a toa! A memória virtual é de suma importância para a grande maioria das aplicações poderem rodar em uma configuração mínima de memória bem abaixo do espaço que esta mesma aplicação necessitaria para rodar sem a memória virtual ou paginação de memória. Outro ponto é que deve existir memória para garantir todos os buffers de página travada, visto que estes não sofrerão swap como disco. Assim, o uso de memória preza implica em um alto consumo efetivo de memória, podendo influenciar no desempenho de outras aplicações.

13 Uso de Memória com Página Travada De forma geral, o uso de memória com paginamento travado é muito mais raro do que os outros acessos de memória já estudados. Contudo, vejamos um exemplo como uso de memória com página travada. O exemplo é muito simples e serve primariamente como um benckmark para o desempenho da função cudamemcpy() com ambas as memórias pagináveis e não pagináveis. A ideia é alocar um buffer na GPU e um na CPU de mesmo tamanho, e então executar uma certa quantidade de cópias entre estes dois buffers Será permitido ao usuário definir a direção destas cópias, se up (do host para o device) ou down (do device para o host) Para se obter uma cronometragem acurada, serão executados os eventos CUDA para o início e o fim da sequência de cópias

14 Exemplo Introdução float cuda_malloc_test( int size, bool up ) { cudaevent_t start, stop; int *a, *dev_a; float elapsedtime; HANDLE_ERROR( cudaeventcreate( &start ) ); HANDLE_ERROR( cudaeventcreate( &stop ) ); a = (int*)malloc( size * sizeof( *a ) ); HANDLE_NULL( a ); HANDLE_ERROR( cudamalloc( (void**)&dev_a, size * sizeof( *dev_a ) ) );

15 Exemplo Introdução HANDLE_ERROR( cudaeventrecord( start, 0 ) ); for (int i=0; i<100; i++) { if (up) HANDLE_ERROR( cudamemcpy( dev_a, a, size * sizeof( *dev_a ), cudamemcpyhosttodevice ) ); else HANDLE_ERROR( cudamemcpy( a, dev_a, size * sizeof( *dev_a ), cudamemcpydevicetohost ) ); } HANDLE_ERROR( cudaeventrecord( stop, 0 ) ); HANDLE_ERROR( cudaeventsynchronize( stop ) ); HANDLE_ERROR( cudaeventelapsedtime( &elapsedtime, start, stop) );

16 Exemplo Introdução free( a ); HANDLE_ERROR( cudafree( dev_a ) ); HANDLE_ERROR( cudaeventdestroy( start ) ); HANDLE_ERROR( cudaeventdestroy( stop ) ); } return elapsedtime;

17 Exemplo Introdução No exemplo dado, independente da direção da cópia, começa-se com a alocação de um buffer no host e na GPU de tamanho inteiro size. São geradas 100 cópias na direção especificada pelo argumento up, parando o tempo depois do término do processo das 100 cópias. E por fim as memórias do host e GPU são liberadas.

18 Exemplo Introdução No exemplo dado, independente da direção da cópia, começa-se com a alocação de um buffer no host e na GPU de tamanho inteiro size. São geradas 100 cópias na direção especificada pelo argumento up, parando o tempo depois do término do processo das 100 cópias. E por fim as memórias do host e GPU são liberadas. Mas o ponto importante da função cuda malloc test() é que esta aloca memória paginável, com o uso da função malloc()

19 Exemplo - Page-Locked float cuda_host_alloc_test( int size, bool up ) { cudaevent_t start, stop; int *a, *dev_a; float elapsedtime; HANDLE_ERROR( cudaeventcreate( &start ) ); HANDLE_ERROR( cudaeventcreate( &stop ) ); HANDLE_ERROR( cudahostalloc( (void**)&a, size * sizeof( *a ), cudahostallocdefault ) ); HANDLE_ERROR( cudamalloc( (void**)&dev_a, size * sizeof( *dev_a ) ) );

20 Exemplo - Page-Locked HANDLE_ERROR( cudaeventrecord( start, 0 ) ); for (int i=0; i<100; i++) { if (up) HANDLE_ERROR( cudamemcpy( dev_a, a, size * sizeof( *a ), cudamemcpyhosttodevice ) ); else HANDLE_ERROR( cudamemcpy( a, dev_a, size * sizeof( *a ), cudamemcpydevicetohost ) ); } HANDLE_ERROR( cudaeventrecord( stop, 0 ) ); HANDLE_ERROR( cudaeventsynchronize( stop ) ); HANDLE_ERROR( cudaeventelapsedtime( &elapsedtime, start, stop ) );

21 Exemplo - Page-Locked HANDLE_ERROR( cudafreehost( a ) ); HANDLE_ERROR( cudafree( dev_a ) ); HANDLE_ERROR( cudaeventdestroy( start ) ); HANDLE_ERROR( cudaeventdestroy( stop ) ); } return elapsedtime;

22 Exemplo - Page-Locked Neste segundo exemplo, é utilizada a alocação de uma memória preza. O buffer alocado pela função cudahostalloc() é usado da mesma forma que o buffer alocado poe malloc() Um ponto de diferença é o argumento cudahostallocdefault utilizado na função cudahostalloc() Este argumento pode receber uma coleção de flags que podem ser utilizadas para modificar o comportamento da função cudahostalloc() de forma a alocar outras variáveis da memória preza do host No próximo capítulo serão abordadas outras possibilidades para este argumento. Aqui esta se querendo uma memória não paginável padrão, assim se utiliza cudahostallocdefault Para desalocar um buffer alocado com cudahostalloc() utiliza-se cudafreehost()

23 Testes Introdução Utilizando-se uma GeForce GTX 285, foi observado Cópia do Hosto para o Device Memória paginável: 2.77GB/s Memória não paginável: 5.11GB/s Cópia do Device para o Hosto Memória paginável: 2.43GB/s Memória não paginável: 5.46GB/s

24 Streams no CUDA Introdução Um Stream CUDA Simples Já foi introduzida a ideia de eventos em CUDA, contudo ainda não foi discutido a função do segundo argumento da função cudaeventrecird() Este segundo argumento especifica o stream ao qual está sendo inserido o evento. cudaevent_t start; cudaeventcreate(&start); cudaeventrecord( start, 0 ); Um stream CUDA representa uma fila de operações de GPU a serem executadas em uma ordem específica É possível adicionar operações em um stream tais como, Lancamentos de kernels Cópia de Memória Início e finalização de eventos

25 Stream CUDA Introdução Um Stream CUDA Simples O verdadeiro poder do uso dos streams torna-se aparente quando se utiliza mais de um deles por vez, mas verificaremos o uso de um stream inicialmente.

26 Stream CUDA Introdução Um Stream CUDA Simples O verdadeiro poder do uso dos streams torna-se aparente quando se utiliza mais de um deles por vez, mas verificaremos o uso de um stream inicialmente. Imagine um kernal CUDA tomando dois buffers de entrada, a e b Será realizada alguma computação com a e b, gerando o buffer de saída c (média de três observações) #define N (1024*1024) #define FULL_DATA_SIZE (N*20) global void kernel( int *a, int *b, int *c ) { int idx = threadidx.x + blockidx.x * blockdim.x; if (idx < N) { int idx1 = (idx + 1) % 256; int idx2 = (idx + 2) % 256; float as = (a[idx] + a[idx1] + a[idx2]) / 3.0f; float bs = (b[idx] + b[idx1] + b[idx2]) / 3.0f; c[idx] = (as + bs) / 2; } }

27 Stream CUDA Introdução Um Stream CUDA Simples Seja o código main() int main( void ) { cudadeviceprop prop; int whichdevice; HANDLE_ERROR( cudagetdevice( &whichdevice ) ); HANDLE_ERROR( cudagetdeviceproperties( &prop, whichdevice ) ); if (!prop.deviceoverlap) { printf( "Device will not handle overlaps, so no " "speed up from streams\n" ); return 0; } Aqui, o primeiro passa é escolher um device e verificar se este suporta uma característica conhecida como device overlap A característica device overlap permite a GPU simultaneamente executar um kernel CUDA C e uma cópia de memória entre o Device e o Host

28 Stream CUDA Introdução Um Stream CUDA Simples Vamos começar criando e inicializando um evento timer, cudaevent_t start, stop; float elapsedtime; // start the timers HANDLE_ERROR( cudaeventcreate( &start ) ); HANDLE_ERROR( cudaeventcreate( &stop ) ); HANDLE_ERROR( cudaeventrecord( start, 0 ) );

29 Stream CUDA Introdução Um Stream CUDA Simples Vamos começar criando e inicializando um evento timer, cudaevent_t start, stop; float elapsedtime; // start the timers HANDLE_ERROR( cudaeventcreate( &start ) ); HANDLE_ERROR( cudaeventcreate( &stop ) ); HANDLE_ERROR( cudaeventrecord( start, 0 ) ); Depois de inicializar o timer, cria-se o stream, // initialize the stream cudastream_t stream; HANDLE_ERROR( cudastreamcreate( &stream ) );

30 Stream CUDA Alocação de Dados Um Stream CUDA Simples int *host_a, *host_b, *host_c; int *dev_a, *dev_b, *dev_c; // allocate the memory on the GPU HANDLE_ERROR( cudamalloc( (void**)&dev_a, N * sizeof(int) ) ); HANDLE_ERROR( cudamalloc( (void**)&dev_b, N * sizeof(int) ) ); HANDLE_ERROR( cudamalloc( (void**)&dev_c, N * sizeof(int) ) ); // allocate page-locked memory, used to stream HANDLE_ERROR( cudahostalloc( (void**)&host_a, FULL_DATA_SIZE * sizeof(int),cudahostallocdefault)); HANDLE_ERROR( cudahostalloc( (void**)&host_b, FULL_DATA_SIZE * sizeof(int),cudahostallocdefault)); HANDLE_ERROR( cudahostalloc( (void**)&host_c, FULL_DATA_SIZE * sizeof(int),cudahostallocdefault)); for (int i=0; i<full_data_size; i++) { host_a[i] = rand(); host_b[i] = rand(); }

31 Stream CUDA Introdução Um Stream CUDA Simples Foram alocados as entradas e saídas tanto da GPU com no Host. Observe que foi escolhido utilizar a memória não paginável na Host, utilizando-se a função cudahostalloc() para realizar as alocações Há mais do que realizar cópias mais rápido para o uso de memória não paginável. Estará sendo utilizada um novo tipo da função cudamemcpy(), e esta requer memória não paginável.

32 Stream CUDA Introdução Um Stream CUDA Simples Foram alocados as entradas e saídas tanto da GPU com no Host. Observe que foi escolhido utilizar a memória não paginável na Host, utilizando-se a função cudahostalloc() para realizar as alocações Há mais do que realizar cópias mais rápido para o uso de memória não paginável. Estará sendo utilizada um novo tipo da função cudamemcpy(), e esta requer memória não paginável. Depois da alocação das entradas, as alocações do host são preenchidas com números aleatórios

33 Stream CUDA Introdução Um Stream CUDA Simples Foram alocados as entradas e saídas tanto da GPU com no Host. Observe que foi escolhido utilizar a memória não paginável na Host, utilizando-se a função cudahostalloc() para realizar as alocações Há mais do que realizar cópias mais rápido para o uso de memória não paginável. Estará sendo utilizada um novo tipo da função cudamemcpy(), e esta requer memória não paginável. Depois da alocação das entradas, as alocações do host são preenchidas com números aleatórios Com o stream, os eventos de tempo, os buffers do host e device alocados, estamos prontos para desempenhar as computações O procedimento geral ainda é copia-se os buffers de entrada para a GPU, levanta-se um kernel e copia-se um buffer de saída de volta para o host

34 Stream CUDA Introdução Um Stream CUDA Simples Serão tomadas algumas pequenas alterações do procedimento genérico, Os buffers de entrada não serão copiados em sua integridade para a GPU As entradas serão divididos em pedaços, e cada pedaço será aplicado um processo em três etapas Dada uma fração do buffer de entrada, copia-se para a GPU e se executa o kernel sobre a fração do buffer, copiando-se de volta para o host a fração do buffer de saída gerado. Imagine que este procedimento é utilizado por que o buffer do host simplesmente não cabe na memória da GPU No próximo slide será apresentado o código para desempenhar a sequência de computação

35 Stream CUDA Introdução Um Stream CUDA Simples // now loop over full data, in bite-sized chunks for (int i=0; i<full_data_size; i+= N) { // copy the locked memory to the device, async HANDLE_ERROR( cudamemcpyasync(dev_a,host_a+i,n*sizeof(int), cudamemcpyhosttodevice, stream ) ); HANDLE_ERROR( cudamemcpyasync(dev_b,host_b+i,n*sizeof(int), cudamemcpyhosttodevice, stream ) ); kernel<<<n/256,256,0,stream>>>( dev_a, dev_b, dev_c ); } // copy the data from device to locked memory HANDLE_ERROR( cudamemcpyasync(host_c+i,dev_c,n*sizeof(int), cudamemcpydevicetohost, stream ) );

36 Modificações Utilizadas Um Stream CUDA Simples Ao invés de se utilizar a função cudamemcpy() foi utilizada a função cudamemcpyasync() A diferença entre as duas funções é sutil, porém significante. A função cudamemcpy() se comporta da mesma forma que memcpy() do C padrão Esta função funciona de forma síncrona, significando que quando a função retorna um valor, a cópia tem sido completada.

37 Modificações Utilizadas Um Stream CUDA Simples Ao invés de se utilizar a função cudamemcpy() foi utilizada a função cudamemcpyasync() A diferença entre as duas funções é sutil, porém significante. A função cudamemcpy() se comporta da mesma forma que memcpy() do C padrão Esta função funciona de forma síncrona, significando que quando a função retorna um valor, a cópia tem sido completada. Em oposição a uma função síncrona existe uma função assíncrona. No caso, a função cudamemcpyasync()

38 Modificações Utilizadas Um Stream CUDA Simples A chamada da função cudamemcpyasync() simplesmente recoloca o pedido de cópia de memória em um stream especificado pelo argumento stream Quando a chamada da função cudamemcpyasync() retorna, não há nenhuma garantia que a cópia tenha sequer inicializado, muito menos tenha sido finalizada. A única garantia é que a cópia será finalizada antes que a próxima operação localizada no mesmo stream É requerido que qualquer ponteiro da memória Host passado para a função cudamemcpyasync() tenha sido alocado por cudahostalloc() Ou seja, todo agendamento de cópia assíncrona só é possível de ou para uma região de memória não paginável.

39 Modificações Utilizadas Um Stream CUDA Simples Observe também que o lançamento do kernel também foi modificado Agora há um maior número de argumentos sendo passados para o kernel. O lançamento deste kernel também é assíncrono. Tecnicamente, é possível concluir uma iteração do laço for sem ter começado qualquer alocação de memória e/ou execução do kernel A única garantia é que a primeira cópia lançada no stream será executada antes da segunda cópia. A segunda cópia será realizada antes do ínicio do kernel, e o kernel irá ser finalizado antes da terceira cópia

40 Modificações Utilizadas Um Stream CUDA Simples Observe também que o lançamento do kernel também foi modificado Agora há um maior número de argumentos sendo passados para o kernel. O lançamento deste kernel também é assíncrono. Tecnicamente, é possível concluir uma iteração do laço for sem ter começado qualquer alocação de memória e/ou execução do kernel A única garantia é que a primeira cópia lançada no stream será executada antes da segunda cópia. A segunda cópia será realizada antes do ínicio do kernel, e o kernel irá ser finalizado antes da terceira cópia O stream funciona como uma lista ordenada de trabalhos a serem realizados na GPU.

41 Modificações Utilizadas Um Stream CUDA Simples Observe que depois do lação for() ter sido concluído, ainda há a possibilidade da GPU ainda está processando.

42 Modificações Utilizadas Um Stream CUDA Simples Observe que depois do lação for() ter sido concluído, ainda há a possibilidade da GPU ainda está processando. Caso haja o desejo de que a CPU espera a computação da GPU, há a necessidade de se realizar uma sincronização. Este sincronização pode ser realizada por meio da função cudastreamsynchronaze() e o stream que se deseja esperar, // copy result chunk from locked to full buffer HANDLE_ERROR( cudastreamsynchronize( stream ) );

43 Modificações Utilizadas Um Stream CUDA Simples Observe que depois do lação for() ter sido concluído, ainda há a possibilidade da GPU ainda está processando. Caso haja o desejo de que a CPU espera a computação da GPU, há a necessidade de se realizar uma sincronização. Este sincronização pode ser realizada por meio da função cudastreamsynchronaze() e o stream que se deseja esperar, // copy result chunk from locked to full buffer HANDLE_ERROR( cudastreamsynchronize( stream ) ); Uma vez as computações e cópias tenham sido completadas depois da sincronização da stream como o host, falta para o timer, coletar os dados e liberar a memória.

44 o Restante do Código Um Stream CUDA Simples HANDLE_ERROR( cudaeventrecord( stop, 0 ) ); HANDLE_ERROR( cudaeventsynchronize( stop ) ); HANDLE_ERROR( cudaeventelapsedtime( &elapsedtime, start, stop ) ); printf( "Time taken:%3.1f ms\n", elapsedtime ); // cleanup the streams and memory HANDLE_ERROR( cudafreehost( host_a ) ); HANDLE_ERROR( cudafreehost( host_b ) ); HANDLE_ERROR( cudafreehost( host_c ) ); HANDLE_ERROR( cudafree( dev_a ) ); HANDLE_ERROR( cudafree( dev_b ) ); HANDLE_ERROR( cudafree( dev_c ) );

45 Restante do Código Um Stream CUDA Simples E por fim, antes de sair da aplicação, é necessário destruir o stream, HANDLE_ERROR( cudastreamdestroy( stream ) ); } return 0;

46 Exercício Introdução Um Stream CUDA Simples Implemente os códigos apresentados, realizando as comparações de desempenho.

47 Bibliografia Jason Sandres and Edward Kandrot. CUDA by exemple. An Introduction to General-Purpose GPU Programming. Addison-Wesley, Capítulo 10

Arquitetura e Programação de GPU. Leandro Zanotto RA: 001962 Anselmo Ferreira RA: 023169 Marcelo Matsumoto RA: 085973

Arquitetura e Programação de GPU. Leandro Zanotto RA: 001962 Anselmo Ferreira RA: 023169 Marcelo Matsumoto RA: 085973 Arquitetura e Programação de GPU Leandro Zanotto RA: 001962 Anselmo Ferreira RA: 023169 Marcelo Matsumoto RA: 085973 Agenda Primeiras Placas de Vídeo Primeira GPU Arquitetura da GPU NVIDIA Arquitetura

Leia mais

Processamento de Alto Desempenho utilizando Unidade de Processamento Gráfico - GPU

Processamento de Alto Desempenho utilizando Unidade de Processamento Gráfico - GPU Processamento de Alto Desempenho utilizando Unidade de Processamento Gráfico - GPU Francisco Ribacionka e Ettore Enrico (STI ) USP/STI/InterNuvem internuvem@usp.br Março -2016 Processamento de Alto Desempenho

Leia mais

Programação em Paralelo. N. Cardoso & P. Bicudo. Física Computacional - MEFT 2012/2013

Programação em Paralelo. N. Cardoso & P. Bicudo. Física Computacional - MEFT 2012/2013 Programação em Paralelo CUDA N. Cardoso & P. Bicudo Física Computacional - MEFT 2012/2013 N. Cardoso & P. Bicudo Programação em Paralelo: CUDA 1 / 23 CUDA "Compute Unified Device Architecture" Parte 2

Leia mais

Programação em Paralelo. N. Cardoso & P. Bicudo. Física Computacional - MEFT 2010/2011

Programação em Paralelo. N. Cardoso & P. Bicudo. Física Computacional - MEFT 2010/2011 Programação em Paralelo CUDA N. Cardoso & P. Bicudo Física Computacional - MEFT 2010/2011 N. Cardoso & P. Bicudo Programação em Paralelo: CUDA 1 / 11 CUDA Parte 2 N. Cardoso & P. Bicudo Programação em

Leia mais

Programação em Paralelo. N. Cardoso & P. Bicudo. Física Computacional - MEFT 2010/2011

Programação em Paralelo. N. Cardoso & P. Bicudo. Física Computacional - MEFT 2010/2011 Programação em Paralelo CUDA N. Cardoso & P. Bicudo Física Computacional - MEFT 2010/2011 N. Cardoso & P. Bicudo Programação em Paralelo: CUDA 1 / 12 CUDA Parte 3 N. Cardoso & P. Bicudo Programação em

Leia mais

Edison Gustavo Muenz. Estudo e implementação de um algoritmo de processamento de imagens com técnicas GPGPU

Edison Gustavo Muenz. Estudo e implementação de um algoritmo de processamento de imagens com técnicas GPGPU Edison Gustavo Muenz Estudo e implementação de um algoritmo de processamento de imagens com técnicas GPGPU Florianópolis SC Agosto / 2008 Edison Gustavo Muenz Estudo e implementação de um algoritmo de

Leia mais

Estruturas do Sistema de Computação

Estruturas do Sistema de Computação Estruturas do Sistema de Computação Prof. Dr. José Luís Zem Prof. Dr. Renato Kraide Soffner Prof. Ms. Rossano Pablo Pinto Faculdade de Tecnologia de Americana Centro Paula Souza Estruturas do Sistema de

Leia mais

Waldemar Celes. 25 de Agosto de 2014

Waldemar Celes. 25 de Agosto de 2014 Introdução a CUDA INF2062 Tópicos em Simulação e Visualização Waldemar Celes celes@inf.puc-rio.br Tecgraf, DI/PUC-Rio 25 de Agosto de 2014 W. Celes Introdução a CUDA 1 GPGPU Programação de propósito geral

Leia mais

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

Introdução a Programação. Ponteiros e Strings, Alocação Dinâmica Introdução a Programação Ponteiros e Strings, Alocação Dinâmica Tópicos da Aula Hoje aprenderemos a relação entre ponteiros e strings Ponteiros para strings X Vetores de Caracteres Vetores de ponteiros

Leia mais

Programação Paralela e Distribuída (DCC/UFRJ)

Programação Paralela e Distribuída (DCC/UFRJ) Programação Paralela e Distribuída (DCC/UFRJ) Aula 7: Programação com memória compartilhada usando OpenMP 1, 8, 10 e 15 de abril de 2015 OpenMP (Open MultiProcessing) Projetado para sistemas de memória

Leia mais

Programação Paralela em Ambientes Computacionais Heterogêneos com OpenCL

Programação Paralela em Ambientes Computacionais Heterogêneos com OpenCL Programação Paralela em Ambientes Computacionais Heterogêneos com OpenCL César L. B. Silveira Prof. Dr. Luiz G. da Silveira Jr. Prof. Dr. Gerson Geraldo H. Cavalheiro 28 de outubro de 2010 contato@v3d.com.br

Leia mais

Processos e Threads (partes I e II)

Processos e Threads (partes I e II) Processos e Threads (partes I e II) 1) O que é um processo? É qualquer aplicação executada no processador. Exe: Bloco de notas, ler um dado de um disco, mostrar um texto na tela. Um processo é um programa

Leia mais

Aula 3. Sistemas Operacionais. Prof: Carlos Eduardo de Carvalho Dantas (carloseduardoxpto@gmail.com) http://carloseduardoxp.wordpress.

Aula 3. Sistemas Operacionais. Prof: Carlos Eduardo de Carvalho Dantas (carloseduardoxpto@gmail.com) http://carloseduardoxp.wordpress. Sistemas Operacionais Aula 3 Prof: Carlos Eduardo de Carvalho Dantas (carloseduardoxpto@gmail.com) http://carloseduardoxp.wordpress.com Nunca cone em um computador que você não pode jogar pela janela.

Leia mais

Notas da Aula 4 - Fundamentos de Sistemas Operacionais

Notas da Aula 4 - Fundamentos de Sistemas Operacionais Notas da Aula 4 - Fundamentos de Sistemas Operacionais 1. Threads Threads são linhas de execução dentro de um processo. Quando um processo é criado, ele tem uma única linha de execução, ou thread. Esta

Leia mais

SISTEMAS OPERACIONAIS CAPÍTULO 3 CONCORRÊNCIA

SISTEMAS OPERACIONAIS CAPÍTULO 3 CONCORRÊNCIA SISTEMAS OPERACIONAIS CAPÍTULO 3 CONCORRÊNCIA 1. INTRODUÇÃO O conceito de concorrência é o princípio básico para o projeto e a implementação dos sistemas operacionais multiprogramáveis. O sistemas multiprogramáveis

Leia mais

discos impressora CPU memória AULA 04 - Estruturas de Sistemas Computacionais Operação dos sistemas de computação Controlador de disco

discos impressora CPU memória AULA 04 - Estruturas de Sistemas Computacionais Operação dos sistemas de computação Controlador de disco AULA 04 - Estruturas Sistemas Computacionais Nosso objetivo é apenas revisar conceitos relacionados a estrutura geral um sistema computacional para pois explicarmos os talhes operação do sistema e como

Leia mais

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

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 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 região de armazenamento formada por bytes ou palavras, cada

Leia mais

Sistemas Operacionais Gerência de Dispositivos

Sistemas Operacionais Gerência de Dispositivos Universidade Estadual de Mato Grosso do Sul UEMS Curso de Licenciatura em Computação Sistemas Operacionais Gerência de Dispositivos Prof. José Gonçalves Dias Neto profneto_ti@hotmail.com Introdução A gerência

Leia mais

6 - Gerência de Dispositivos

6 - Gerência de Dispositivos 1 6 - Gerência de Dispositivos 6.1 Introdução A gerência de dispositivos de entrada/saída é uma das principais e mais complexas funções do sistema operacional. Sua implementação é estruturada através de

Leia mais

Arquitetura de Computadores II

Arquitetura de Computadores II Universidade Federal do Rio de Janeiro Informática DCC/IM Arquitetura de Computadores II Sistemas de Troca de Mensagens O Sistema de Comunicação provê tipicamente os seguintes serviços para as aplicações:

Leia mais

Sistemas Operativos. Threads. 3º ano - ESI e IGE (2011/2012) Engenheiro Anilton Silva Fernandes (afernandes@unipiaget.cv)

Sistemas Operativos. Threads. 3º ano - ESI e IGE (2011/2012) Engenheiro Anilton Silva Fernandes (afernandes@unipiaget.cv) Sistemas Operativos Threads 3º ano - ESI e IGE (2011/2012) Engenheiro Anilton Silva Fernandes (afernandes@unipiaget.cv) Dos Processos para os Threads O conceito de thread foi introduzido na tentativa de

Leia mais

O texto desta seção foi publicado em http://msdn.microsoft.com/ptbr/library/ms177433.aspx. o http://msdn.microsoft.com/pt-br/library/ms178104.

O texto desta seção foi publicado em http://msdn.microsoft.com/ptbr/library/ms177433.aspx. o http://msdn.microsoft.com/pt-br/library/ms178104. AULA 12 - Deadlocks Em alguns casos pode ocorrer a seguinte situação: um processo solicita um determinado recurso e este não está disponível no momento. Quando isso ocontece o processo entra para o estado

Leia mais

Resumo da Matéria de Linguagem de Programação. Linguagem C

Resumo da Matéria de Linguagem de Programação. Linguagem C Resumo da Matéria de Linguagem de Programação Linguagem C Vitor H. Migoto de Gouvêa 2011 Sumário Como instalar um programa para executar o C...3 Sintaxe inicial da Linguagem de Programação C...4 Variáveis

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

Integração de Sistemas Embebidos MECom :: 5º ano

Integração de Sistemas Embebidos MECom :: 5º ano Integração de Sistemas Embebidos MECom :: 5º ano Device Drivers em Linux - Introdução António Joaquim Esteves www.di.uminho.pt/~aje Bibliografia: capítulo 1, LDD 3ed, O Reilly DEP. DE INFORMÁTICA ESCOLA

Leia mais

Sistemas Operacionais Aula 03: Estruturas dos SOs. Ezequiel R. Zorzal ezorzal@unifesp.br www.ezequielzorzal.com

Sistemas Operacionais Aula 03: Estruturas dos SOs. Ezequiel R. Zorzal ezorzal@unifesp.br www.ezequielzorzal.com Sistemas Operacionais Aula 03: Estruturas dos SOs Ezequiel R. Zorzal ezorzal@unifesp.br www.ezequielzorzal.com OBJETIVOS Descrever os serviços que um sistema operacional oferece aos usuários e outros sistemas

Leia mais

UNIVERSIDADE ESTADUAL DE CAMPINAS FACULDADE DE ENGENHARIA MECÂNICA

UNIVERSIDADE ESTADUAL DE CAMPINAS FACULDADE DE ENGENHARIA MECÂNICA UNIVERSIDADE ESTADUAL DE CAMPINAS FACULDADE DE ENGENHARIA MECÂNICA Relatório Final Trabalho de Conclusão de Curso Partição de Domínios para Processamento em Cluster de GPUs Autor: Lucas Monteiro Volpe

Leia mais

Introdução à Computação: Sistemas Operacionais II

Introdução à Computação: Sistemas Operacionais II Introdução à Computação: Sistemas Operacionais II Ricardo de Sousa Bri.o rbri.o@ufpi.edu.br DIE- UFPI Objetivos Descrever os métodos de alocação de recursos ublizados pelos sistemas operacionais. Descrever

Leia mais

Sistemas Operacionais. (Capítulo 3) INTRODUÇÃO À ENGENHARIA DA COMPUTAÇÃO. Professor: Rosalvo Ferreira de Oliveira Neto

Sistemas Operacionais. (Capítulo 3) INTRODUÇÃO À ENGENHARIA DA COMPUTAÇÃO. Professor: Rosalvo Ferreira de Oliveira Neto Sistemas Operacionais (Capítulo 3) INTRODUÇÃO À ENGENHARIA DA COMPUTAÇÃO Professor: Rosalvo Ferreira de Oliveira Neto Estrutura 1. Definições 2. Classificações 3. CPU 4. Memória 5. Utilitários O que se

Leia mais

Computação de alto desempenho utilizando CUDA

Computação de alto desempenho utilizando CUDA Computação de alto desempenho utilizando CUDA Bruno Cardoso Lopes, Rodolfo Jardim de Azevedo 1 Instituto de Computação Universidade Estadual de Campinas (Unicamp) Caixa Postal 6176 13083-970 Campinas SP

Leia mais

3.1. Paralelização em CUDA (GPU-PGLIQ)

3.1. Paralelização em CUDA (GPU-PGLIQ) 44 3 3.1. Paralelização em CUDA (GPU-PGLIQ) Aplicação: Aceleração Base No algoritmo serial de PGLIQ, o maior tempo de processamento está na avaliação da função de aptidão, embora este procedimento seja

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Gerência de processos Controle e descrição de processos Edson Moreno edson.moreno@pucrs.br http://www.inf.pucrs.br/~emoreno Sumário Representação e controle de processos pelo SO Estrutura

Leia mais

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064 Sistemas Distribuídos Professora: Ana Paula Couto DCC 064 Questões Em uma rede de sobreposição (overlay), mensagens são roteadas de acordo com a topologia da sobreposição. Qual uma importante desvantagem

Leia mais

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

UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE INFORMÁTICA INFORMÁTICA APLICADA Responda 1) Quem desenvolveu a linguagem C? Quando? 2) Existe alguma norma sobre a sintaxe da linguagem C? 3) Quais são os tipos básicos de dados disponíveis na linguagem C? 4) Quais são as principais

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

PARALELIZAÇÃO DE APLICAÇÕES NA ARQUITETURA CUDA: UM ESTUDO SOBRE VETORES 1

PARALELIZAÇÃO DE APLICAÇÕES NA ARQUITETURA CUDA: UM ESTUDO SOBRE VETORES 1 PARALELIZAÇÃO DE APLICAÇÕES NA ARQUITETURA CUDA: UM ESTUDO SOBRE VETORES 1 DUTRA, Evandro Rogério Fruhling 2 ; VARINI, Andre Luis 2 ; CANAL, Ana Paula 2 1 Trabalho de Iniciação Científica _UNIFRA 2 Ciência

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Sistemas de Entrada/Saída Princípios de Software Sistema de Entrada/Saída Princípios de Software Tratadores (Manipuladores) de Interrupções Acionadores de Dispositivos (Device Drivers)

Leia mais

Princípios de TI - Computadores. Sistema Operacional. CECOMP Colegiado de Engenharia da Computação. Prof. Fábio Nelson. Slide 1

Princípios de TI - Computadores. Sistema Operacional. CECOMP Colegiado de Engenharia da Computação. Prof. Fábio Nelson. Slide 1 Sistema Operacional Slide 1 Sistema Operacional Um conjunto de programas que se situa entre os softwares aplicativos e o hardware: Gerencia os recursos do computador (CPU, dispositivos periféricos). Estabelece

Leia mais

Expressões. Prof. Alberto Costa Neto alberto@ufs.br. Linguagens de Programação. Departamento de Computação Universidade Federal de Sergipe

Expressões. Prof. Alberto Costa Neto alberto@ufs.br. Linguagens de Programação. Departamento de Computação Universidade Federal de Sergipe Linguagens de Programação Departamento de Computação Universidade Federal de Sergipe Expressão é uma frase de um programa que ao ser avaliada retorna um valor Tipos Literais Agregados Chamadas de Função

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

Visão Geral de Sistemas Operacionais

Visão Geral de Sistemas Operacionais Visão Geral de Sistemas Operacionais Sumário Um sistema operacional é um intermediário entre usuários e o hardware do computador. Desta forma, o usuário pode executar programas de forma conveniente e eficiente.

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Aula 5 Estrutura de Sistemas de Computação Prof.: Edilberto M. Silva http://www.edilms.eti.br Baseado no material disponibilizado por: SO - Prof. Edilberto Silva Prof. José Juan Espantoso

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

A Camada de Transporte

A Camada de Transporte A Camada de Transporte Romildo Martins Bezerra CEFET/BA s de Computadores II Funções da Camada de Transporte... 2 Controle de conexão... 2 Fragmentação... 2 Endereçamento... 2 Confiabilidade... 2 TCP (Transmission

Leia mais

Mecanismo de Interrupção

Mecanismo de Interrupção Mecanismo de Interrupção Paralelismo de Operação Num sistema multiprogramado a CPU está sempre apta a compartilhar o seu tempo entre os vários programas e os diferentes dispositivos periféricos que necessitam

Leia mais

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

Estruturas de Armazenamento e Indexação. Rafael Lage Moreira Barbosa 10.1.4217 Estruturas de Armazenamento e Indexação Rafael Lage Moreira Barbosa 10.1.4217 Estruturas de Armazenamento Banco de Dados são armazenados fisicamente como arquivos de registro, que em geral ficam em discos

Leia mais

Introdução à Programação. Recursão

Introdução à Programação. Recursão Introdução à Programação Recursão Recursão decoração Substantivo feminino. 1.Ato ou efeito de decorar decorar Verbo transitivo direto. 1.Guarnecer com adorno(s); dispor formas e cores em; ornamentar, embelezar;

Leia mais

Curso de Linguagem C

Curso de Linguagem C Curso de Linguagem C 1 Aula 1 - INTRODUÇÃO...4 AULA 2 - Primeiros Passos...5 O C é "Case Sensitive"...5 Dois Primeiros Programas...6 Introdução às Funções...7 Introdução Básica às Entradas e Saídas...

Leia mais

JOSÉ HENRIQUE MADEIRA CIMINO ANÁLISE DE PARALELISMO EM ARQUITETURA MULTICORE COM USO DE UNIDADE DE PROCESSAMENTO GRÁFICO

JOSÉ HENRIQUE MADEIRA CIMINO ANÁLISE DE PARALELISMO EM ARQUITETURA MULTICORE COM USO DE UNIDADE DE PROCESSAMENTO GRÁFICO 1 FUNDAÇÃO DE ENSINO EURÍPIDES SOARES DA ROCHA CENTRO UNIVERSITÁRIO EURÍPIDES DE MARÍLIA UNIVEM CURSO DE CIÊNCIA DA COMPUTAÇÃO JOSÉ HENRIQUE MADEIRA CIMINO ANÁLISE DE PARALELISMO EM ARQUITETURA MULTICORE

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos Processos I: Threads, virtualização e comunicação via protocolos Prof. MSc. Hugo Souza Nesta primeira parte sobre os Processos Distribuídos iremos abordar: Processos e a comunicaçã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

Introdução a Computação

Introdução a Computação Sistemas Operacionais: Software Oculto Introdução a Computação Sistemas Operacionais Serve como um intermediário entre o hardware e os softwares aplicativos. Sistema Operacional Software de sistemas Kernel

Leia mais

Organização de Arquivos

Organização de Arquivos Classificação e Pesquisa de Dados Aula 2 Organização de s: s Sequenciais e s Sequenciais Indexados UFRGS INF01124 Organização de s Propósito Estudo de técnicas de armazenamento e recuperação de dados em

Leia mais

EXEMPLO: Processo para atualização da hora Processo para monitoramento da necessidade de proteção de tela. Figura 4-1 - Exemplo

EXEMPLO: Processo para atualização da hora Processo para monitoramento da necessidade de proteção de tela. Figura 4-1 - Exemplo 4 PROCESSOS Os primeiros sistemas operacionais permitiam que apenas um processo fosse executado por vez. Dessa maneira, este processo tinha todo o sistema computacional a sua disposição. Os atuais sistemas

Leia mais

INF 1007 Programação II

INF 1007 Programação II INF 1007 Programação II Aula 06 Tipos Estruturados Edirlei Soares de Lima Dados Compostos Até agora somente utilizamos tipos de dados simples: char, int, float, double. Muitas vezes

Leia mais

Comunicação em Sistemas Distribuídos

Comunicação em Sistemas Distribuídos Comunicação em Sistemas Distribuídos A diferença mais importante entre os Sistemas Distribuídos e os Sistemas Uniprocessadores é a comunicação inter-processo. Nos uniprocessadores esta comunicação é feita

Leia mais

Programação de Computadores I. Ponteiros

Programação de Computadores I. Ponteiros Ponteiros Prof. Edwar Saliba Júnior Outubro de 2012 Unidade 13 Ponteiros 1 Identificadores e Endereços Na linguagem C, uma declaração de variável faz associação entre um identificador e endereços de memória;

Leia mais

PROCESSOS COMPONENTES DE UM PROCESSO. A execução de um processo possui vários componentes. PID e PPID

PROCESSOS COMPONENTES DE UM PROCESSO. A execução de um processo possui vários componentes. PID e PPID PROCESSOS Um processo é um canal de comunicação entre os programas que estão sendo executados no sistema operacional e o usuário, ou seja um processo é um programa que está sendo executado. No Linux /

Leia mais

Notas da Aula 15 - Fundamentos de Sistemas Operacionais

Notas da Aula 15 - Fundamentos de Sistemas Operacionais Notas da Aula 15 - Fundamentos de Sistemas Operacionais 1. Software de Entrada e Saída: Visão Geral Uma das tarefas do Sistema Operacional é simplificar o acesso aos dispositivos de hardware pelos processos

Leia mais

Sistemas Distribuídos Comunicação. Edeyson Andrade Gomes www.edeyson.com.br

Sistemas Distribuídos Comunicação. Edeyson Andrade Gomes www.edeyson.com.br Sistemas Distribuídos Comunicação Edeyson Andrade Gomes www.edeyson.com.br Roteiro da Aula Roteiro da Aula Comunicação entre Processos Protocolos Modelo OSI Modelo Cliente Servidor 3 Comunicação entre

Leia mais

Sistemas Operativos. Sumário. Estruturas de sistemas de computação. ! Operação de um sistema de computação. ! Estruturas de E/S

Sistemas Operativos. Sumário. Estruturas de sistemas de computação. ! Operação de um sistema de computação. ! Estruturas de E/S Estruturas de sistemas de computação Sumário! Operação de um sistema de computação! Estruturas de E/S! Estruturas de armazenamento! Hierarquia de armazenamento 2 1 Arquitectura de um sistema de computação

Leia mais

Sistemas Operacionais Sincronização e Comunicação entre Processos

Sistemas Operacionais Sincronização e Comunicação entre Processos Universidade Estadual de Mato Grosso do Sul UEMS Curso de Licenciatura em Computação Sistemas Operacionais Sincronização e Comunicação entre Processos Prof. José Gonçalves Dias Neto profneto_ti@hotmail.com

Leia mais

Usuários. Aplicativos e programas dos usuários. Kernel gerenciamento de processos, memória, sistema de arquivos, I/O, etc.

Usuários. Aplicativos e programas dos usuários. Kernel gerenciamento de processos, memória, sistema de arquivos, I/O, etc. 1 1.0 Kernel O kernel (núcleo) representa o coração do Sistema Operacional. Atribuições do kernel: - gerenciamento dos arquivos em disco; - inicializar programas e executá-los; - alocar e gerenciar memória

Leia mais

1 REQUISITOS BÁSICOS PARA INSTALAR O SMS PC REMOTO

1 REQUISITOS BÁSICOS PARA INSTALAR O SMS PC REMOTO 1 ÍNDICE 1 REQUISITOS BÁSICOS PARA INSTALAR O SMS PC REMOTO... 3 1.1 REQUISITOS BASICOS DE SOFTWARE... 3 1.2 REQUISITOS BASICOS DE HARDWARE... 3 2 EXECUTANDO O INSTALADOR... 3 2.1 PASSO 01... 3 2.2 PASSO

Leia mais

Sistemas Operativos I

Sistemas Operativos I Gestão da Memória Luis Lino Ferreira / Maria João Viamonte Fevereiro de 2006 Gestão da Memória Gestão de memória? Porquê? Atribuição de instruções e dados à memória Endereços lógicos e físicos Overlays

Leia mais

DAS5102 Fundamentos da Estrutura da Informação

DAS5102 Fundamentos da Estrutura da Informação Pilhas A estrutura de dados Pilha emula a forma de organização de objetos intuitiva que é utilizada diariamente nos mais diversos contextos da vida humana. Containeres são empilhados e desempilhados diariamente

Leia mais

INF 1620 P1-10/04/02 Questão 1 Nome:

INF 1620 P1-10/04/02 Questão 1 Nome: INF 1620 P1-10/04/02 Questão 1 Considere uma disciplina que adota o seguinte critério de aprovação: os alunos fazem duas provas (P1 e P2) iniciais; se a média nessas duas provas for maior ou igual a 5.0,

Leia mais

Fundamentos de Arquivos. SCC203 Algoritmos e Estruturas de Dados II

Fundamentos de Arquivos. SCC203 Algoritmos e Estruturas de Dados II 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:

Leia mais

BCC202 - Estrutura de Dados I

BCC202 - Estrutura de Dados I BCC202 - Estrutura de Dados I Aula 02: Alocação Dinâmica de Memória Reinaldo Fortes Universidade Federal de Ouro Preto, UFOP Departamento de Ciência da Computação, DECOM Website: www.decom.ufop.br/reifortes

Leia mais

THREADS EM JAVA. George Gomes Cabral

THREADS EM JAVA. George Gomes Cabral THREADS EM JAVA George Gomes Cabral THREADS Fluxo seqüencial de controle dentro de um processo. Suporte a múltiplas linhas de execução permite que múltiplos processamentos ocorram em "paralelo" (em computadores

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos Software em Sistemas Distribuídos Aplicativo ou Sistema Operacional Sincronismo Interação Controles Um sistema operacional moderno provê dois serviços fundamentais para o usuário

Leia mais

LABORATÓRIO DE SISTEMAS OPERACIONAIS. PROFª. M.Sc. JULIANA HOFFMANN QUINONEZ BENACCHIO

LABORATÓRIO DE SISTEMAS OPERACIONAIS. PROFª. M.Sc. JULIANA HOFFMANN QUINONEZ BENACCHIO LABORATÓRIO DE SISTEMAS OPERACIONAIS PROFª. M.Sc. JULIANA HOFFMANN QUINONEZ BENACCHIO Gerenciamento de Memória no Linux O Linux é um sistema operacional com memória virtual paginada, isto quer dizer que

Leia mais

Programação Paralela em OpenCL

Programação Paralela em OpenCL Programação Paralela em OpenCL César L. B. Silveira cesar@v3d.com.br 19 de novembro de 2010 Introdução Open CompuDng Language (OpenCL) Padrão aberto, livre de royal&es, para programação paralela em ambientes

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Aula 02: Introdução (Cont.), Visão Geral Ezequiel R. Zorzal ezorzal@unifesp.br www.ezequielzorzal.com O QUE É UM SISTEMA OPERACIONAL? Um programa que atua como um intermediário entre

Leia mais

EA998/MC933 Guido Araujo e Sandro Rigo

EA998/MC933 Guido Araujo e Sandro Rigo EA998/MC933 Guido Araujo e Sandro Rigo 1 Hoje Ch1: Android Overview Ch2: The Stack Ch3: Quick Start Ch4: Main Building Blocks Ch5: Yamba Project Overview Ch6: Android User Interface Ch7: Preferences, Project

Leia mais

Capítulo 2 Processos e Threads. 2.1 Processos 2.2 Threads 2.3 Comunicação interprocesso 2.4 Problemas clássicos de IPC 2.

Capítulo 2 Processos e Threads. 2.1 Processos 2.2 Threads 2.3 Comunicação interprocesso 2.4 Problemas clássicos de IPC 2. Capítulo 2 Processos e Threads 2.1 Processos 2.2 Threads 2.3 Comunicação interprocesso 2.4 Problemas clássicos de IPC 2.5 Escalonamento 1 Processos O Modelo de Processo Multiprogramação de quatro programas

Leia mais

Faculdades São José Tecnologia em Sistemas de Informação. Yuri Felix Valter Neves Lucian Fialho Gustavo Brasil. Sistema Operacional Windows Vista

Faculdades São José Tecnologia em Sistemas de Informação. Yuri Felix Valter Neves Lucian Fialho Gustavo Brasil. Sistema Operacional Windows Vista Faculdades São José Tecnologia em Sistemas de Informação Yuri Felix Valter Neves Lucian Fialho Gustavo Brasil Sistema Operacional Windows Vista Rio de Janeiro 2010 Yuri Felix Valter Neves Lucian Fialho

Leia mais

Curso de C. Memória Dinâmica 17/05/2010 16:33 1

Curso de C. Memória Dinâmica 17/05/2010 16:33 1 Curso de C Memória Dinâmica 17/05/2010 16:33 1 Memória Dinâmica Curso C - IC/UNICAMP Roteiro: Memória dinâmica Vetores dinâmicos Listas ligadas 17/05/2010 16:33 @Arnaldo V. Moura, Daniel F. Ferber 2 Conceitos:

Leia mais

Índice. Capítulo 2 Estrutura de Dados sequencial com armazenamento sequencial

Índice. Capítulo 2 Estrutura de Dados sequencial com armazenamento sequencial Índice i Índice Capítulo 2 Estrutura de Dados sequencial com armazenamento sequencial 1. A Estrutura Abstrata de Dados Lista... 1 1.1. Definição... 1 1.2. Implementação de Listas utilizando armazenamento

Leia mais

Gerência de Entrada/Saída

Gerência de Entrada/Saída Gerência de Entrada/Saída Prof Clodoaldo Ap Moraes Lima 1 Princípios básicos de hardware Periférico é um dispositivo conectado a um computador de forma a possibilitar sua interação com o mundo externo

Leia mais

Recursividade. Aula 9

Recursividade. Aula 9 Recursividade Aula 9 Em matemática vários objetos são definidos apresentando-se um processo que os produz. Ex PI (circunferência/diâmetro) Outra definição de um objeto por um processo é o fatorial de um

Leia mais

Capítulo 8 Arquitetura de Computadores Paralelos

Capítulo 8 Arquitetura de Computadores Paralelos Capítulo 8 Arquitetura de Computadores Paralelos Necessidade de máquinas com alta capacidade de computação Aumento do clock => alta dissipação de calor Velocidade limitada dos circuitos => velocidade da

Leia mais

Diminui o gargalo existente entre processador e memória principal; 5 a 10 vezes mais rápidas que a memória principal; Ligada diretamente à MP;

Diminui o gargalo existente entre processador e memória principal; 5 a 10 vezes mais rápidas que a memória principal; Ligada diretamente à MP; Diminui o gargalo existente entre processador e memória principal; Diferença de velocidade 5 a 10 vezes mais rápidas que a memória principal; Ligada diretamente à MP; Tecnologia semelhante à da CPU e,

Leia mais

Capítulo 2 Processos e Threads Prof. Fernando Freitas

Capítulo 2 Processos e Threads Prof. Fernando Freitas slide 1 Capítulo 2 Processos e Threads Prof. Fernando Freitas Material adaptado de: TANENBAUM, Andrew S. Sistemas Operacionais Modernos. 3ª edição. Disponível em: http://www.prenhall.com/tanenbaum_br slide

Leia mais

Aula 06 - Funções. O que é uma Função - Comando return - Protótipos de Funções - Tipos de Funções - Escopo de Variáveis - Passagem de parâmetros

Aula 06 - Funções. O que é uma Função - Comando return - Protótipos de Funções - Tipos de Funções - Escopo de Variáveis - Passagem de parâmetros O que é uma Função - Comando return - Protótipos de Funções - Tipos de Funções - Escopo de Variáveis - Passagem de parâmetros Algoritmo e Programação Aula 06 - Funções Colegiado de Engenharia da Computação

Leia mais

Arquitetura de um Computador

Arquitetura de um Computador Arquitetura de um Computador Discos Impressora tape-drives CPU Controlador Disco Controlador impressora Controlador tape-driver controlador memoria bus memoria Os periféricos de I/O e o CPU executam concorrentemente.

Leia mais

Sistemas Operacionais. Prof. André Y. Kusumoto andrekusumoto.unip@gmail.com

Sistemas Operacionais. Prof. André Y. Kusumoto andrekusumoto.unip@gmail.com Sistemas Operacionais Prof. André Y. Kusumoto andrekusumoto.unip@gmail.com Estruturas de Sistemas de Computação O sistema operacional precisa garantir a operação correta do sistema de computação. Operação

Leia mais

LINGUAGEM C UMA INTRODUÇÃO

LINGUAGEM C UMA INTRODUÇÃO LINGUAGEM C UMA INTRODUÇÃO AULA 1 Conceitos muito básicos 1 Introdução O C nasceu na década de 70. Seu inventor, Dennis Ritchie, implementou-o pela primeira vez usando um DEC PDP-11 rodando o sistema operacional

Leia mais

Busca. Pesquisa sequencial

Busca. Pesquisa sequencial Busca Banco de dados existem para que, de tempos em tempos, um usuário possa localizar o dado de um registro, simplesmente digitando sua chave. Uma tabela ou um arquivo é um grupo de elementos, cada um

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Aula 4 Tipos de SO Prof.: Edilberto M. Silva http://www.edilms.eti.br SO - Prof. Edilberto Silva Os Sistemas Operacionais podem ser assim classificados: SO - Prof. Edilberto Silva

Leia mais

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

IFPE. Disciplina: Sistemas Operacionais. Prof. Anderson Luiz Moreira IFPE Disciplina: Sistemas Operacionais Prof. Anderson Luiz Moreira SERVIÇOS OFERECIDOS PELOS SOS 1 Introdução O SO é formado por um conjunto de rotinas (procedimentos) que oferecem serviços aos usuários

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

CAPÍTULO 2 CARACTERÍSTICAS DE E/S E PORTA PARALELA

CAPÍTULO 2 CARACTERÍSTICAS DE E/S E PORTA PARALELA 8 CAPÍTULO 2 CARACTERÍSTICAS DE E/S E PORTA PARALELA A porta paralela, também conhecida por printer port ou Centronics e a porta serial (RS-232) são interfaces bastante comuns que, apesar de estarem praticamente

Leia mais

Sistemas Operacionais

Sistemas Operacionais 7 Sistemas Operacionais 7.1 Fundamentos da ciência da computação Cengage Learning Objetivos 7.2 Compreender o papel do sistema operacional. Compreender o processo de inicialização para carregar o sistema

Leia mais

José Romildo Malaquias 2011-1

José Romildo Malaquias 2011-1 Programação de Computadores I Aula 08 Programação: Estruturas de Repetição José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2011-1 1/58 Motivação Como imprimir os três

Leia mais