Programação com Pthreads

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

Download "Programação com Pthreads"

Transcrição

1 Programação com Vinícius Alves Hax Engenharia de Computação Furg Abril/2008

2 Índice Conceitos básicos Programação com threads POSIX threads API 2

3 Lembrete Não use códigos desta apresentação em ambiente de produção, pois várias verificações não foram feitas para fins de simplificação 3

4 Processos Um processo é um programa em execução, acompanhado dos valores atuais do contador de programa, dos registrados e das variáveis. Andrew S. Tanenbaum 4

5 Propriedades de um processo Identificadores diversos Registradores PC Ponteiro para a pilha Prioridade Processo pai Etc 5

6 Threads "Technically, a thread is defined as an independent stream of instructions that can be scheduled to run as such by the operating system." Função que roda de forma semi independente do programa 6

7 Processo vs Thread Um processo pode ter uma ou mais threads Uma thread compartilha recursos com o seu processo 7

8 Propriedades Ponteiro de pilha Registradores Propriedades do escalonamento (política e prioridade) Sinais pendentes e bloqueados Dados específicos da thread 8

9 Características Podem criar outras threads Existe dentro de um processo e usa seus recursos Tem seu fluxo de controle independente Só tem as propriedades essenciais para a execução Compartilha os recursos com outros processos Tem um overhead muito menor 9

10 Motivação Intercambiar CPU com I/O Dar prioridades diferentes para problemas diferentes Tratar eventos assíncronos Comunicação entre threads é mais simples do que comunicação entre processos Melhor performance Mais fácil modelar alguns problemas 10

11 Programação Em geral a programação com threads se dá através da divisão do programa em funções executadas por cada thread. Pode ser feita através da divisão de dados também Podem ser usadas em aplicações seriais para simular execução de forma paralela. 11

12 Modelos de programação Coordenador/trabalhador Pipeline Em pares 12

13 Memória compartilhada Todas as threads tem acesso a mesma memória Threads tem seus dados privados A responsabilidade pelo controle de acesso é do programador 13

14 Thread safeness Habilidade de trabalhar com threads, sem encobrir dados compartilhados, ou provocar condições de disputa 14

15 Exemplo not thread safe class RGBColor method SetColor(int r, int g, int b) self.r = r; self.g = g; self.b = b; end thread_1() SetColor(0, 255, 0) thread_2() SetColor(255, 0, 0) 15

16 Recomendações Se não está explícito na documentação que a biblioteca é thread safeness, parta do princípio que ela não é e tome providências para assegurar a execução do seu programa. 16

17 Histórico de pthreads Cada fornecedor de hardware implementou suas própria versão Versões eram proprietárias Versões eram incompatíveis entre si Difícil para programadores portarem suas aplicações 17

18 Padrão Padrão IEEE POSIX c (1995) são um conjunto de bibliotecas para a linguagem C, que podem ser implementadas como uma biblioteca a parte ou parte da própria biblioteca C. Existem versões da biblioteca Cerca de 60 subrotinas 18

19 Comparação de performance Plataforma fork() pthread_create() AMD 2.4 GHz Opteron (8cpus/node) IBM 1.9 GHz POWER5 p5 575 (8cpus/node) IBM 1.5 GHz POWER4 (8cpus/node) INTEL 2.4 GHz Xeon (2 cpus/node) INTEL 1.4 GHz Itanium2 (4 cpus/node)

20 Classificação das rotinas Gerenciamento de threads Mutexes Variáveis de condição 20

21 Convenções de nomes pthread_ Threads e rotinas diversas pthread_attr_ Atributos de threads pthread_mutex_ Mutexes pthread_mutexattr_ Atributos de mutexes pthread_cond_ Variáveis de condição pthread_condattr_ Atributos das variáveis de condição 21

22 Utilização Por questões de portabilidade, sempre devemos incluir em programas usando pthreads o cabeçalho pthread.h O atual padrão POSIX só é definido atualmente para a linguagem C/C++. Alguns compiladores de Fortran (IBM AIX Fortran) fornecem uma API para Fortran 22

23 Compilando gcc nomearquivo.c lpthread g++ nomearquivo.cpp lpthread 23

24 Gerenciamento de threads pthread_create pthread_attr_init pthread_attr_destroy pthread_exit 24

25 Criando threads O número máximo de threads que podem ser criadas é dependente da implementação Uma vez que as threads são criadas, não existe uma hierarquia ou dependência entre elas 25

26 Terminando threads Se a main() termina antes das threads com o comando pthread_exit(), as threads criadas vão continuar a existir. O programador pode especificar o estado de término de uma thread, armazenando o resultado em um ponteiro nulo (void*) 26

27 Passagem de parâmetros void *PrintHello(int* pt) { printf("hello World %d", *pt); pthread_exit(null); } int t; pthread_create(&thread, NULL, PrintHello, &t); 27

28 Joining threads pthread_join (threadid,status) pthread_detach (threadid,status) pthread_attr_setdetachstate (attr,detachstate) pthread_attr_getdetachstate (attr,detachstate) 28

29 Joining "Joining" é um caminho para conseguir sincronização entre threads 29

30 Detalhes sobre joining A subrotina pthread_join() bloqueia a thread chamadora O status pode ser obtido através da subrotina pthread_exit(). Deve haver um join para cada thread 30

31 Detaching Uma thread criada como detached, não pode ser esperada Por default a thread é criada como joinable. Por portabilidade isto deve ser feito de forma explícita Declarando threads como detached poupa recursos do sistema 31

32 Exemplo de joining void *HardWork(void){ for (int i = 0; i < ; i++) ; } pthread_t thread; pthread_create(&thread, NULL, (void *)HardWork, NULL); pthread_join(thread, NULL); printf("acabou a espera"); 32

33 Controle da pilha pthread_attr_getstacksize (attr, stacksize) pthread_attr_setstacksize (attr, stacksize) pthread_attr_getstackaddr (attr, stackaddr) pthread_attr_setstackaddr (attr, stackaddr) 33

34 Rotinas diversas pthread_self () pthread_equal (thread1,thread2) pthread_once (once_control, init_routine) pthread_yield () 34

35 Exemplo pthread_once void* Init(void){ printf("init function\n");} void *PrintHello(void){ static pthread_once_t random_is_initialized = PTHREAD_ONCE_INIT; } printf("hello World\n"); pthread_once(&random_is_initialized, (void*)init); pthread_exit(null); 35

36 Variáveis de exclusão mútua Mutex é uma abreviação para exclusão mútua. Variáveis mutex são a maneira mais comum de implementar sincronismo com pthreads 36

37 Rotinas para mutexes pthread_mutex_init (mutex,attr) pthread_mutex_destroy (mutex) pthread_mutexattr_init (attr) pthread_mutexattr_destroy (attr) 37

38 Inicializando um mutex Estática, na declaração. Example: pthread_mutex_t mymutex = PTHREAD_MUTEX_INITIALIZER; Dinamicamente com a subrotina pthread_mutex_init() Por default as variáveis são desbloqueadas 38

39 Travando e destravando pthread_mutex_lock (mutex) pthread_mutex_trylock (mutex) pthread_mutex_unlock (mutex) 39

40 Variáveis de condição Mutexes implementam sincronização através do controle de acesso aos dados por parte das threads. Variáveis de condição implementam a sincronização baseadas nos valores atuais de uma posição de memória 40

41 Rotinas pthread_cond_init (condition,attr) pthread_cond_destroy (condition) pthread_condattr_init (attr) pthread_condattr_destroy (attr) 41

42 Iniciando variáveis de condição De forma estática, na sua declaração: pthread_cond_t myconvar = PTHREAD_COND_INITIALIZER; Dinamicamente através da subrotina pthread_cond_init() 42

43 Esperando e sinalizando pthread_cond_wait (condition,mutex) pthread_cond_signal (condition) pthread_cond_broadcast (condition) 43

44 Exemplo Thread A: Thread B Trava mutex e checa variável Chama pthread_cond_wait() e espera pela Thread B. Acorda e destrava mutex Trava mutex Muda o valor da variável que A está esperando Se a condição foi satisfeita, sinaliza A e destrava mutex 44

45 Referências Tanenbaum, Andrew S., Sistemas Operacionais Modernos. Linux man page. Designing for Thread Safety. POSIX Threads Programming. IEEE Standards Interpretations for IEEE Std c c 95_int/ind ex.html 45

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

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

Monitores. Walter Fetter Lages.

Monitores. Walter Fetter Lages. Monitores Walter Fetter Lages w.fetter@ieee.org Universidade Federal do Rio Grande do Sul Escola de Engenharia Departamento de Engenharia Elétrica ENG04008 Sistemas de Tempo Real Copyright (c) Walter Fetter

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

ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES II AULA 07: PROGRAMANDO COM THREADS EM LINGUAGEM C

ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES II AULA 07: PROGRAMANDO COM THREADS EM LINGUAGEM C ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES II AULA 07: PROGRAMANDO COM THREADS EM LINGUAGEM C Prof. Max Santana Rolemberg Farias max.santana@univasf.edu.br Colegiado de Engenharia de Computação PROGRAMANDO

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

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

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

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

Threads. Agenda. Threads. Processo. Processo. Processo. Processo. (c) Volnys B. Bernal Versão de 22/3/2012

Threads. Agenda. Threads. Processo. Processo. Processo. Processo. (c) Volnys B. Bernal Versão de 22/3/2012 1 2005-2009 Volnys Bernal 1 2005-2009 Volnys Bernal 2 Agenda Volnys Borges Bernal volnys@lsi.usp.br http://www.lsi.usp.br/~volnys Interface de threads Interfaces de threads de usuário x threads de núcleo

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

Sincronização e comunicação entre entidades de processamento. Mutex Volnys Bernal 1. Tópicos. Exclusão Mútua (mutex) Exclusão Mútua (Mutex)

Sincronização e comunicação entre entidades de processamento. Mutex Volnys Bernal 1. Tópicos. Exclusão Mútua (mutex) Exclusão Mútua (Mutex) 2004-2013 Volnys Bernal 1 2004-2013 Volnys Bernal 2 Tópicos Exclusão Mútua (mutex) Volnys Borges Bernal volnys@lsi.usp.br http://www.lsi.usp.br/~volnys Exclusão Mútua () Objetivo, utilidade, requisitos

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

Infra-Estrutura de Software

Infra-Estrutura de Software Infra-Estrutura de Software Processos e Threads SO: Multitarefa SO: Multitarefa executando Processo P 0 em execução SO: Multitarefa executando interrupção ou system call ocioso Salva estado do Processo

Leia mais

Programação em Memória Partilhada com o Pthreads

Programação em Memória Partilhada com o Pthreads Programação em Memória Partilhada com o Pthreads Ricardo Rocha Departamento de Ciência de Computadores Faculdade de Ciências Universidade do Porto Computação Paralela 2015/2016 R. Rocha (DCC-FCUP) Programação

Leia mais

Processos Concorrentes

Processos Concorrentes Processos Concorrentes Walter Fetter Lages w.fetter@ieee.org Universidade Federal do Rio Grande do Sul Escola de Engenharia Departamento de Engenharia Elétrica ENG04008 Sistemas de Tempo Real Copyright

Leia mais

Mecanismos de Comunicação no RTAI

Mecanismos de Comunicação no RTAI Mecanismos de Comunicação no RTAI Walter Fetter Lages w.fetter@ieee.org Universidade Federal do Rio Grande do Sul Escola de Engenharia Departamento de Engenharia Elétrica Programa de Pós-Graduação em Engenharia

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

Programming for Shared Memory with Pthreads

Programming for Shared Memory with Pthreads Programming for Shared Memory with Pthreads Ricardo Rocha and Fernando Silva Computer Science Department University of Porto, School of Sciences Parallel Computing 2017/2018 R. Rocha & F. Silva (DCC-FCUP)

Leia mais

Threads. Pedro Cruz. EEL770 Sistemas Operacionais

Threads. Pedro Cruz. EEL770 Sistemas Operacionais Threads Pedro Cruz EEL770 Sistemas Operacionais Nas aulas anteriores A thread ou o thread? Não sei. Já vi todos 2 Chamadas de sistema Pedido de um processo ao Sistema Operacional (SO) Bloqueante Deixa

Leia mais

Infra-Estrutura de Software

Infra-Estrutura de Software Infra-Estrutura de Software Processos, Threads e Concorrência Threads O Modelo de Thread (1) Razões para ter processos leves (threads) Em muitas aplicações, várias atividades acontecem ao mesmo tempo mundo

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

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

Sistemas Operacionais Introdução Sistemas Operacionais Multithreading (multiprogramação leve) Aula 04 Forma diferente de enxergar a abstração de processo = Conjunto de recursos relacionados endereçamento, arquivos, filhos,

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

Paralelismo em Computadores com Tecnologia Multicore

Paralelismo em Computadores com Tecnologia Multicore IFRN - Pau dos Ferros Pau dos Ferros/RN, 25 de fevereiro de 2016 O minicurso Descrição: Para se utilizar os vários núcleos de processamento disponíveis nos computadores atuais de forma eficiente, faz necessário

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

Programação concorrente usando threads POSIX e Java

Programação concorrente usando threads POSIX e Java Programação concorrente usando threads POSIX e Java MAC 431 / MAC 5742 Introdução à Computação Paralela e Distribuída Daniel Cordeiro DCC - IME - USP 13 de agosto de 2012 Introdução Por que escrever programas

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

AULA Nº 08 SISTEMAS OPERACIONAIS. Threads

AULA Nº 08 SISTEMAS OPERACIONAIS. Threads AULA Nº 08 SISTEMAS OPERACIONAIS Threads Contextualizando Na aula passada Sincronização de Processos Aula de hoje Threads O Modelo de Processo 1) Utilizado para agrupar recursos 2) Um espaço de endereço

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

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Aula 9 Threads Prof.: Edilberto M. Silva http://www.edilms.eti.br Baseado no material disponibilizado por: SO - Prof. Edilberto Silva Prof. José Juan Espantoso Threads Uma thread

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

Fluxos de Execução. Um programa seqüencial consiste de um único fluxo de execução, o qual realiza uma certa tarefa computacional.

Fluxos de Execução. Um programa seqüencial consiste de um único fluxo de execução, o qual realiza uma certa tarefa computacional. 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

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

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

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

Threads. Fluxos de Execução. Exemplos de Programas MT (1) Exemplos de Programas MT (2)

Threads. Fluxos de Execução. Exemplos de Programas MT (1) Exemplos de Programas MT (2) Fluxos de Execução Threads 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

POSIX Threads. Walter Fetter Lages.

POSIX Threads. Walter Fetter Lages. POSIX Threads Walter Fetter Lages w.fetter@ieee.org Universidade Federal do Rio Grande do Sul Escola de Engenharia Departamento de Engenharia Elétrica ENG04008 Sistemas de Tempo Real Copyright (c) Walter

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

EEL770 Sistemas Operacionais

EEL770 Sistemas Operacionais EEL770 Sistemas Operacionais Parte 2: Concorrência Conceitos básicos e ciclo de vida de threads Prof. Rodrigo de Souza Couto Concorrência Múltiplas atividades que podem ocorrer ao mesmo tempo Exemplos

Leia mais

Concorrência em Processos

Concorrência em Processos Concorrência em Processos Anderson L. S. Moreira anderson.moreira@recife.ifpe.edu.br http://dase.ifpe.edu.br/~alsm Baseado nas aulas do professor Alberto Costa Neto da UFS 1 O que fazer com essa apresentação

Leia mais

Padronização POSIX x Sistemas Operacionais de Tempo-Real: Uma Análise Comparativa

Padronização POSIX x Sistemas Operacionais de Tempo-Real: Uma Análise Comparativa Padronização POSIX x Sistemas Operacionais de Tempo-Real: Uma Análise Comparativa Edgard de Faria Corrêa edgard@inf.ufsc.br Luis Fernando Friedrich, Dr. Eng. lff@inf.ufsc.br Universidade Federal de Santa

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

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

AULA 06: PROGRAMAÇÃO EM MÁQUINAS PARALELAS

AULA 06: PROGRAMAÇÃO EM MÁQUINAS PARALELAS ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES II AULA 06: PROGRAMAÇÃO EM MÁQUINAS PARALELAS Prof. Max Santana Rolemberg Farias max.santana@univasf.edu.br Colegiado de Engenharia de Computação PROGRAMAÇÃO PARALELA

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

Capítulo 2. Multiprogramação. Conteúdo. Objetivo. Recordando. Recordando. DCA-108 Sistemas Operacionais

Capítulo 2. Multiprogramação. Conteúdo. Objetivo. Recordando. Recordando. DCA-108 Sistemas Operacionais DCA-108 Sistemas Operacionais Capítulo 2 Luiz Affonso Guedes www.dca.ufrn.br/~affonso affonso@dca.ufrn.br Multiprogramação Luiz Affonso Guedes 1 Luiz Affonso Guedes 2 Conteúdo Caracterização de um SO Moderno

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

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

Fundamentos de Sistemas Operacionais

Fundamentos de Sistemas Operacionais Fundamentos de Sistemas Operacionais Aula 6: Monitores, Troca de Mensagens e Deadlock Diego Passos Última Aulas Mecanismos de Exclusão Mútua Operações atômicas. Protocolos de controle de acesso. Spin-locks.

Leia mais

Programação de Alto Desempenho - 2. Prof: Carla Osthoff

Programação de Alto Desempenho - 2. Prof: Carla Osthoff Programação de Alto Desempenho - 2 Prof: Carla Osthoff E-mail: osthoff@lncc.br 3- Modelos de programação paralela Shared Memory/Threads Posix Win32 treads OpenMP Message Passing MPI Data Parallel OpenCL/Cuda

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

Programação de Sistemas

Programação de Sistemas 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

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

Chapter 4: Threads. Operating System Concepts 8th Edition

Chapter 4: Threads. Operating System Concepts 8th Edition Chapter 4: Threads Sobre a apresentação (About the slides) Os slides e figuras dessa apresentação foram criados por Silberschatz, Galvin e Gagne em 2009. Esse apresentação foi modificada por Cristiano

Leia mais

Carlos Eduardo Batista Centro de Informática - UFPB

Carlos Eduardo Batista Centro de Informática - UFPB Carlos Eduardo Batista Centro de Informática - UFPB bidu@ci.ufpb.br Introdução O modelo de Threads O uso de Threads Threads POSIX Threads Java Threads STD (C++11) Em sistemas operacionais tradicionais,

Leia mais

SISTEMAS OPERACIONAIS

SISTEMAS OPERACIONAIS SISTEMAS OPERACIONAIS Processos e Threads Andreza Leite andreza.leite@univasf.edu.br Plano de Aula 2 Gerenciamento de Processos Threads Aplicações com múltiplas Threads Concorrência e Compartilhamento

Leia mais

OO Engenharia Eletrônica

OO Engenharia Eletrônica OO Engenharia Eletrônica - Programação em C/C++ Slides 18B: Introdução à Multithreading. Exemplos: Programação OO Multithreading com pthreads. Aluno: Vagner Vengue Threads Orientadas a Objeto Thread Orientada

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

UM ESTUDO COMPARATIVO DE DESEMPENHO UTILIZANDO PROGRAMAÇÃO SEQUENCIAL VS PARALELA APLICADO EM ALGORITMOS GENÉTICOS 1

UM ESTUDO COMPARATIVO DE DESEMPENHO UTILIZANDO PROGRAMAÇÃO SEQUENCIAL VS PARALELA APLICADO EM ALGORITMOS GENÉTICOS 1 UM ESTUDO COMPARATIVO DE DESEMPENHO UTILIZANDO PROGRAMAÇÃO SEQUENCIAL VS PARALELA APLICADO EM ALGORITMOS GENÉTICOS 1 Eldair F. Dornelles 2, Henrique A. Richter 3, Miquéias F. M. Trennepohl 4, Taís T. Siqueira

Leia mais

Introdução OpenMP. Nielsen Castelo Damasceno

Introdução OpenMP. Nielsen Castelo Damasceno Introdução OpenMP Nielsen Castelo Damasceno Computação de auto desempenho Processamento Paralelo Memória Distribuída e Compartilhada Modelo de programação OpenMP Métricas de Desempenho Computação de auto

Leia mais

Paralela e Distribuída. Memória Partilhada com o Pthreads

Paralela e Distribuída. Memória Partilhada com o Pthreads Programação Paralela e Distribuída Programação em Memória Partilhada com o Pthreads Concorrência ou Paralelismo Potencial Concorrência ou paralelismo potencial diz-se quando um programa possui tarefas

Leia mais

PROGRAMAÇÃO ESTRUTURADA E ORIENTADA A OBJETOS

PROGRAMAÇÃO ESTRUTURADA E ORIENTADA A OBJETOS INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE PROGRAMAÇÃO ESTRUTURADA E ORIENTADA A OBJETOS Docente: Éberton da Silva Marinho e-mail: ebertonsm@gmail.com eberton.marinho@ifrn.edu.br

Leia mais

Implementação do Padrão Pthreads sobre o Sistema Operacional Mulplix

Implementação do Padrão Pthreads sobre o Sistema Operacional Mulplix Implementação do Padrão Pthreads sobre o Sistema Operacional Mulplix Márcio de Oliveira Barros* cuco@nce. ufij. br Júlio Salek Aude** salek@nce.ufij.br NCEIUFRJ IM/UFRJ e NCEIUFRJ Núcleo de Computação

Leia mais

Universidade Estadual de Mato Grosso do Sul Bacharelado em Ciência da Computação Sistemas Operacionais Prof. Fabrício Sérgio de Paula

Universidade Estadual de Mato Grosso do Sul Bacharelado em Ciência da Computação Sistemas Operacionais Prof. Fabrício Sérgio de Paula Universidade Estadual de Mato Grosso do Sul Bacharelado em Ciência da Computação Sistemas Operacionais Prof. Fabrício Sérgio de Paula Tópicos Conceitos Modelos multithreads Bibliotecas Opções de criação

Leia mais

Linguagem de Programação II

Linguagem de Programação II Linguagem de Programação II Carlos Eduardo Ba6sta Centro de Informá6ca - UFPB bidu@ci.ufpb.br Roteiro Introdução O modelo de Threads O uso de Threads Threads POSIX Threads Java Threads STD (C++11) Introdução

Leia mais

Sistemas Operativos 4ª parte - Threads

Sistemas Operativos 4ª parte - Threads Sistemas Operativos 4ª parte - Threads Prof. José Rogado jrogado@ulusofona.pt Prof. Pedro Gama pedrogama@gmail.com Universidade Lusófona Adaptação LIG e Notas por Dr. Adriano Couto Threads Objectivos do

Leia mais

OpenMP. Slides baseados em tutorial de Tim Mattson da Intel

OpenMP. Slides baseados em tutorial de Tim Mattson da Intel OpenMP Slides baseados em tutorial de Tim Mattson da Intel O que é OpenMP? Uma especificação para um conjunto de diretivas de compilação, rotinas de biblioteca e variáveis de sistema que podem ser utilizadas

Leia mais

Sistemas Distribuídos Aula 3

Sistemas Distribuídos Aula 3 Sistemas Distribuídos Aula 3 Aula passada Processos IPC Características Ex. sinais, pipes, sockets Aula de hoje Threads Kernel level User level Escalonamento Motivação: Servidor Web Considere Servidor

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

INE 5645 Programação Paralela e Distribuída

INE 5645 Programação Paralela e Distribuída INE 5645 Programação Paralela e Distribuída Prof. João Bosco M. Sobral INE - UFSC bosco@inf.ufsc.br Urian K. Bardemaker PPGCC - INE - UFSC uriank@gmail.com Unidade 2 Programação Concorrente Processos Threads

Leia mais

Sistemas Distribuídos e Paralelos

Sistemas Distribuídos e Paralelos Sistemas Distribuídos e Paralelos Aula #6: Programação paralela em sistemas de memória compartilhada. ISUTIC - 2016 Eng. Alexander Rodríguez Bonet Aula de hoje Regiões paralelas. Cláusulas de âmbito. Partilha

Leia mais

INTRODUÇÃO AOS SISTEMAS OPERACIONAIS SEMANA 13

INTRODUÇÃO AOS SISTEMAS OPERACIONAIS SEMANA 13 INTRODUÇÃO AOS SISTEMAS OPERACIONAIS outubro/2013 SEMANA 13 Conceitos sobre s. Visão geral, s de usuário e de, modelos de multiing, ciclo de vida. Exemplos nos sistemas operacionais. 1 - Introdução Thread

Leia mais

72 ERAD 2009 Caxias do Sul, 17 a 20 de março de 2009

72 ERAD 2009 Caxias do Sul, 17 a 20 de março de 2009 72 ERAD 2009 Caxias do Sul, 17 a 20 de março de 2009 5.1. Introdução O surgimento da programação concorrente se deu por volta de 1960[Andrews 2000], com o surgimento de dispositivos dedicados a operações

Leia mais

COMPARAÇÃO DE DESEMPENHO ENTRE IMPLEMENTAÇÕES DO ALGORITMO JOGO DA VIDA COM PTHREAD E OPEMMP 1

COMPARAÇÃO DE DESEMPENHO ENTRE IMPLEMENTAÇÕES DO ALGORITMO JOGO DA VIDA COM PTHREAD E OPEMMP 1 COMPARAÇÃO DE DESEMPENHO ENTRE IMPLEMENTAÇÕES DO ALGORITMO JOGO DA VIDA COM PTHREAD E OPEMMP 1 Márcia Da Silva 2, Igor Gamste Haugg 3, Eliézer Silveira Prigol 4, Édson L. Padoin 5, Rogério S. M. Martins

Leia mais

Sistemas Operacionais. Prof. Pedro Luís Antonelli Anhanguera Educacional

Sistemas Operacionais. Prof. Pedro Luís Antonelli Anhanguera Educacional Sistemas Operacionais Prof. Pedro Luís Antonelli Anhanguera Educacional ARQUITETURA E IMPLEMENTAÇÃO Pacote de Threads Conjunto de rotinas disponíveis para que uma aplicação utilize as facilidades dos threads.

Leia mais

Mecanismos de Sincronização com Variáveis Compartilhadas

Mecanismos de Sincronização com Variáveis Compartilhadas Mecanismos de Sincronização com Variáveis Compartilhadas Rômulo Silva de Oliveira Edição do Autor, 2018 www.romulosilvadeoliveira.eng.br/livrotemporeal Outubro/2018 1 Introdução Problema da seção crí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) 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

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

UNIVERSIDADE FEDERAL RURAL DE PERNAMBUCO Bacharelado em Sistemas de Informação. Processamento Paralelo Threads. Aluno: Wagner Palacio

UNIVERSIDADE FEDERAL RURAL DE PERNAMBUCO Bacharelado em Sistemas de Informação. Processamento Paralelo Threads. Aluno: Wagner Palacio UNIVERSIDADE FEDERAL RURAL DE PERNAMBUCO Bacharelado em Sistemas de Informação Processamento Paralelo Threads Aluno: Wagner Palacio Turma: 3º período Professor: Giordano Cabral Recife, 29 de maio de 2012

Leia mais

OpenMP: Variáveis de Ambiente

OpenMP: Variáveis de Ambiente Treinamento OpenMP C/C++ 1 TREINAMENTO OpenMP C/C++ Módulo 1 Computação de Alto Desempenho Módulo 2 OpenMP: Construtores Paralelos Módulo 3 OpenMP: Diretivas de sincronização Módulo 4 OpenMP: Funções de

Leia mais

COS Sistemas Operacionais. SystemCalls() [Linux Kernel Development, 2 nd edition] Prof. Vítor Santos Costa

COS Sistemas Operacionais. SystemCalls() [Linux Kernel Development, 2 nd edition] Prof. Vítor Santos Costa COS 773 - Sistemas Operacionais SystemCalls() [Linux Kernel Development, 2 nd edition] Elias Bareinboim [eliasb@cos.ufrj.br] Prof. Vítor Santos Costa PESC - Programa de Engenharia de Sistemas e Computação

Leia mais

Sistemas Operativos Cap. IV Threads. Prof. José Rogado Universidade Lusófona

Sistemas Operativos Cap. IV Threads. Prof. José Rogado Universidade Lusófona Sistemas Operativos Cap. IV Threads Prof. José Rogado jose.rogado@ulusofona.pt Universidade Lusófona Threads Necessidades e Conceito Modelos de Multithreading Problemas de Threading As Pthreads Windows

Leia mais

Estruturas de Sistemas Operacionais

Estruturas de Sistemas Operacionais Estruturas de Sistemas Operacionais Sistemas Operacionais - Tópicos Componentes do Sistema Serviços de Sistemas Operacionais Chamadas ao Sistema Estrutura do Sistema Máquinas Virtuais Chamadas ao Sistema

Leia mais

TAREFAS IMPLEMENTAÇÃO DE TAREFAS AULA 06 Sistemas Operacionais Gil Eduardo de Andrade

TAREFAS IMPLEMENTAÇÃO DE TAREFAS AULA 06 Sistemas Operacionais Gil Eduardo de Andrade TAREFAS IMPLEMENTAÇÃO DE TAREFAS AULA 06 Sistemas Operacionais Gil Eduardo de Andrade O conteúdo deste documento é baseado no livro do Prof. Dr. Carlos Alberto Maziero, disponível no link: http://dainf.ct.utfpr.edu.br/~maziero

Leia mais

Sistemas Operacionais João Bosco T. Junior. Sistemas Operacionais João Bosco Junior - V1.3

Sistemas Operacionais João Bosco T. Junior. Sistemas Operacionais João Bosco Junior - V1.3 João Bosco T. Junior Apresentação da Disciplina Bibliografia Sistemas Operacionais Modernos (3ª Ed.) Ed Prentice Hall, A. S. Tanenbaum Sistemas Operacionais (3ª Ed.) Sagra Luzzatto, Rômulo, Alexandre e

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

Processos O conceito de processos é fundamental para a implementação de um sistema multiprogramável. De uma maneira geral, um processo pode ser entend

Processos O conceito de processos é fundamental para a implementação de um sistema multiprogramável. De uma maneira geral, um processo pode ser entend Concorrência Nos sistemas Monoprogramáveis somente um programa pode estar em execução por vez, permanecendo o processador dedicado a esta única tarefa. Os recursos como memória, processador e dispositivos

Leia mais

Programação concorrente (processos e threads)

Programação concorrente (processos e threads) Programação concorrente (processos e threads) Programação concorrente Por que precisamos dela? Para utilizar o processador completamente Paralelismo entre CPU e dispositivos de I/O Para modelar o paralelismo

Leia mais

Introdução ao OpenMP

Introdução ao OpenMP Introdução ao OpenMP Threads em CPU multicore Rogério A. Gonçalves 1,2 Alfredo Goldman 2 1 Departamento de Computação (DACOM) Universidade Tecnológica Federal do Paraná (UTFPR) 2 Departamento de Ciência

Leia mais

Processos e Threads. Ciclo 2 AT3. Prof. Hermes Senger

Processos e Threads. Ciclo 2 AT3. Prof. Hermes Senger Processos e Threads Ciclo 2 AT3 Prof. Hermes Senger Nota O presente material foi elaborado com base no material didático do livro Sistemas Operacionais, 3ª edição, de H.M.Deitel, P.J. Deitel, D.R. Choffnes,

Leia mais

Sistemas Operacionais I

Sistemas Operacionais I UFRJ IM - DCC Sistemas Operacionais I Unidade II - Threads 24/04/2014 Prof. Valeria M. Bastos 1 ORGANIZAÇÃO DA UNIDADE Threads Processos Threads Conceituação Descrição e Imagem de uma Thread Tipos de thread

Leia mais

Curso de Programação Distribuída e Paralela 29/09/2008. Informática UFRGS. Sistemas Operacionais II (C. Geyer) Sincronização 1. Pg.

Curso de Programação Distribuída e Paralela 29/09/2008. Informática UFRGS. Sistemas Operacionais II (C. Geyer) Sincronização 1. Pg. Sistemas Operacionais Professor Cláudio Geyer Instituto de - Sistemas Operacionais II (C. Geyer) Sincronização 1 Sistemas Operacionais Professor Cláudio Geyer Instituto de - Pg. 1 1 Tópicos ensinados no

Leia mais

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

Conceitos de Linguagens de Programação

Conceitos de Linguagens de Programação Faculdade de Ciências e Tecnologia Departamento de Matemática e Computação Bacharelado em Ciência da Computação Conceitos de Linguagens de Programação Aula 06 (rogerio@fct.unesp.br) Aula 6 Subprogramas

Leia mais

Linguagens de Programação 10 Avaliação de Linguagens

Linguagens de Programação 10 Avaliação de Linguagens Linguagens de Programação 10 Avaliação de Linguagens Vítor E. Silva Souza (vitorsouza@inf.ufes.br) http://www.inf.ufes.br/ ~ vitorsouza Departamento de Informática Centro Tecnológico Universidade Federal

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

Processos. Adão de Melo Neto

Processos. Adão de Melo Neto Processos Adão de Melo Neto 1 Processos Introdução Para se poder controlar o uso concorrente (ao mesmo tempo) do processador, da memória e dos dispositivos de E/S, um programa deve sempre estar sempre

Leia mais