Programação de Sistemas

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

Download "Programação de Sistemas"

Transcrição

1 Programação de Sistemas Pai Natal Programação de Sistemas Pai Natal : 1/16 Problema (1) Considere o Pai Natal ( Santa Claus ) se encontra a dormir na sua loja em Rovaniemi-Lapónia finlandesa, sendo acordado apenas se 1. uma rena ( reindeer ), em número indicado na linha de comandos, regressa das suas férias nas Caraíbas, ou 2. um duende ( elf em número definido por uma constante) detecta problemas no fabrico de brinquedos. As renas partem para férias indicando no terminal o seu número de lançamento. Em média, as férias duram entre 16 e 24 segundos. A cada duende ocorre um erro no fabrico de brinquedos em intervalos entre 4 a 6 segundos. Programação de Sistemas Pai Natal : 2/16

2 Problema (2) O Pai Natal resolve todos os problemas de fabrico em 1 segundo e depois volta a dormir. Sempre que o Pai Natal é acordado por uma rena que não seja a última, deixa alimento e volta a dormir. Chegada a última rena, o Pai Natal parte de trenó para distribuir as prendas, durando 10 segundos a volta ao mundo. As renas só devem terminar depois de distribuídos os brinquedos. Os duendes terminam depois do Pai Natal iniciar a distribuição de brinquedos. Codifique em C para Linux um simulador que inclua funções para os fios de execução Elf, Reindeer e SantaClaus. Nota: para obter um número aleatório, use a função int rand(). Programação de Sistemas Pai Natal : 3/16 Arquitectura (1) Tarefas Tal como indicado no enunciado, as tarefas são implementadas por fios de execução ( threads ) lançados pelo programa principal. Pai Natal (1), Duendes (em número definido por uma constante), Renas (em número indicado na linha de comandos). Apenas as renas possuem um parâmetro o número de lançamento, entre 0 e reinnumb-1. typedef struct{ int pos; arguments; Programação de Sistemas Pai Natal : 4/16

3 Arquitectura (2) Variáveis Globais, de interesse a vários fios de execução: unsigned int waiting; número de renas à espera na porta variam entre 0 e total de renas determinam quando o Pai Natal parte para distribuir os presentes. unsigned int leaving; 0 ou 1, identifica se o Pai Natal se encontra dentro (0) ou a distribuir presentes (1). De sincronização: pthread_mutex_t chave; mutex de protecção de acesso à variável waiting. sem_t barn; semáforo, inicializado a 0, Programação de Sistemas Pai Natal : 5/16 Arquitectura (3) Os identificadores dos fios de execução, necessários ao seu lançamento, dependem do número de threads pthread_t santaid; só há um Pai Natal. pthread_t elfid[elf_n]; o número de duendes é determinada por uma constante. pthread_t *reinid; o número de duendes, desconhecido ao compilador, é indicado na linha de comandos (logo, os identificadores têm de ser criados dinamicamente). Programação de Sistemas Pai Natal : 6/16

4 Arquitectura (4) Comunicação Os fios de execução comunicam entre si através de sinais. Chegada de rena: SIGUSR1 dirigido ao Pai Natal. Duende com problema: SIGUSR2 dirigido ao Pai Natal. Ambos os sinais são tratados ( handled ) pela função void wakeup( int signumb ) Pai Natal termina distribuição dos brinquedos: SIGUSR2 dirigido a cada uma das renas. Sinal tratado ( handled ) pela função void bye( int signumb ) Programação de Sistemas Pai Natal : 7/16 Arquitectura (5) Terminação Os fios de execução terminam na seguinte forma: Duendes, executa pthread_exit() quando verifica que o Pai Natal partiu para distribuir os presentes. Nenhum fio de execução fica à espera, logo deve ser executado o pthread_detach(). Renas, depois de chegar, fazem pause() à espera do sinal enviado pelo Pai Natal e depois executam o pthread_exit(). O Pai Natal fica à espera que as renas terminem. O Pai Natal termina com pthread_exit() e o programa principal fica à espera que o Pai Natal termine. Programação de Sistemas Pai Natal : 8/16

5 Programa principal (1) #include <stdlib.h> /* malloc */ #include <stdio.h> /* printf */ #include <signal.h> /* sinais */ #include <semaphore.h> /* semáforos */ #include <pthread.h> /* threads e mutexes */ #define ELF_N 2 /* numero de duendes */ typedef struct{ unsigned int pos; arguments; pthread_t santaid; /* identificador do Pai Natal */ pthread_t elfid[elf_n]; /* identificador dos duendes */ pthread_t *reinid; /* identificador das renas */ pthread_mutex_t chave; /* protege acesso a waiting */ sem_t barn; /* espera das renas */ unsigned int waiting, leaving; int reinnumb; /* numero de renas */ Programação de Sistemas Pai Natal : 9/16 Programa principal (2) main(int argc, char *argv[]) { int i; if( argc!=2 ) { printf( "%s elfnumber\n",argv[0] ); exit( 3 ); reinnumb = atoi( argv[1] ); reinid = (pthread_t *)malloc( reinnumb*sizeof(pthread_t) ); srand(time(null)); waiting = 0; /* numero de renas à espera */ leaving = 0; /* estado do Pai Natal */ /* inicializa tranca e semáforo */ pthread_mutex_init( &chave,null ); sem_init( &barn,0,0 ); Programação de Sistemas Pai Natal : 10/16

6 Programa principal (3) /* Lança Pai Natal */ printf( "Lancado Pai Natal\n" ); if( pthread_create( &santaid,null,santaclaus,null ) ) { printf( "Erro no lancamento do Pai Natal\n" ); exit( 2 ); /* Lança duendes */ for( i=0;i<elf_n;i++ ) { printf( "Duende %i comeca a produzir brinquedos\n",i ); if( pthread_create( &(elfid[i]),null,elf,null ) ) { printf( "Erro no lancamento do duende %d\n",i ); exit( 2 ); pthread_detach( elfid[i] ); Programação de Sistemas Pai Natal : 11/16 Programa principal (4) /* Lança renas */ for( i=0;i<reinnumb;i++ ) { int *pos = (int *)malloc( sizeof(int) ); *pos = i; printf( "Rena %i parte de ferias para as Caraibas\n",i ); if( pthread_create( &(reinid[i]),null,reindeer,(void *)pos ) ) { printf( "Erro no lancamento da rena %d\n",i ); exit( 2 ); /* Elimina tranca e semáforo */ if(!pthread_mutex_destroy( &chave ) ) { printf( "Erro na eliminacao da tranca chave\n" ); exit(4); if ( sem_destroy( &barn )==-1 ) { printf( "Erro na eliminacao do semaforo barn\n" ); exit(4); pthread_join( santaid,null ); Programação de Sistemas Pai Natal : 12/16

7 Tratamento interrupções void bye( int signumb ) { return; void wakeup( int signumb ) { int i,numb; if( signumb==sigusr1 ) { /* Chamada veio do duende */ printf( "\n" ); sleep( 1 ); if( signumb==sigusr2 ) { /* Chamada veio de uma rena */ pthread_mutex_lock( &chave ); numb = waiting; pthread_mutex_unlock( &chave ); if( numb<reinnumb ) { printf("\n");fflush(null); else { /* Vamos distribuir os presentes! */ leaving = 1; printf( "Ho! Ho! Ho!\n" ); sleep( 10 ); for( i=0;i<reinnumb;i++ ) { pthread_kill( reinid[i],sigusr2 ); pthread_join( reinid[i],null ); printf("uff, este ano tive imenso trabalho a distribuir os brinquedos!\n"); pthread_exit( NULL ); Programação de Sistemas Pai Natal : 13/16 Threads (1) void *santaclaus( void *arg ) { signal( SIGUSR1,wakeUp ); signal( SIGUSR2,wakeUp ); for( ;; ) pause(); void *elf( void *arg ) { for( ;; ) { sleep( 4+rand()%3 ); if ( leaving ) pthread_exit( NULL ); else pthread_kill( santaid,sigusr1 ); Programação de Sistemas Pai Natal : 14/16

8 Threads (2) void *reindeer( void *arg ) { int i; arguments *argument = (arguments*)arg; sleep(16+ rand()%9); /* tempo de férias nas Caraibas;-) */ printf( "Rena %d chega de ferias e ",*(int *)arg ); pthread_mutex_lock( &chave ); pthread_kill( santaid,sigusr2 ); if ( waiting==(reinnumb-1) ) { printf( "chama as outras renas\n" ); fflush( NULL ); for( i=0;i<reinnumb;i++ ) sem_post( &barn ); waiting++; pthread_mutex_unlock( &chave ); else { printf( "espera fora da porta\n" ); fflush( NULL ); waiting++; pthread_mutex_unlock( &chave ); sem_wait( &barn ); signal( SIGUSR2,bye ); pause(); pthread_exit( NULL ); Programação de Sistemas Pai Natal : 15/16 Exemplo de execução [rgc@asterix PaiNatal]$ Xmas 7 Lancado Pai Natal Duende 0 comeca a produzir brinquedos Duende 1 comeca a produzir brinquedos Rena 0 parte de ferias para as Caraibas Rena 1 parte de ferias para as Caraibas Rena 2 parte de ferias para as Caraibas Rena 3 parte de ferias para as Caraibas Rena 4 parte de ferias para as Caraibas Rena 5 parte de ferias para as Caraibas Rena 6 parte de ferias para as Caraibas Rena 2 chega de ferias e espera fora da porta Rena 5 chega de ferias e espera fora da porta Rena 1 chega de ferias e espera fora da porta Rena 3 chega de ferias e espera fora da porta Rena 0 chega de ferias e espera fora da porta Rena 4 chega de ferias e espera fora da porta Rena 6 chega de ferias e chama as outras renas Ho! Ho! Ho! Uff, este ano tive imenso trabalho a distribuir os brinquedos! [rgc@asterix PaiNatal]$ Programação de Sistemas Pai Natal : 16/16

Programação de Sistemas Cafetaria

Programação de Sistemas Cafetaria Programação de Sistemas Cafetaria Programação de Sistemas Cafetaria : 1/14 Problema Uma cafetaria vende duas classes de café, cada um servido por uma fila dedicada: local e levar ( take away ). Ao entrar

Leia mais

Programação de Sistemas Carris

Programação de Sistemas Carris Programação de Sistemas Carris Programação de Sistemas Carris : 1/18 Problema (1) A fim de incentivar os alfacinhas a deslocar na cidade de Volvo, a Carris-Companhia de Carris de Ferro de Lisboa decidiu

Leia mais

Programação de Sistemas

Programação de Sistemas Programação de Sistemas Exercício : Museus Programação de Sistemas Museu: 1/11 Problema (1) A Fundação Calouste Gulbenkian vai organizar uma exposição temporária com quadros de Vincent van Gogh e Gustav

Leia mais

Programação de Sistemas Array Sistólico

Programação de Sistemas Array Sistólico Programação de Sistemas Array Sistólico Programação de Sistemas Array sistólico : 1/7 Problema (1) [Definição] Um array sistólico 1 é um sistema composto por células dispostas matricialmente. Cada célula

Leia mais

Programando com Threads em C

Programando com Threads em C Programando com Threads em C AEDS III Bruno Diniz de Paula (diniz@dcc.ufmg.br) e-commerce System Performance Evaluation and Experimental Development Lab O que são Threads? Linhas de execução concorrentes

Leia mais

Introdução a Programação Concorrente. Aula 02. Prof. André Luis Meneses Silva

Introdução a Programação Concorrente. Aula 02. Prof. André Luis Meneses Silva Introdução a Programação Concorrente Aula 02 Prof. André Luis Meneses Silva Agenda Pthreads Trabalhando com Threads Exclusão Mútua Semáforos Pthreads Históricamente, fabricantes de hardware implementam

Leia mais

OO Engenharia Eletrônica

OO Engenharia Eletrônica OO Engenharia Eletrônica - Programação em C/C++ Slides 18: Introdução à Multithreading. Introdução à Multithreading: execução concorrente de tarefas. Exemplos usando a biblioteca pthread que é de acordo

Leia mais

Sistemas Operacionais II

Sistemas Operacionais II Mecanismos de sincronização de processos Instituto de Informátic ca - UFRGS Sistemas Operacionais II Da teoria à prática... (Processos, threads, mutex, semáforos, variáveis de condição e monitores) Aula

Leia mais

OO Engenharia Eletrônica

OO Engenharia Eletrônica OO Engenharia Eletrônica - Programação em C/C++ Slides 18: Introdução à Multithreading. Introdução à Multithreading: execução concorrente de tarefas. Exemplos usando a biblioteca pthread que é de acordo

Leia mais

Na Aula Anterior... O Conceito de Threads

Na Aula Anterior... O Conceito de Threads GSI018 Sistemas Operacionais 12/09/2016 Na Aula Anterior... Nesta Aula Universidade Federal de Uberlândia Faculdade de Computação Prof. Dr. rer. nat. Daniel D. Abdala Comunicação entre Processos Pipes;

Leia mais

Programando com Threads em C

Programando com Threads em C Programando com Threads em C O que são Threads? Linhas de execução concorrentes Memória (pilha) independente Podem compartilhar áreas de memória Início Processo 1 Threads Fim Problemas Sincronização entre

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 fabianyl@utfpr.edu.br ListaEncadeada.h #ifndef _LISTAENCADEADA_H_ #define _LISTAENCADEADA_H_ #include #include #include

Leia mais

Eventos. Rotinas Assíncronas

Eventos. Rotinas Assíncronas Eventos Rotinas Assíncronas para Tratamento de acontecimentos assíncronos e excepções Rotinas Assíncronas Certos acontecimentos devem ser tratados pelas aplicações, embora não seja possível prever a sua

Leia mais

Programação de Sistemas

Programação de Sistemas Programação de Sistemas Exclusão Mútua Programação de Sistemas Exclusão Mútua : 1/71 Introdução Existem quatro classes de métodos para assegurar a exclusão mútua de tarefas: Algoritmos de espera activa

Leia mais

Programação de Sistemas

Programação de Sistemas Programação de Sistemas Exclusão Mútua Programação de Sistemas Exclusão Mútua : 1/68 Introdução Existem quatro classes de métodos para assegurar a exclusão mútua de tarefas: Algoritmos de espera activa

Leia mais

Algoritmos e Estruturas de dados

Algoritmos e Estruturas de dados Algoritmos e Estruturas de dados Listas Encadeadas Prof. Dr. Fábio Rodrigues de la Rocha (Listas Encadeadas) 1 / 21 Definição: Anteriormente estudamos listas encadeadas que foram implementadas como vetores

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

Threads em Ambiente LINUX. Estudo e testes com a biblioteca pthreads

Threads em Ambiente LINUX. Estudo e testes com a biblioteca pthreads Universidade Federal do ABC Disciplina: BC 1518 Sistemas Operacionais (SO) Prática: Threads Atividade 3 Threads em Ambiente LINUX Objetivo Estudo e testes com a biblioteca pthreads Threads Como vimos em

Leia mais

Pthreads. O que são threads? Mario João Junior. Uma thread é um fluxo de execução de instruções que pode ser escalonado pelo sistema operacional.

Pthreads. O que são threads? Mario João Junior. Uma thread é um fluxo de execução de instruções que pode ser escalonado pelo sistema operacional. Pthreads Mario João Junior O que são threads? Uma thread é um fluxo de execução de instruções que pode ser escalonado pelo sistema operacional. O que são threads? No UNIX, uma thread: Existe no interior

Leia mais

Sistemas Operacionais II

Sistemas Operacionais II Introdução Instituto de Informátic ca - UFRGS Sistemas Operacionais II Da teoria à prática... (Processos, threads, mutex, semáforos, variáveis de condição e monitores) Aula 07 Fluxos de controle para programação

Leia mais

Ferramentas para Programação em Processadores Multi-Core

Ferramentas para Programação em Processadores Multi-Core Ferramentas para Programação em Processadores Multi-Core Prof. Dr. Departamento de Informática Universidade Federal de Pelotas Sumário Introdução Arquiteturas multi-core Programação multithread Prática

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Programação Concorrente Introdução Edson Moreno edson.moreno@pucrs.br http://www.inf.pucrs.br/~emoreno Introdução Programa Seqüencial Representado por apenas um processo Existe apenas

Leia mais

Linguagem de Programação I

Linguagem de Programação I Linguagem de Programação I Carlos Eduardo Batista Centro de Informática - UFPB bidu@ci.ufpb.br Exemplo: Explorar Templates e Exceções Incrementar com o uso de STL 2 Crie uma função verificarpalindromo()

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Programação Concorrente Sincronização entre processos Edson Moreno edsonmoreno@pucrsbr http://wwwinfpucrsbr/~emoreno Sumário Conceituação Princípios de concorrência Região crítica

Leia mais

Arquitetura de Computadores Sistemas Operacionais II

Arquitetura de Computadores Sistemas Operacionais II Definição de Processo Arquitetura de Computadores Sistemas Operacionais II Processo é o mesmo de Programa? Programa Estrutura estática Instruções + Dados Processo Entidade Ativa Instância de um Programa

Leia mais

Sistemas de Computação Semáforos

Sistemas de Computação Semáforos Sistemas de Computação Semáforos 4/26/18 1 Semáforos Um semáforo simples é uma variável que pode assumir os valores 0 e 1 (semáforo binário). Esta é a forma mais comum Semáforos que podem assumir diversos

Leia mais

Threads. threads em Linux Taisy Weber

Threads. threads em Linux Taisy Weber Threads threads em Linux Taisy Weber Ambiente UNIX Processos: revisão de conceitos básicos processos no SO UNIX programação criação (exec, fork, etc), sincronização (wait), eliminação, processos zombie

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

Básico: estrutura de programa, sintaxe Interface com linha de comando

Básico: estrutura de programa, sintaxe Interface com linha de comando Programação em C Sintaxe Básico: estrutura de programa, sintaxe Interface com linha de comando Preprocessamento e compilação Makefiles Ponteiros e estruturas Bibliotecas, ficheiros include e funções Referências

Leia mais

as alterações feitas por um thread num recurso partilhado (ex: fechar um ficheiro) serão "vistaa" pelos outros threads.

as alterações feitas por um thread num recurso partilhado (ex: fechar um ficheiro) serão vistaa pelos outros threads. Página 1 de 13 Um thread é uma sequência de instruções que vão ser executadas num programa. No ambiente UNIX, os threads encontram-se dentro de um processo, utilizando os recursos desse processo. Um processo

Leia mais

Introdução à Programação Aula 07. Prof. Max Santana Rolemberg Farias Colegiado de Engenharia de Computação

Introdução à Programação Aula 07. Prof. Max Santana Rolemberg Farias Colegiado de Engenharia de Computação Introdução à Programação Aula 07 Prof. Max Santana Rolemberg Farias max.santana@univasf.edu.br Colegiado de Engenharia de Computação ARGUMENTOS POR LINHA DE COMANDO 2 Argumento por linha de comando Na

Leia mais

Listas ligadas/listas encadeadas

Listas ligadas/listas encadeadas 1 Listas ligadas/listas encadeadas Leitura recomendada: http://www.ime.usp.br/~pf/algoritmos/aulas/lista.html 2 Processamento elementar de listas Definição mais restritiva (tipo de lista possivelmente

Leia mais

Trabalhando com Processos e Threads em Ambiente LINUX

Trabalhando com Processos e Threads em Ambiente LINUX Objetivo Universidade Federal do ABC Disciplina: BC 1518 Sistemas Operacionais (SO) Prática: Processo/Threads Atividade 3 Trabalhando com Processos e Threads em Ambiente LINUX 1.Trabalhar com comandos

Leia mais

Programação Sistemas

Programação Sistemas Programação Sistemas Fios de Execução Programação de Sistemas Threads : 1/28 Porquê o paralelismo? (1) 1. Crescentes necessidades de computação têm sido satisfeitas com aumento do número de transístores

Leia mais

Memória Compartilhada

Memória Compartilhada Memória Compartilhada Programação com memória compartilhada Nos sistemas multiprocessadores com memória compartilhada, qualquer localização da memória pode ser acessada por qualquer processador Existe

Leia mais

Programação de Sistemas

Programação de Sistemas Programação de Sistemas Métodos de Exclusão Mútua Programação de Sistemas Exclusão Mútua : 1/73 Introdução Existem três classes de métodos para assegurar a exclusão mútua de unidades de execução Algoritmos

Leia mais

SISTEMAS OPERACIONAIS. 2ª. Lista de Exercícios

SISTEMAS OPERACIONAIS. 2ª. Lista de Exercícios SISTEMAS OPERACIONAIS INF09344 - Sistemas Operacionais / INF02780 - Sistemas Operacionais / INF02828 - Sistemas de Programação II Prof a. Roberta Lima Gomes (soufes@gmail.com) 2ª. Lista de Exercícios Data

Leia mais

Deadlock, Starvation, Posix Semaphores

Deadlock, Starvation, Posix Semaphores SISTEMAS OERATIVOS 13 Deadlock, Starvation, osix Semaphores Notas: Linux man pages. É importante consultar as paginas sobre os comandos ( If you don't run Linux, be sure to check your local man pages or

Leia mais

Threads ou Processos Leves

Threads ou Processos Leves Threads ou Processos Leves Sistemas Operacionais Tradicionais Sistemas com Multithreading Legenda: processo thread Contador de programa Threads Processos que compartilham espaço de endereçamento: P1 threads

Leia mais

Sincronização, Deadlock, Starvation Mutex Locks e Semaphores (Posix)

Sincronização, Deadlock, Starvation Mutex Locks e Semaphores (Posix) SISTEMAS OERATIVOS 13 Sincronização, Deadlock, Starvation Mutex Locks e Semaphores (osix) Notas: Linux man pages. É importante consultar as paginas sobre os comandos ( If you don't run Linux, be sure to

Leia mais

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

INSTITUTO FEDERAL DE! EDUCAÇÃO, CIÊNCIA E TECNOLOGIA RIO GRANDE DO NORTE INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA RIO GRANDE DO NORTE Algoritmos ANSI C - Introdução Copyright 2014 IFRN Agenda Conceitos básicos ANSI C Hello World Funções em C Exercícios 2 /26 A linguagem

Leia mais

Fundamentos de Programação 1

Fundamentos de Programação 1 Fundamentos de Programação 1 Linguagem C Arquivos Seqüências ou de Texto. Slides 18 Prof. SIMÃO Jean Marcelo SIMÃO 1 Arquivo de Escrita 1 fopen ( nome.txt", "w" ); fputc ( caracter, arquivo); 2 #include

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

Leandro Soares de Sousa (DSc.) Página: Parte II

Leandro Soares de Sousa (DSc.)   Página:   Parte II Tópicos Especiais em Sistemas Computacionais Leandro Soares de Sousa (DSc.) e-mail: leandro.uff.puro@gmail.com Página: http://www.ic.uff.br/~lsousa Parte II Mais e mais ferramentas! 2 Processos e Threads:

Leia mais

Exclusão Mútua (mutex)

Exclusão Mútua (mutex) 2004-2017 Volnys Bernal 1 Exclusão Mútua (mutex) Volnys Borges Bernal volnys@lsi.usp.br Departamento de Sistemas Eletrônicos Escola Politécnica da USP 2004-2017 Volnys Bernal 2 Tópicos Exclusão Mútua (Mutex)

Leia mais

Leandro Soares de Sousa (DSc.) Página: Aula 04 - desenvolvimento multithread

Leandro Soares de Sousa (DSc.)   Página:   Aula 04 - desenvolvimento multithread Tópicos Especiais Leandro Soares de Sousa (DSc.) e-mail: lsousa@id.uff.br Página: http://www.ic.uff.br/~lsousa Aula 04 - desenvolvimento multithread Mais e mais ferramentas! 2 Processos e Threads: desenvolvimento

Leia mais

SISTEMAS OPERACIONAIS. 2ª. Lista de Exercícios

SISTEMAS OPERACIONAIS. 2ª. Lista de Exercícios SISTEMAS OPERACIONAIS Prof a. Roberta Lima Gomes (soufes@gmail.com) 2ª. Lista de Exercícios Data de Entrega: não há. O objetivo da lista é ajudar no estudo individual dos alunos. SINAIS 1. Qual a diferença

Leia mais

Programação 1. Atribuição, operadores aritméticos, entrada de dados. Técnico em Eletrônica Semestre 5 02

Programação 1. Atribuição, operadores aritméticos, entrada de dados. Técnico em Eletrônica Semestre 5 02 Programação 1 Atribuição, operadores aritméticos, entrada de dados Técnico em Eletrônica Semestre 5 02 Armazenando na memória tipo de variável #include #include main() { int ano; Declaração

Leia mais

Tratamento de Sinais

Tratamento de Sinais Tratamento de Sinais Luiz Affonso Guedes 1 Ivanovitch Silva 1 affonso@dca.ufrn.br ivan@dca.ufrn.br 1 Universidade Federal do Rio Grande do Norte 25 de setembro de 2009 Sinais DCA0109 - Prática de programação

Leia mais

Execução Concorrente

Execução Concorrente Sincronização Parte I Primitivas de Sincronização Sistemas Operativos 2011 / 2012 Execução Concorrente struct { int saldo; /* outras variáveis,ex. nome do titular, etc. */ conta_t; int levantar_dinheiro

Leia mais

Sincronização. Problema da Exclusão Mútua

Sincronização. Problema da Exclusão Mútua Sincronização Parte I Primitivas de Sincronização Problema da Exclusão Mútua struct int saldo; /* outras variáveis,ex. nome do titular, etc. */ conta_t; int levantar_dinheiro (conta_t* conta, int valor)

Leia mais

Semáforo Volnys Borges Bernal Departamento de Sistemas Eletrônicos Escola Politécnica da USP

Semáforo Volnys Borges Bernal Departamento de Sistemas Eletrônicos Escola Politécnica da USP 2004-2017 Volnys Bernal 1 Semáforo Volnys Borges Bernal volnys@lsi.usp.br Departamento de Sistemas Eletrônicos Escola Politécnica da USP 2004-2017 Volnys Bernal 2 Semáforo Sumário Semáforo Problema produtor-consumidor

Leia mais

Sincronização. Problema da Exclusão Mútua

Sincronização. Problema da Exclusão Mútua Sincronização Parte I Primitivas de Sincronização Problema da Exclusão Mútua struct int saldo; /* outras variáveis,ex. nome do titular, etc. */ conta_t; int levantar_dinheiro (conta_t* conta, int valor)

Leia mais

Instituto Superior Técnico Introdução aos Algoritmos e Estruturas de Dados

Instituto Superior Técnico Introdução aos Algoritmos e Estruturas de Dados Instituto Superior Técnico Introdução aos Algoritmos e Estruturas de Dados Ano Lectivo de 2006/2007 2 o Semestre 1 o Teste A - 12 de Abril de 2007 Duração: 2h - O teste é sem consulta. - Para cada questão

Leia mais

Programação de Sistemas

Programação de Sistemas Programação de Sistemas Sinais Programação de Sistemas Sinais : 1/30 Modelo de eventos (1) Os processos de nível utilizador interagem com o núcleo através de chamadas de sistema. Nos sistemas computacionais,

Leia mais

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

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA RIO GRANDE DO NORTE INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA RIO GRANDE DO NORTE Algoritmos ANSI C - Gerenciamento de Memória Copyright 2014 IFRN Agenda Introdução Alocação dinâmica Funções malloc free calloc realloc

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

A regra de acesso aos dados de uma fila é a seguinte: O primeiro elemento que entra (na fila) é o primeiro que sai (FIFO first in, first out).

A regra de acesso aos dados de uma fila é a seguinte: O primeiro elemento que entra (na fila) é o primeiro que sai (FIFO first in, first out). Fila Algumas aplicações impõem regras de acesso às informações armazenados em estruturas de dados, restringindo como os dados são inseridos e removidos da estrutura. A fila, também conhecida como QUEUE,

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

INSTITUTO SUPERIOR TÉCNICO Algoritmos e Estruturas de Dados

INSTITUTO SUPERIOR TÉCNICO Algoritmos e Estruturas de Dados INSTITUTO SUPERIOR TÉCNICO Algoritmos e Estruturas de Dados Ano Lectivo de 2002/2003 2 o Semestre Repescagem do 2 o Teste (A) 18 de Julho de 2003 Duração: 2h - O teste é sem consulta. - Para cada questão

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

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

Memória compartilhada

Memória compartilhada Memória compartilhada Luiz Affonso Guedes 1 Ivanovitch Silva 1 affonso@dca.ufrn.br ivan@dca.ufrn.br 1 Universidade Federal do Rio Grande do Norte 15 de outubro de 2009 Memória compartilhada DCA0109 - Prática

Leia mais

Listas Ligadas (Encadeadas) Listas Simplesmente Encadeadas

Listas Ligadas (Encadeadas) Listas Simplesmente Encadeadas Listas Ligadas (Encadeadas) Matrizes são estruturas de dados muito úteis fornecidas nas linguagens de programação. No entanto, elas têm pelo menos duas limitações: 1- Seu tamanho tem que ser conhecido

Leia mais

ENGENHARIA DE PRODUÇÃO PROGRAMAÇÃO INTRODUÇÃO Estrutura de Seleção. Prof. Luiz Fernando Laguardia Campos FMS

ENGENHARIA DE PRODUÇÃO PROGRAMAÇÃO INTRODUÇÃO Estrutura de Seleção. Prof. Luiz Fernando Laguardia Campos FMS ENGENHARIA DE PRODUÇÃO PROGRAMAÇÃO INTRODUÇÃO Estrutura de Seleção Prof. Luiz Fernando Laguardia Campos FMS lflcampos@machadosobrinho.com.br OPERADORES EPD PROGRAMAÇÃO Lógicos: Não (NOT) E (AND em C &&)

Leia mais

Introdução à Ciência da Computação I. Alocação Dinâmica. Prof. Claudio Fabiano Motta Toledo

Introdução à Ciência da Computação I. Alocação Dinâmica. Prof. Claudio Fabiano Motta Toledo Introdução à Ciência da Computação I Alocação Dinâmica Prof. Claudio Fabiano Motta Toledo Sumário Funções para alocação de memória Ponteiros para ponteiros 8/12/16 2 Funções para alocação de memória malloc(),

Leia mais

Processos. Sistemas Operativos 2008 / Multiprogramação

Processos. Sistemas Operativos 2008 / Multiprogramação Processos Sistemas Operativos 2008 / 2009 Multiprogramação Execução, em paralelo, de múltiplos programas na mesma máquina Cada instância de um programa em execução denomina-se um processo Considerando

Leia mais

Alocação de Memória. Lucas Ferrari de Oliveira Professor Adjunto Universidade Federal do Paraná (UFPR)

Alocação de Memória. Lucas Ferrari de Oliveira Professor Adjunto Universidade Federal do Paraná (UFPR) Alocação de Memória Linguagem de Programação Estruturada 1 Alocação dinâmica e ponteiros Lucas Ferrari de Oliveira Professor Adjunto Universidade Federal do Paraná (UFPR) Sumario Introdução Alocação Estática

Leia mais

Sistemas Operativos: Concorrência (Parte 2)

Sistemas Operativos: Concorrência (Parte 2) Sistemas Operativos: Concorrência (Parte 2) Pedro F. Souto (pfs@fe.up.pt) March 23, 2012 Sumário Instruções read-modify-write Atómicas. Problema do Lost Wakeup Semáforos Monitores Variáveis de Condição

Leia mais

Programação paralela em UNIX. Aleardo Manacero Jr.

Programação paralela em UNIX. Aleardo Manacero Jr. Programação paralela em UNIX Aleardo Manacero Jr. Paralelismo em UNIX Pode ser feito tanto para ambientes de memória compartilhada quanto de troca de mensagens Mecanismos de memória compartilhada THREADS

Leia mais

Processos. Sistemas Operativos 2009 / Multiprogramação

Processos. Sistemas Operativos 2009 / Multiprogramação Processos Sistemas Operativos 2009 / 2010 Multiprogramação Execução, em paralelo, de múltiplos programas na mesma máquina Cada instância de um programa em execução denomina-se um processo Considerando

Leia mais

13. ALOCAÇÃO DINÂMICA DE MEMÓRIA

13. ALOCAÇÃO DINÂMICA DE MEMÓRIA 787878787878787878787878787878787878787878787878787878 13. ALOCAÇÃO DINÂMICA DE MEMÓRIA Sempre é necessário declarar o número de elementos do array. Mas e se ele for desconhecido? E se ele variar? Pode

Leia mais

Sistemas Operacionais

Sistemas Operacionais Introdução Inst tituto de Info ormátic ca - UF FRGS Sistemas Operacionais i Multithreading Aula 04 Necessidade de executar atividades concorrentes, porém cooperantes ou que compartilhem dados endereçamento

Leia mais

Introdução aos Sistemas Operacionais. Threads

Introdução aos Sistemas Operacionais. Threads Introdução aos Sistemas Operacionais Threads Eleri Cardozo FEEC/Unicamp O que é uma Thread? Uma thread (linha de controle) é uma unidade de execução e de controle, alocação e compartilhamento de recursos

Leia mais

Gilberto A. S. Segundo. 24 de agosto de 2011

Gilberto A. S. Segundo. 24 de agosto de 2011 Exercícios - Alocação Dinâmica Gilberto A. S. Segundo Programação Aplicada de Computadores Engenharia Elétrica Universidade Federal do Espírito Santo - UFES 24 de agosto de 2011 1 / 23 Grupo de e-mail

Leia mais

Linguagem de Programação I

Linguagem de Programação I Linguagem de Programação I Carlos Eduardo Batista Centro de Informática - UFPB bidu@ci.ufpb.br Exemplo: Explorar Templates e Exceções Incrementar com o uso de STL "2 Crie uma função verificarpalindromo()

Leia mais

Sistemas Operativos: Concorrência (Parte 2)

Sistemas Operativos: Concorrência (Parte 2) Sistemas Operativos: Concorrência (Parte 2) Pedro F. Souto (pfs@fe.up.pt) April 1, 2014 Sumário Monitores Variáveis de Condição Semáforos Leitura Adicional Sumário Monitores Variáveis de Condição Semáforos

Leia mais

Ponteiros e Tabelas. K&R: Capitulo 5 IAED, 2012/2013

Ponteiros e Tabelas. K&R: Capitulo 5 IAED, 2012/2013 Ponteiros e Tabelas K&R: Capitulo 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

Ponteiros e Tabelas. K&R: Capitulo 5 IAED, 2012/2013

Ponteiros e Tabelas. K&R: Capitulo 5 IAED, 2012/2013 Ponteiros e Tabelas K&R: Capitulo 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

1. Processos. Núcleo, Processos e Tarefas. Page 1. Processo Processo Processo. Sistemas Operativos 2011 / Departamento de Engenharia Informática

1. Processos. Núcleo, Processos e Tarefas. Page 1. Processo Processo Processo. Sistemas Operativos 2011 / Departamento de Engenharia Informática Núcleo, Processos e Tarefas Sistemas Operativos 2011 / 2012 1. Processos Processo Processo Processo Page 1 1 Multiprogramação Execução, em paralelo, de múltiplos programas na mesma máquina Cada instância

Leia mais

Sincronização e Comunicação entre Processos. Sincronização e Comunicação Volnys Bernal 1. Agenda

Sincronização e Comunicação entre Processos. Sincronização e Comunicação Volnys Bernal 1. Agenda entre Processos 004-006 Volnys Bernal 004-006 Volnys Bernal Agenda entre Processos Volnys Borges Bernal volnys@lsi.usp.br http://www.lsi.usp.br/~volnys Região Crítica Classificação dos mecanismos de sincronização

Leia mais

Reinaldo Gomes Alocação Dinâmica

Reinaldo Gomes Alocação Dinâmica Algoritmos e Lógica de Programação Linguagem C Alocação Dinâmica i de Memória Reinaldo Gomes reinaldo@cefet-al.br Alocação Dinâmica Quando declaramos uma variável ou um arranjo, o compilador automaticamente

Leia mais

Threads

Threads Threads Fluxos de Execução Um programa seqüencial consiste de um único fluxo de execução, o qual realiza uma certa tarefa computacional. A maioria dos programas simples tem essa característica: só possuem

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

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

Grupo I [7 Val] 1. Considere os seguintes 3 algoritmos de escalonamento num sistema operativo de tempo virtual:

Grupo I [7 Val] 1. Considere os seguintes 3 algoritmos de escalonamento num sistema operativo de tempo virtual: Número: Nome: LEIC/LERC 2012/13-1º Teste de Sistemas Operativos 24 de Novembro de 2011 Responda no enunciado, apenas no espaço fornecido. Identifique todas as folhas. Justifique todas as respostas. Duração:

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

Arquivos. Estruturas de Dados II Vanessa Braganholo

Arquivos. Estruturas de Dados II Vanessa Braganholo Arquivos Estruturas de Dados II Vanessa Braganholo Entidades } Aplicações precisam armazenar dados sobre as mais diversas entidades, que podem ser concretas ou abstratas } Funcionário de uma empresa (concreto)

Leia mais

INSTITUTO SUPERIOR TÉCNICO Algoritmos e Estruturas de Dados

INSTITUTO SUPERIOR TÉCNICO Algoritmos e Estruturas de Dados INSTITUTO SUPERIOR TÉCNICO Algoritmos e Estruturas de Dados Ano Lectivo de 2002/2003 2 o Semestre 2 o Teste A 9 de Junho de 2003 Duração: 2h - O teste é sem consulta. - Para cada questão com escolha múltipla

Leia mais

Programação paralela em UNIX. Aleardo Manacero Jr.

Programação paralela em UNIX. Aleardo Manacero Jr. Programação paralela em UNIX Aleardo Manacero Jr. Paralelismo em UNIX Pode ser feito tanto para ambientes de memória compartilhada quanto de troca de mensagens Mecanismos de memória compartilhada THREADS

Leia mais

Listas (cont.) K&R: Capitulo 6. Lista Simplesmente Ligada IAED, 2012/2013. Conjunto de nós. Cada nó contém. head NULL. typedef struct node {

Listas (cont.) K&R: Capitulo 6. Lista Simplesmente Ligada IAED, 2012/2013. Conjunto de nós. Cada nó contém. head NULL. typedef struct node { Listas (cont.) K&R: Capitulo 6 Lista Simplesmente Ligada Conjunto de nós head NULL Cada nó contém Informação útil Ponteiro para o próimo nó typedef struct node Item item; struct node *net; *link; Item

Leia mais

Sistemas de Operação (2018/2019) Ficha 2

Sistemas de Operação (2018/2019) Ficha 2 Sistemas de Operação (2018/2019) Ficha 2 Q1. Recorde a definição de número complexo z C. Um número complexo z tem a forma a + bi, onde a, b R. Os valores a e b representam, respectivamente, as partes real

Leia mais

Grupo I [5 Val] Suponha que, ao correr comando ls l whoami, se obtinha o seguinte output: -rwxr-xr-x 1 root root Sep whoami

Grupo I [5 Val] Suponha que, ao correr comando ls l whoami, se obtinha o seguinte output: -rwxr-xr-x 1 root root Sep whoami Número: Nome: LEIC/LETI 2017/18-1º Teste de Sistemas Operativos 21 de Novembro de 2018 Responda no enunciado, apenas no espaço fornecido. Identifique todas as folhas. Duração: 1h30m Grupo I [5 Val] 1.

Leia mais

Ponteiros. Baseado nos slides do Prof. Mauro.

Ponteiros. Baseado nos slides do Prof. Mauro. Baseado nos slides do Prof. Mauro. A memória do computador é uma sequência de bytes, na qual endereçamos cada um sequencialmente. Como vimos, uma variável é uma região da memória que reservamos para armazenar

Leia mais

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

USP - ICMC - SSC SSC o. Semestre Disciplina de Introdução à Ciência da Computação ICC 1 - Teoria USP - ICMC - SSC SSC 0501-1o. Semestre 2010 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

TAD: Tipo Abstrato de Dados (parte 2)

TAD: Tipo Abstrato de Dados (parte 2) TAD: Tipo Abstrato de Dados (parte 2) SCC0502 Algoritmos e Estruturas de Dados I Programa em C pode ser dividido em vários arquivos Arquivos fonte com extensão.c Denominados de módulos Cada módulo deve

Leia mais

Mad Santa Claus Problem

Mad Santa Claus Problem Problema do Papai Noel Modificado 1 o semestre de 2009 Douglas Alves Germano 060210 Mauro Tardivo Filho 063140 Paulo Roberto de Almeida Costa 063607 Original O problema originalmente proposto consiste

Leia mais