Memória compartilhada

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

Download "Memória compartilhada"

Transcrição

1 Memória compartilhada Luiz Affonso Guedes 1 Ivanovitch Silva 1 [email protected] [email protected] 1 Universidade Federal do Rio Grande do Norte 15 de outubro de 2009 Memória compartilhada DCA Prática de programação concorrente 1 / 18

2 Sumário 1 Introdução 2 Criação Exemplo 01 3 Associação Exemplo 02 Exemplo 03 4 Desassociação Exemplo 04 5 Apagar Exemplo 05 6 Produtor consumidor Produtor Consumidor Análise Memória compartilhada DCA Prática de programação concorrente 2 / 18

3 Sumário 1 Introdução 2 Criação Exemplo 01 3 Associação Exemplo 02 Exemplo 03 4 Desassociação Exemplo 04 5 Apagar Exemplo 05 6 Produtor consumidor Produtor Consumidor Análise Memória compartilhada DCA Prática de programação concorrente 3 / 18

4 Memória Compartilhada Espaço/segmento de memória onde será compartilhado informações. Varios processos podem ler nesse espaço/segmento. Procedimentos básicos. Alocar e dar permissao em uma região de memória para ser compartilhada. Pegar o ponteiro, ler e escrever nessa região. Memória compartilhada DCA Prática de programação concorrente 3 / 18

5 Métodos básicos Função Descrição Retorno shmget Criar memória compartilhada Identificador shmat Associar memória compartilhada Ponteiro shmdt Desassociar memória compartilhada Flag shmclt Apagar memória compartilhada Flag Comandos auxiliares Comando ipcs ipcrm Descrição Mostrar recursos (sem,shm,msg). Destruir recursos. Eg.: ipcrm [sem shm msg] id. Memória compartilhada DCA Prática de programação concorrente 4 / 18

6 Sumário 1 Introdução 2 Criação Exemplo 01 3 Associação Exemplo 02 Exemplo 03 4 Desassociação Exemplo 04 5 Apagar Exemplo 05 6 Produtor consumidor Produtor Consumidor Análise Memória compartilhada DCA Prática de programação concorrente 5 / 18

7 Criando memória compartilhada Procedimentos básicos Função Param1 Param2 Param3 shmget key t key size t size int shmflg Parâmetros Nome key size shmflg Descrição Chave usada para criação* Tamanho do segmento em bytes Permissões. E.g: 0777 IPC CREAT Memória compartilhada DCA Prática de programação concorrente 5 / 18

8 Exemplo 01 Criação - Exemplo 01 Download 1 #include <s t d l i b. h> 2 #include <stdio. h> 3 #include <sys / ipc. h> //shmget 4 #include <sys /shm. h> //shmget 5 6 int main ( int argc, char argv [ ] ) { 7 // Identificador da memória compartilhada 8 int shmid = 0; 9 // Tamanho da memória compartilhada (bytes) 10 int shmsize = 1024; 11 // Criando a memória compartilhada 12 shmid = shmget ( ftok ( / home / ivanovitchm, 1 ), shmsize, 0666 IPC CREAT ) ; 13 // A memória foi criada corretamente 14 if ( shmid == 1) { 15 fprintf ( stderr, Processo de c r i a r a memória compartilhada falhou\n ) ; 16 e x i t ( EXIT FAILURE ) ; 17 } 18 printf ( Id da memória compartilhada é %d.\n D i g i t e \ i pcs m\ para v e r i f i c a r \n, shmid ) ; 20 return 0; 21 } Memória compartilhada DCA Prática de programação concorrente 6 / 18

9 Sumário 1 Introdução 2 Criação Exemplo 01 3 Associação Exemplo 02 Exemplo 03 4 Desassociação Exemplo 04 5 Apagar Exemplo 05 6 Produtor consumidor Produtor Consumidor Análise Memória compartilhada DCA Prática de programação concorrente 7 / 18

10 Associando a uma memória compartilhada Procedimentos básicos Função Param1 Param2 Param3 shmat int shmid const void *shmaddr int shmflg Parâmetros Nome Descrição shmid Identificador memória compartilhada criada shmaddr Endereço de aclopamento shmflg SHM RND,SHM RDONLY * * Em geral usa-se shmflg = 0. Memória compartilhada DCA Prática de programação concorrente 7 / 18

11 Exemplo 02 Associação - Exemplo 02 Download 1 // Executar: 2 //./nomeexecutavel shmidgeradonoexemplo #include <s t d l i b. h> 5 #include <stdio. h> 6 #include <s t r i n g. h> //strcpy 7 #include <sys / ipc. h> //shmget 8 #include <sys /shm. h> //shmget,shmat 9 #include <sys / types. h> //shmat int main (int argc, char argv [ ] ) { 12 // Identificador da memória compartilhada 13 int shmid = atoi ( argv [ 1 ] ) ; 14 // Ponteiro para memória compartilhada 15 char memoriacompartilhada ; 16 // Associando a memória compartilhada 17 memoriacompartilhada = (char ) shmat ( shmid, 0, 0 ) ; 18 // A memória foi associada corretamente? 19 if ( memoriacompartilhada == (char ) 1){ 20 printf ( Não f o i possível associar a memória com o id %d\n, shmid ) ; 21 e x i t ( 1 ) ; 22 } 23 // Escrever na memória compartilhada 24 strcpy ( memoriacompartilhada, Estou escrevendo na memória compartilhada ) ; 25 return 0; 26 } Memória compartilhada DCA Prática de programação concorrente 8 / 18

12 Exemplo 03 Associação - Exemplo 03 Download 1 // Executar: 2 //./nomeexecutavel shmidgeradonoexemplo #include <s t d l i b. h> 5 #include <stdio. h> 6 #include <s t r i n g. h> //strcpy 7 #include <sys / ipc. h> //shmget 8 #include <sys /shm. h> //shmget,shmat 9 #include <sys / types. h> //shmat int main (int argc, char argv [ ] ) { 12 // Identificador da memória compartilhada 13 int shmid = atoi ( argv [ 1 ] ) ; 14 // Ponteiro para memória compartilhada 15 char memoriacompartilhada ; 16 // Associando a memória compartilhada 17 memoriacompartilhada = (char ) shmat ( shmid, 0, 0 ) ; 18 // A memória foi associada corretamente? 19 if ( memoriacompartilhada == (char ) 1){ 20 printf ( Não f o i possível associar a memória com o id %d\n, shmid ) ; 21 e x i t ( 1 ) ; 22 } 23 // Lendo na memória compartilhada 24 printf ( Valor l i d o : %s \n, memoriacompartilhada ) ; 25 return 0; 26 } Memória compartilhada DCA Prática de programação concorrente 9 / 18

13 Sumário 1 Introdução 2 Criação Exemplo 01 3 Associação Exemplo 02 Exemplo 03 4 Desassociação Exemplo 04 5 Apagar Exemplo 05 6 Produtor consumidor Produtor Consumidor Análise Memória compartilhada DCA Prática de programação concorrente 10 / 18

14 Desassociação de uma memória compartilhada Procedimentos básicos Função shmdt Param1 void *shmaddr Parâmetros Nome shmaddr Descrição Endereço para desassociação Memória compartilhada DCA Prática de programação concorrente 10 / 18

15 Exemplo 04 Desassociação - Exemplo 04 Download 1 // Executar: 2 //./nomeexecutavel shmidgeradonoexemplo #include <s t d l i b. h> 5 #include <stdio. h> 6 #include <s t r i n g. h> //strcpy 7 #include <sys / ipc. h> //shmget 8 #include <sys /shm. h> //shmget,shmat 9 #include <sys / types. h> //shmat int main (int argc, char argv [ ] ) { //Idêntico ao exemplo // Realizando a desassociação 16 if ( shmdt ( memoriacompartilhada ) == 1){ 17 printf ( Ocorreu f a l h a na desassociação\n ) ; 18 e x i t ( 1 ) ; 19 } 20 printf ( Programa desassociou da memória compartilhada cujo 21 Id é : %d \n, shmid ) ; 22 printf ( Executar o comando \ ipcs m\ e v e r i f i c a r que a 23 memória não f o i deletada\n ) ; 24 return 0; 25 } Memória compartilhada DCA Prática de programação concorrente 11 / 18

16 Sumário 1 Introdução 2 Criação Exemplo 01 3 Associação Exemplo 02 Exemplo 03 4 Desassociação Exemplo 04 5 Apagar Exemplo 05 6 Produtor consumidor Produtor Consumidor Análise Memória compartilhada DCA Prática de programação concorrente 12 / 18

17 Deletar uma memória compartilhada Procedimentos básicos Função Param1 Param2 Param3 shmclt int *shmid int cmd struct shmid ds *buf Parâmetros Nome shmid cmd buf Descrição Identificador memória compartilhada IPC RMID,IPC SET,IPC STAT Estrutura de informações Memória compartilhada DCA Prática de programação concorrente 12 / 18

18 Exemplo 05 Deletar - Exemplo 05 Download 1 // Executar: 2 //./nomeexecutavel shmidgeradonoexemplo #include <s t d l i b. h> 5 #include <stdio. h> 6 #include <s t r i n g. h> //strcpy 7 #include <sys / ipc. h> //shmget 8 #include <sys /shm. h> //shmget,shmat 9 #include <sys / types. h> //shmat int main (int argc, char argv [ ] ) { //Idêntico ao exemplo // Apagar memória Compartilhada 16 if ( shmctl ( shmid, IPC RMID, NULL) == 1){ 17 printf ( Ocorreu f a l h a ao d e l e t a r a memória compartilhada\n ) ; 18 e x i t ( 1 ) ; 19 } 20 printf ( Programa apagou a memória compartilhada cujo 21 Id era : %d \n, shmid ) ; 22 printf ( Executar o comando \ ipcs m\ e v e r i f i c a r que a 23 memória f o i deletada\n ) ; 24 return 0; 25 } Memória compartilhada DCA Prática de programação concorrente 13 / 18

19 Sumário 1 Introdução 2 Criação Exemplo 01 3 Associação Exemplo 02 Exemplo 03 4 Desassociação Exemplo 04 5 Apagar Exemplo 05 6 Produtor consumidor Produtor Consumidor Análise Memória compartilhada DCA Prática de programação concorrente 14 / 18

20 Produtor - Consumidor Produtor Criação,associação e escrita na memória compartilhada A memória compartilhada é representada por um contador O acesso a memória compartilhada deve ser realizado por semáforos Consumidor Associação e leitura na memória compartilhada O acesso a memória compartilhada deve ser realizado por semáforos Um mesmo semáforo é utilizado pelo produtor e consumidor Memória compartilhada DCA Prática de programação concorrente 14 / 18

21 Produtor Código do produtor Download 1 int main ( int argc, char argv [ ] ) { 2 // Semaforo usado para sincronizar a região crítica 3 Semaforo semaforo ; 4 semaforo = new Semaforo (1234,1,IPC CREAT 0600); 5 // Identificador da memória compartilhada 6 int shmid = 0; 7 // Tamanho da memória compartilhada (bytes) 8 int shmsize = 8; 9 // Ponteiro para memória compartilhada 10 int memoriacompartilhada ; 11 // Criando a memória compartilhada 12 shmid = shmget ( ftok ( / home / ivanovitchm, 1 ), shmsize, 0666 IPC CREAT ) ; 13 // Associando-se a memória compartilhada 14 memoriacompartilhada = (int ) shmat ( shmid, 0, 0 ) ; 15 memoriacompartilhada = 0; 16 // A memória foi criada corretamente 17 if ( shmid == 1) { 18 fprintf ( stderr, Processo de c r i a r a memória compartilhada falhou\n ) ; 19 e x i t ( EXIT FAILURE ) ; 20 } 21 printf ( Produtor : i d da memória compartilhada é 22 %d.\n D i g i t e \ i pcs m\ para v e r i f i c a r \n, shmid ) ; Memória compartilhada DCA Prática de programação concorrente 15 / 18

22 Produtor Código do produtor Download 1 2 while ( true){ 3 printf ( Produtor : vou e n t r a r na região c r í t i c a \n ) ; 4 semaforo >P ( ) ; 5 memoriacompartilhada += 1; 6 semaforo >V ( ) ; 7 printf ( Produtor : vou s a i r da região c r í t i c a \n ) ; 8 sleep ( 2 ) ; 9 } 10 delete semaforo ; 11 return 0; 12 } Memória compartilhada DCA Prática de programação concorrente 16 / 18

23 Consumidor Código do consumidor Download 1 int main ( int argc, char argv [ ] ) { 2 // Semaforo usado para sincronizar a região crítica 3 Semaforo semaforo ; 4 semaforo = new Semaforo (1234,1,IPC CREAT 0600); 5 // Identificador da memória compartilhada 6 int shmid = atoi ( argv [ 1 ] ) ; 7 // Ponteiro para memória compartilhada 8 int memoriacompartilhada ; 9 // Associando a memória compartilhada 10 memoriacompartilhada = (int ) shmat ( shmid, 0, 0 ) ; 11 // A memória foi associada corretamente? 12 if ( memoriacompartilhada == (int ) 1){ 13 printf ( Não f o i possível associar a memória com o id %d\n, shmid ) ; 14 e x i t ( 1 ) ; 15 } 16 while ( true){ 17 printf ( Consumidor : vou e n t r a r na região c r í t i c a \n ) ; 18 semaforo >P ( ) ; 19 printf ( Consumidor : valor l i d o : %d \n, memoriacompartilhada ) ; 20 semaforo >V ( ) ; 21 printf ( Consumidor : saiu da região c r í t i c a \n ) ; 22 sleep ( 1 ) ; 23 } 24 delete semaforo ; 25 return 0; 26 } Memória compartilhada DCA Prática de programação concorrente 17 / 18

24 Análise Análise do problema produtor - consumidor Abordagem A (terminais diferentes) Executar o programa produtor Executar o programa consumidor Analisar as mensagens Finalizar o programa produtor Analisar as mensagens Finalizar o programa consumidor Abordagem B (terminais diferentes) Executar o programa produtor Analisar as mensagens Finalizar o programa produtor Executar o programa consumidor Analisar as mensagens Finalizar o programa consumidor Memória compartilhada DCA Prática de programação concorrente 18 / 18

Comunicação entre Processos Memória Compartilhada

Comunicação entre Processos Memória Compartilhada Comunicação entre Processos Memória Compartilhada 3/23/17 1 Métodos de comunicação entre processos Memória compartilhada Sinais Pipes Troca de mensagens Memória Compartilhada Memória compartilhada Permite

Leia mais

Memória partilhada em Unix SysV

Memória partilhada em Unix SysV Memória partilhada em Unix SysV A forma mais geral de comunicação entre processos é através de memória partilhada. segmento de memoria partilhada Processo A Processo B p q Criação de um segmento de memória

Leia mais

Comunicação entre Processos Memória Compartilhada

Comunicação entre Processos Memória Compartilhada Comunicação entre Processos Memória Compartilhada 8/30/18 1 Métodos de comunicação entre processos Memória compartilhada Sinais Pipes Troca de mensagens Memória Compartilhada Memória compartilhada Permite

Leia mais

Exercícios Avaliativos Memória Compartilhada

Exercícios Avaliativos Memória Compartilhada 1ª Avaliação Faculdades Integradas de Caratinga Sistemas Distribuídos Jacson RC Silva Exercícios Avaliativos Memória Compartilhada Uma posição de memória compartilhada é identificada por uma chave. Essa

Leia mais

Manipulação de processos

Manipulação de processos Manipulação de processos Luiz Affonso Guedes 1 Ivanovitch Silva 1 [email protected] [email protected] 1 Universidade Federal do Rio Grande do Norte 17 de setembro de 2009 Processos DCA0109 1 / 18 Sumário

Leia mais

tutorial. man fork man pthread_create man pthread_join man wait man sleep

tutorial. man fork man pthread_create man pthread_join man wait man sleep Abaixo, você encontrá dicas para lhe ajudar a fazer o 1º trabalho de SOI, que está descrito na página do curso. Lembrando que essas dicas visam apenas o auxilio nas partes mais problemáticas do trabalho

Leia mais

MAC422/5753 Sistemas Operacionais

MAC422/5753 Sistemas Operacionais MAC422/5753 Sistemas Operacionais Prof. Marcel P. Jackowski Aula #8 Sincronização: Semáforos, Barreiras e Monitores Jantar dos Filósofos Cinco filósofos que somente comem e pensam Cada um deles precisa

Leia mais

Curso de Programação C em Ambientes Linux Aula 05

Curso de Programação C em Ambientes Linux Aula 05 Curso de Programação C em Ambientes Linux Aula 05 Centro de Engenharias da Mobilidade - UFSC Professores Gian Berkenbrock e Giovani Gracioli http://www.lisha.ufsc.br/c+language+course+resources Conteúdo

Leia mais

Comunicação Inter-Processo em Unix. Pipes FIFO (Named Pipes) Pipes

Comunicação Inter-Processo em Unix. Pipes FIFO (Named Pipes) Pipes Comunicação Inter-Processo em Unix Pipes FIFO (Named Pipes) 1 Pipes 2 1! Comunicação entre pai e filho Ao chamar um fork(), processos pai e filho deixam de compartilhar memória Como fazer então para que

Leia mais

1 Exercícios com ponteiros

1 Exercícios com ponteiros Computação para Informática - Prof. Adriano Joaquim de Oliveira Cruz Oitava Aula Prática - 29 de outubro de 2010 O objetivo desta aula prática é exercitar ponteiros e funções. 1 Exercícios com ponteiros

Leia mais

Linguagem C Ficheiros Compilação Separada

Linguagem C Ficheiros Compilação Separada Linguagem C Ficheiros Compilação Separada typedef definição de tipos Apontadores para estruturas Ficheiros na bibiloteca standard do C Compilação Separada Definição de novos tipos em C É possível definir

Leia mais

O que é um apontador em C (type pointer in C)?

O que é um apontador em C (type pointer in C)? O que é um apontador em C (type pointer in C)? Um apontador é uma variável que contém um endereço de outra variável. int x = 10;//variável inteira iniciada com o valor 10 int *px = &x;//variável apontadora

Leia mais

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

Computação 2. Aula 8. Profª. Fabiany Arquivos Computação 2 Aula 8 Arquivos Profª. Fabiany [email protected] E/S com Arquivos A linguagem C não possui nenhum comando de E/S. Todas as operações de E/S ocorrem mediante chamadas a funções de biblioteca

Leia mais

Comunicação entre Processos

Comunicação entre Processos Comunicação entre Processos Pipes Redirecionamento de entrada e saída 4/19/18 1 O Pipe: Características (1) Canal de comunicação entre processos parentes, usando a politica First-In-First-Out (FIFO) Tipicamente,

Leia mais

Computação I - C Prova /10/ Profs. Adriano Cruz e Valeria Bastos

Computação I - C Prova /10/ Profs. Adriano Cruz e Valeria Bastos Computação I - C Prova 2 2016-2 14/10/2016 - Profs. Adriano Cruz e Valeria Bastos Nome: DRE: Observação: Justifique todas as respostas dadas. Some nte serão aceitas respostas com justificativas. Questão

Leia mais

Computação 2. Aula Profª. Fabiany Listas Duplamente Encadeadas

Computação 2. Aula Profª. Fabiany Listas Duplamente Encadeadas Computação 2 Aula 10.1 Listas Duplamente Encadeadas Profª. Fabiany [email protected] ListaEncadeada.h #ifndef _LISTAENCADEADA_H_ #define _LISTAENCADEADA_H_ #include #include #include

Leia mais

Métodos Computacionais. Tipos Estruturados

Métodos Computacionais. Tipos Estruturados Métodos Computacionais Tipos Estruturados Tipos Estruturados C oferece tipos primitivos que servem para representar valores simples Reais (float, double), inteiros (int), caracter (char) C oferece também

Leia mais

FUNÇÕES EM C Material adaptado da profa Silvana Maria Affonso de Lara

FUNÇÕES EM C Material adaptado da profa Silvana Maria Affonso de Lara Universidade do Estado de Minas Gerais - UEMG Curso de Engenharia da Computação FUNÇÕES EM C 1 Material adaptado da profa Silvana Maria Affonso de Lara ROTEIRO DA AULA Definição de Função Argumentos, retornos

Leia mais

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

CAP. IX - MANIPULAÇÃO DE ARQUIVOS Generalidades sobre Arquivos. 9.2 Abertura e Fechamento de Arquivos. Operações com arquivos: CAP. IX - MANIPULAÇÃO DE ARQUIVOS 9.1 Generalidades sobre arquivos 9.2 Abertura e fechamento de arquivos 9.3 Arquivos textos e arquivos binários 9.4 Leitura e escrita em arquivos binários 9.5 Procura direta

Leia mais

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

Introdução a Programação. Ponteiros e Vetores, Alocação Dinâmica Introdução a Programação Ponteiros e Vetores, Alocação Dinâmica Tópicos da Aula Hoje aprenderemos que existe uma forte relação entre ponteiros e vetores Associação entre ponteiros e vetores Ponteiros constantes

Leia mais

Aula 17: Ponteiros e Alocação Dinâmica em C

Aula 17: Ponteiros e Alocação Dinâmica em C Aula 17: Ponteiros e Alocação Dinâmica em C Fernanda Passos Universidade Federal Fluminense Programação de Computadores IV Fernanda Passos (UFF) Ponteiros e Alocação Dinâmica Programação de Computadores

Leia mais

Aula 16: Manipulação de Arquivos em C

Aula 16: Manipulação de Arquivos em C Aula 16: Manipulação de Arquivos em C Fernanda Passos Universidade Federal Fluminense Programação de Computadores IV Fernanda Passos (UFF) Manipulação de Arquivos Programação de Computadores IV 1 / 33

Leia mais

ALGORITMOS AULA 01. Baseado nas aulas do Prof. Jorgiano Vidal

ALGORITMOS AULA 01. Baseado nas aulas do Prof. Jorgiano Vidal ALGORITMOS AULA 01 Baseado nas aulas do Prof. Jorgiano Vidal LINGUAGEM C Uma das grandes vantagens do C é que ele possui tanto caracterìsticas de "alto nìvel" quanto de "baixo nìvel". Linguagem de propósito

Leia mais

PROGRAMAÇÃO DE MICROPROCESSADORES 2007 / 2008

PROGRAMAÇÃO DE MICROPROCESSADORES 2007 / 2008 Departamento de Engenharia Electrotécnica PROGRAMAÇÃO DE MICROPROCESSADORES 2007 / 2008 Mestrado Integrado em Engenharia Electrotécnica e Computadores 1º ano 1º semestre Ficheiros e estruturas http://tele1.dee.fct.unl.pt

Leia mais

Criação de Processos Fork( ) Exec( )

Criação de Processos Fork( ) Exec( ) Criação de Processos Fork( ) Exec( ) 8/23/18 1 Chamadas de Sistema: Process Management 2 Chamada fork( ) / exec( ) 3 Esboço de uma shell while (TRUE) { /* repeat forever */ type_prompt( ); /* display prompt

Leia mais

Caracteres e Cadeias de Caracteres

Caracteres e Cadeias de Caracteres Caracteres e Cadeias de Caracteres INF1005 Programação I Prof. Hélio Lopes [email protected] sala 408 RDC 1 caracteres e cadeias de caracteres tópicos caracteres cadeias de caracteres (strings) vetor

Leia mais

1 Exercícios com ponteiros

1 Exercícios com ponteiros Computação para Informática Funções e Ponteiros1 EXERCÍCIOS COM PONTEIROS Computação para Informática - Prof. Adriano Joaquim de Oliveira Cruz Aula Prática - Funções e ponteiros O objetivo desta aula prática

Leia mais

Comunicação entre processos 2ª parte (IPC InterProcess Communication)

Comunicação entre processos 2ª parte (IPC InterProcess Communication) SISTEMAS OERATIVOS 12 Comunicação entre processos 2ª parte (IC Interrocess Communication) Notas: 1. Deve ser criada a biblioteca libnet.a (referente ao código do livro [2] da bibliografia) antes de testar

Leia mais

Pthreads API. Criação de Threads: usando Pthreads

Pthreads API. Criação de Threads: usando Pthreads Pthreads API The POSIX 1003.1-2001 standard defines an application programming interface (API) for writing multithreaded applications. This interface is known more commonly as pthreads. 6.1 Criação de

Leia mais

Capítulo 06: Arquivos

Capítulo 06: Arquivos Capítulo 06: Arquivos INF1004 e INF1005 Programação 1 Pontifícia Universidade Católica Departamento de Informática Funções de entrada e saída em arquivos Motivação: quando um programa precisa processar

Leia mais

Analise o código abaixo:

Analise o código abaixo: Recursão - introdução Analise o código abaixo: 1 # include 2 # include 3 int Fatorial ( int x) 4 int k, s =1; for (k =0;k

Leia mais

Ponteiros e Tabelas. K&R: Capítulo 5

Ponteiros e Tabelas. K&R: Capítulo 5 Ponteiros e Tabelas K&R: Capítulo 5 Ponteiros e Tabelas Ponteiros e endereços Ponteiros e argumentos de funções Ponteiros e tabelas Alocação dinâmica de memória Aritmética de ponteiros Tabelas de ponteiros

Leia mais

Aula 27: Estruturas heterogêneas e alocação dinâmica

Aula 27: Estruturas heterogêneas e alocação dinâmica Aula 27: Estruturas heterogêneas e alocação dinâmica Introdução a Programação Túlio Toffolo & Puca Huachi http://www.toffolo.com.br BCC201 2018/2 Departamento de Computação UFOP Aulas anteriores Memória

Leia mais

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

Disciplina de Introdução à Ciência da Computação ICC 1 - Teoria USP - ICMC - SSC SSC 0501-1o. Semestre 2015 Disciplina de Introdução à Ciência da Computação ICC 1 - Teoria Prof. Fernando Santos Osório Email: fosorio [at] icmc. usp. br, gmail. com Página Pessoal: http://www.icmc.usp.br/~fosorio/

Leia mais

Sumário. Ficheiros. Ficheiros

Sumário. Ficheiros. Ficheiros Sumário Ficheiros Motivação Operações Ficheiros de texto e binários Manipulação de ficheiros de texto Abertura Encerramento Descritores de ficheiros: stdin, stdout, stderr Escrita Leitura Outras funções

Leia mais

Alocação Dinâmica em C

Alocação Dinâmica em C Universidade de São Paulo São Carlos Instituto de Ciências Matemáticas e de Computação Alocação Dinâmica em C Profa Rosana Braga Adaptado de material preparado pela profa Silvana Maria Affonso de Lara

Leia mais

Computação L2. Linguagem C++ Observação: Material Baseado na Disciplina Computação Eletrônica.

Computação L2. Linguagem C++ Observação: Material Baseado na Disciplina Computação Eletrônica. Computação L2 Linguagem C++ [email protected] Observação: Material Baseado na Disciplina Computação Eletrônica. Alfabeto São os símbolos ( caracteres ) permitidos na linguagem: Letras (maiúsculas e minúsculas);

Leia mais

ESTRUTURAS COMPOSTAS

ESTRUTURAS COMPOSTAS ESTRUTURAS COMPOSTAS Variáveis Compostas Unidimensionais VETOR Clique para adicionar texto Profa. Dra. Elisa Yumi Nakagawa 1. Semestre de 2017 Slides inicialmente preparados pela Profa. Rosely Sanches

Leia mais

ALGORITMOS E ESRUTRA DE DADOS I. Ponteiros Passagem por Valor e Referência Alocação de Memória

ALGORITMOS E ESRUTRA DE DADOS I. Ponteiros Passagem por Valor e Referência Alocação de Memória ALGORITMOS E ESRUTRA DE DADOS I Ponteiros Passagem por Valor e Referência Alocação de Memória 2 Agenda Ponteiros Conceitos gerais O que é Ponteiro? Declaração de Ponteiros Operadores para Ponteiros Exemplos

Leia mais

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

PIP/CA - Programa Interdisciplinar de Pós-Graduação em Computação Aplicada da UNISINOS ALGORITMOS & ESTRUTURAS DE DADOS PIP/CA - Programa Interdisciplinar de Pós-Graduação em Computação Aplicada da UNISINOS Disciplina de Nivelamento - 2000/1: ALGORITMOS & ESTRUTURAS DE DADOS Professor Responsável: Prof. Fernando Santos

Leia mais

Alocação Estática e Dinâmica. Prof. M.Sc. Mariella Berger

Alocação Estática e Dinâmica. Prof. M.Sc. Mariella Berger Alocação Estática e Dinâmica Prof. M.Sc. Mariella Berger http://www.inf.ufes.br/~mberger [email protected] [email protected] Alocação Estática Estratégia de alocação de memória na qual toda a

Leia mais

Sub-rotinas em C. Disciplina de Programação de Computadores I Universidade Federal de Ouro Preto

Sub-rotinas em C. Disciplina de Programação de Computadores I Universidade Federal de Ouro Preto Sub-rotinas em C Disciplina de Programação de Computadores I Universidade Federal de Ouro Preto Agenda Sub-rotinas: Função e Procedimentos A função main Variáveis globais e locais Escopo de variáveis Passagem

Leia mais

ESTRUTURAS COMPOSTAS VETOR

ESTRUTURAS COMPOSTAS VETOR ESTRUTURAS COMPOSTAS Variáveis Compostas Unidimensionais VETOR slides desenvolvidos pela Profa. Rosely Sanches 2 ESTRUTURAS COMPOSTAS Pode-se organizar tipos simples em tipos mais complexos formando as

Leia mais

QUEBRA DE SENHAS MD5 UTILIZANDO MDCRACK E MPI

QUEBRA DE SENHAS MD5 UTILIZANDO MDCRACK E MPI UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TÉCNOLOGIA CURSO DE CIÊNCIA DA COMPUTAÇÃO QUEBRA DE SENHAS MD5 UTILIZANDO MDCRACK E MPI Cicero Augusto de Lara Pahins, Cristiano Reis dos Santos. Professora:

Leia mais