Informática UFRGS. Threads. Programação com Objetos Distribuídos (C. Geyer) C# Threads V5 1
|
|
- Patrícia Palhares Ferreira
- 6 Há anos
- Visualizações:
Transcrição
1 C# Threads Programação com Objetos Distribuídos (C. Geyer) C# Threads V5 1
2 Autoria Autores Cláudio Geyer Local Instituto de Informática disciplinas: Programação Distribuída e Paralela Programação com Objetos Distribuídos Versão V9, março de 2011 Programação com Objetos Distribuídos (C. Geyer) C# Threads V5 2
3 Bibliografia Bibliografia Robinson, Simon et al. Professional C#. Wrox, Cursos em CD desenvolvidos/promovidos pela MS. Programação com Objetos Distribuídos (C. Geyer) C# Threads V5 3
4 Súmula Informática API Primeiro exemplo: criação sleep Estados de uma Thread Exemplo com join Sincronização: exclusão mútua Sincronização: classe Monitor classe wait e pulse exemplo buffer sincronizado Súmula Programação com Objetos Distribuídos (C. Geyer) C# Threads V5 4
5 Classe Thread: API Classe Thread: API o pacote System.Threading oferece recursos para a construção de threads a classe Thread e sua API métodos similares aos de Java Threads Start(): ativa uma thread Suspend(): suspende uma thread ativa Resume(): reativa uma thread suspensa Join(): espera pelo fim de uma thread Abort(): encerra a execução de uma thread Sleep(int milliseconds): faz a thread dormir o tempo indicado Programação com Objetos Distribuídos (C. Geyer) C# Threads V5 5
6 Classe Thread: API Classe Thread: API métodos como Suspend(), Resume() e Abort() segundo MS, são métodos seguros não deixam thread em estado inconsistente Suspend() eventualmente algumas instruções da thread ainda são executadas para garantir correção do coletor de lixo Programação com Objetos Distribuídos (C. Geyer) C# Threads V5 6
7 Classe Thread: API Classe Thread: API métodos como Suspend(), Resume() e Abort() Abort() lança execeção ThreadAbortException deve-se usar bloco try com cláusula finally em caso de abort, a cláusula finally será executada programador poderá realizar limpeza de recursos diversos thread não pode ser (re) ativada (start) Sun tornou tais métodos deprecated Programação com Objetos Distribuídos (C. Geyer) C# Threads V5 7
8 Lista de métodos: Classe Thread: API public sealed class Thread {}{ public static Thread CurrentThread { get; } } // static methods public static void Sleep(int milliseconds) {...}... public Thread(ThreadStart startmethod) {...} // thread creation } public string Name { get; set; } } // properties public ThreadPriority Priority { get; set; } } public ThreadState ThreadState { get; } } public bool IsAlive { get; } } public bool IsBackground { get; set; } }... public void Start() {...} // methods public void Suspend() {...} public void Resume() {...} public void Join() {...} // caller waits for the thread to die public void Abort() {...} // throws ThreadAbortException... Programação com Objetos Distribuídos (C. Geyer) C# Threads V5 8
9 Classe Thread: API public delegate void ThreadStart(); // parameterless void method public enum ThreadPriority {}{ AboveNormal, BelowNormal, Highest, Lowest, Normal} public enum ThreadState {Aborted, Running, Stopped, Suspended, Unstarted,,...} Observações: Get: opção de leitura do atributo Set: opção de escrita do atributo Programação com Objetos Distribuídos (C. Geyer) C# Threads V5 9
10 Especificação e Criação de Thread Especificação do comportamento qualquer método (de qualquer classe) pode ser usado como comportamento (run em Java Threads) da thread Criação: idéia cria-se um objeto Thread passando ao mesmo um método qualquer de um objeto qualquer concretamente o método é passado a um objeto auxiliar ThreadStart Programação com Objetos Distribuídos (C. Geyer) C# Threads V5 10
11 Especificação e Criação de Thread Criação de objeto Thread construtor da classe Thread, do pacote System.Threading public Thread(ThreadStart startmethod) {...} argumento: objeto ThreadStart construtor da classe ThreadStart public ThreadStart(runMethod) runmethod: na forma object.method object: de qualquer classe method: qualquer esse método representa o comportamento da thread Programação com Objetos Distribuídos (C. Geyer) C# Threads V5 11
12 Ativação da Thread Ativação da Thread método Start: public void Start() objeto deve ser da classe Thread método não bloqueante chamador continua sem esperar pelo final da chamada Programação com Objetos Distribuídos (C. Geyer) C# Threads V5 12
13 Primeiro Exemplo: 2 threads Primeiro exemplo: 2 threads programa cria 2 threads da classe Printer método comportamento: Print classe Printer construtor recebe 2 argumentos 1 caracter 1 tempo para dormir método Print loop de 1 a 100 imprime caracter dorme Programação com Objetos Distribuídos (C. Geyer) C# Threads V5 13
14 using System; using System.Threading; class Printer { char ch; int sleeptime; } public Printer(char c, int t) {ch = c; sleeptime = t;} public void Print() { for (int i = 0; i < 100; i++) { Console.Write(ch); Thread.Sleep(sleepTime); } } class Test { } // método de classe Exemplo static void Main() { Printer a = new Printer('.', 10); Printer b = new Printer('*', 100); new Thread(new ThreadStart(a.Print)).Start(); // a.print: arg. de ThreadStart new Thread(new ThreadStart(b.Print)).Start(); // Start: sobre objeto Thread } // programa executa até as 2 threads terminarem // chamada do sleep(): pela classe Programação com Objetos Distribuídos (C. Geyer) C# Threads V5 14
15 Informática Estados de uma Thread Unstarted logo após ser criada (antes do Start() ) Running após ser ativada (Start() ) após método Resume() Suspended Stopped após método Suspended() após método Abort() Não pode mais ser ativada Estados de uma Thread Programação com Objetos Distribuídos (C. Geyer) C# Threads V5 15
16 Estados de uma Thread Thread t = new Thread(new ThreadStart(P)); // P: método da classe/objeto atual Console.WriteLine("name={0}, priority={1}, state={2}", t.name, t.priority, t.threadstate); t.name = "Worker"; t.priority = ThreadPriority.BelowNormal; t.start(); Thread.Sleep(0); // garante o novo estado Console.WriteLine("name={0}, priority={1}, state={2}", t.name, t.priority, t.threadstate); t.suspend(); Console.WriteLine("state={0}", t.threadstate); t.resume(); Console.WriteLine("state={0}", t.threadstate); t.abort(); Thread.Sleep(0); Console.WriteLine("state={0}", t.threadstate); Output name=, priority=normal, state=unstarted name=worker, priority=belownormal, state=running state=suspended state=running state=stopped Programação com Objetos Distribuídos (C. Geyer) C# Threads V5 16
17 Prioridades Prioridades de uma thread válidas dentro do processo que contem a thread nenhuma relação entre prioridades de threads de processos distintos uma thread com prioridade mais baixa só recebe cpu aplicação se as threads de prioridade mais alta estiverem bloqueadas observação: threads do mesmo processo garantir que thread de atendimento a usuário tenha tempo de resposta rápido ( imediato ) thread com mais alta prioridade que threads de background Programação com Objetos Distribuídos (C. Geyer) C# Threads V5 17
18 Método Join Método Join função opção esperar pelo fim de uma thread método bloqueante esperar até certo tempo (argumento) Exemplo (aseguir) thread Main espera pelo final da thread Test a impressão de end será feita após o final de Test Programação com Objetos Distribuídos (C. Geyer) C# Threads V5 18
19 using System; using System.Threading; Exemplo com join class Test { static void P() { for (int i = 1; i <= 20; i++) { Console.Write('-'); Thread.Sleep(100); } } } static void Main() { Thread t = new Thread(new ThreadStart(P)); Console.Write("start"); t.start(); t.join(); Console.WriteLine("end"); } Output start end Programação com Objetos Distribuídos (C. Geyer) C# Threads V5 19
20 Sincronização: exclusão mútua Sincronização: exclusão mútua comando lock formato lock(variable) Statement Variable: de qualquer classe Statement: simples ou bloco ({...}) similar ao bloco synchronized de Java Programação com Objetos Distribuídos (C. Geyer) C# Threads V5 20
21 Sincronização: exclusão mútua Sincronização: exclusão mútua comando lock semântica similar ao lock (mutexbegin/end) tradicional inicialmente lock está livre (aberto) primeira thread a passar pelo lock atomicamente coloca o lock em fechado enquanto lock fechado outras threads ficarão bloqueadas até lock ser aberto lock é aberto quando a thread termina Statement Programação com Objetos Distribuídos (C. Geyer) C# Threads V5 21
22 Informática Example Esqueleto de classe conta bancária class Account { Sincronização: exclusão mútua // this class should behave like a monitor long val = 0; public void Deposit(long x) { // only 1 thread at a time may execute this statement lock (this) { val += x; } } } public void Withdraw(long x) { lock (this) { val -= x; } } Programação com Objetos Distribuídos (C. Geyer) C# Threads V5 22
23 Informática Classe Monitor lock(v) Statement é uma abreviação para bloco de c Classe Monitor Monitor.Enter(v); try { Statement } finally { Monitor.Exit(v); } A classe Monitor possui 2 métodos Enter(Object): semântica de lock Exit(Object): semântica de unlock Programação com Objetos Distribuídos (C. Geyer) C# Threads V5 23
24 Classe Monitor Classe Monitor o bloco try-catch com finally garante que o unlock (Monitor.Exit), ou mutexend, será sempre executado Liberando o lock Programação com Objetos Distribuídos (C. Geyer) C# Threads V5 24
25 Wait e Pulse Wait e Pulse métodos da classe Monitor semântica clássica primitivas Wakeup e Signal dos monitores objetos lockedvar (ver abaixo) comportam-se como variáveis de condição qualquer tipo Programação com Objetos Distribuídos (C. Geyer) C# Threads V5 25
26 Wait e Pulse Wait e Pulse Monitor.Wait(lockedVar) bloqueia chamador incondicionalmente similar a wait() de Java Monitor.Pulse(lockedVar) acorda uma thread bloqueada em lockedvar similar a notify() de Java Threads Monitor.PulseAll(lockedVar) acorda todas as threads bloqueadas em lockedvar similar a notifyall() de Java Threads Programação com Objetos Distribuídos (C. Geyer) C# Threads V5 26
27 Thread A Informática Descrição A chega no lock e prossegue porque o lock está livre B chega no lock e fica bloqueado porque o lock está preso A bloqueia-se ao chamar o método Wait(), liberando o lock B prossegue pois o agora o lock está aberto B acorda A com o método Pulse() A tenta obter o lock, mas falha pois B ainda está com ele B atinge o final da seção crítica liberando o lock A prossegue finalmente Thread B Wait e Pulse lock(v) { lock(v) { Monitor.Wait(v); Monitor.Pulse(v); } } Programação com Objetos Distribuídos (C. Geyer) C# Threads V5 27
28 Questões Questões Qual a semântica do Pulse e PulseAll com relação ao lock, isto é, quem fica com o lock? O acordado ou o que acorda? Quem é acordado entre os que estão dormindo? Fila FIFO? Ou qualquer um? A fila de entrada no lock é FIFO? A variável (objeto) do Wait e do Pulse pode ser diferente da variável do lock? Funcionando como variáveis de condição Programação com Objetos Distribuídos (C. Geyer) C# Threads V5 28
29 Exemplo: buffer sincronizado Exemplo: buffer sincronizado Problema clássico do produtor/consumidor uma classe que implementa um servidor de buffer atributos principal: um buffer de caracteres tamanho finito Put( A ) Buffer C = Get() Cliente 1 Cliente 2 A Cliente 3 Programação com Objetos Distribuídos (C. Geyer) C# Threads V5 29
30 Informática Exemplo: buffer sincronizado API método Put() clientes colocam 1 char no buffer Exemplo: buffer sincronizado caso buffer cheio, cliente deve ficar bloqueado método Get() aguarda 1 Get() (ver abaixo) clientes retiram 1 char do buffer caso buffer vazio, cliente deve ficar bloqueado aguarda 1 Put() Programação com Objetos Distribuídos (C. Geyer) C# Threads V5 30
31 Exemplo: buffer sincronizado Exemplo: buffer sincronizado implementação Put() e Get() seção crítica (lock) cobre todo o código do método cada um acorda o outro via o Pulse() incondicionalmente Pulse() é não bloqueante sinal é perdido se ninguém está bloqueado Put() cliente dorme via Wait() se buf cheio: n igual a size libera lock para outro cliente Programação com Objetos Distribuídos (C. Geyer) C# Threads V5 31
32 Exemplo: buffer sincronizado Exemplo: buffer sincronizado implementação Get() cliente dorme via Wait() caso buf vazio: n igual a zero libera lock para outro cliente Programação com Objetos Distribuídos (C. Geyer) C# Threads V5 32
33 Exemplo: buffer sincronizado class Buffer { const int size = 4; char[] buf = new char[size]; int head = 0, tail = 0, n = 0; } public void Put(char ch) { lock(this) {}{ while (n == size) Monitor.Wait(this); buf[tail] = ch; tail = (tail + 1) % size; n++; Monitor.Pulse(this); } } public char Get() { lock(this) {}{ while (n == 0) Monitor.Wait(this); char ch = buf[head]; head = (head + 1) % size; n--; } } Monitor.Pulse(this); return ch; If producer is faster Put Put Put Put Get Put Get... If consumer is faster Put Get Put Get... Programação com Objetos Distribuídos (C. Geyer) C# Threads V5 33
34 Desempenho Comparação Java X C# ênfase no desempenho de métodos básicos resultados similares em alguns casos, vantagem para Java por Rodrigo Luque, aluno do CIC- em Programação com Objetos Distribuídos (C. Geyer) C# Threads V5 34
35 Desempenho Comparação C/Posix X C# 3 trabalhos em SOII, Comparação de desempenho Criação e join, mutex e semáforo C/Posix x C# Em 1 TF: C em Linux Ubuntu e C# em Windows 7 Grande vantagem para C/Posix Programação com Objetos Distribuídos (C. Geyer) C# Threads V5 35
36 Informática Resumo Pacote Threading Classe Thread Atributos similares aos de Java Prioridade Nome Métodos similares aos de Java Start, Join, Sleep,... Criação Somente por instanciação Resumo Comportamento dado por método qualquer passado na instanciação Programação com Objetos Distribuídos (C. Geyer) C# Threads V5 36
37 Informática Resumo Sincronização Por conceito de monitor Bloco lock Similar ao bloco synchronized de Java Oferece exclusão mútua Sinalização Por wait/pulse Similar a wait/notify de Java Sem variáveis de condição Resumo Programação com Objetos Distribuídos (C. Geyer) C# Threads V5 37
38 Exercícios Exercícios 1) Compare os pacotes de threads para Java e C#: ao menos 3 itens com diferenças e 2 com similaridades 2) Exemplo Buffer: analise o comportamento do sistema caso o número de clientes seja maior que 2 2 ou mais produtores (Put()) 2 ou mais consumidores (Get()) Programação com Objetos Distribuídos (C. Geyer) C# Threads V5 38
39
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 maisProgramação concorrente em Java
Programação concorrente em Java Paulo Sérgio Almeida Grupo de Sistemas Distribuídos Departamento de Informática Universidade do Minho 2007/2008 c 2000 2007 Paulo Sérgio Almeida Programação concorrente
Leia maisProgramação Concorrente com Thread Java. Luiz Affonso Guedes Sistemas Distribuidos
Programação Concorrente com Thread Java Luiz Affonso Guedes Sistemas Distribuidos Definições Básicas Threads são sub-procesos no sistema operacional. É menos custoso gerenciar threads do que processos.
Leia maisThreads em Java. Java Threads. Java Componentes: JVM JVM:
Threads em Java (Aula 17) Java Threads Difícil de classificar com user thread ou kernel thread As threads Java são gerenciadas pela JVM. Threads em Java podem ser criadas das seguintes maneiras: Fazendo
Leia mais[Magee 1999] Concurrency State Models and Java Programs, Jeff Magee, Jeff Kramer, John Wiley 1999.
Programação Concorrente [Magee 1999] Concurrency State Models and Java Programs, Jeff Magee, Jeff Kramer, John Wiley 1999. [Gosling] The Java Language Specification James Gosling, Bill Joy and Guy Steele,
Leia maisTratamento de Exceções, Multithreads e arquivos (em Java) Programação Orientada a Objetos
Tratamento de Exceções, Multithreads e arquivos (em Java) Programação Orientada a Objetos Nesta unidade vamos ver os últimos assuntos de interesse em java. O primeiro deles, bem simples, é o tratamento
Leia maisSó podem ser executados por uma Thread que detenha o lock do objecto
Transferência de controle entre Threads Os métodos wait(), notify() notifyall(), da classe Object, Permitem a transferência de controlo de uma Thread para outra. Só podem ser executados por uma Thread
Leia maisMétodos Sincronizados
Métodos Sincronizados 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 maisThreads. O que é uma Thread? Paralelismo
Threads em Java 1 O que é uma Thread? Paralelismo Threads Multi- threading é o mecanismo de concorrência suportado explicitamente pela linguagem Java. Os mecanismos de gerenciamento e sincronização de
Leia mais[Magee 1999] Concurrency State Models and Java Programs, Jeff Magee, Jeff Kramer, John Wiley 1999.
Cap. IV - Programação Concorrente [Magee 1999] Concurrency State Models and Java Programs, Jeff Magee, Jeff Kramer, John Wiley 1999. [Gosling] The Java Language Specification James Gosling, Bill Joy and
Leia maisSistemas Operacionais
Sistemas Operacionais Processos Semáforos Semáforos Mecanismo de sincronização que não requer espera ocupada Dijkstra propôs usar uma variável inteira para contar o n o de WAKEUPs para uso futuro Menos
Leia maisThreads. Linguagem Java. Adenilso da Silva Simão 17/05/05
17/05/05 Uma thread é uma linha de execução dentro de um programa Conceito de SO Java implementa suporte nativo a threads Duas formas de se implementar Implementando a interface Runnable Deve-se sobrepor
Leia maisSistemas Distribuídos Aula 7
Sistemas Distribuídos Aula 7 Aula passada Atomicidade Test-and-set Locks revisitado Semáforos Dois problemas Aula de hoje Limitação dos semáforos Monitores Variáveis de condição Semântica do signal Sincronização
Leia maisThreads. Leonardo Gresta Paulino Murta
Threads Leonardo Gresta Paulino Murta leomurta@ic.uff.br Aula de hoje Estudaremos a execução em paralelo de programas em Java por meio de Threads Leonardo Murta Threads 2 Por que usar Threads? Threads
Leia maisProgramação Concorrente em Java
Programação Concorrente em Java Prof. Orlando Loques - IC/UFF versão 17-04-2001 Referências: - Programação Concorrente em Java, Sérgio Teixeira de Carvalho & Leonardo N. M. Reis IC-UFF - Ousterhout, J.:
Leia maisUniversidade Federal do Pará Instituto de Ciências Exatas e Naturais Faculdade de Computação
Universidade Federal do Pará Instituto de Ciências Exatas e Naturais Faculdade de Computação SISTEMAS OPERACIONAIS Aula 7 Regiane Kawasaki kawasaki@ufpa.br Slides adaptados da Profa. Sarita Mazzini Bruschi
Leia maisUNIVERSIDADE 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 maisConcorrência em Java. Threads em Java
Concorrência em Java Threads em Java Máquina Virtual Java, Processos e Threads Cada instância da JVM corresponde a um processo do sistema operacional hospedeiro. A JVM não possui o conceito de processos
Leia maisSincronização de Threads
Sincronização de Threads Sistema justo quando cada threadobtém ace so suficiente a recursoslimitadosa fim de progredir razoavelmente Starvation ocorre quando uma ou maisthreadsestão impedidasde obter ace
Leia maisSistemas Operacionais
Sistemas Operacionais Processos Exclusão Mútua Mecanismos para se Obter Exclusão MútuaM Mecanismos de Hardware: Inibição de Interrupções Instrução TSL (Test and Set Lock) Mecanismos de Software: Com Espera
Leia maisTHREADS EM JAVA. George Gomes Cabral
THREADS EM JAVA George Gomes Cabral THREADS Fluxo seqüencial de controle dentro de um processo. Suporte a múltiplas linhas de execução permite que múltiplos processamentos ocorram em "paralelo" (em computadores
Leia maisMúltiplas Linhas de Execução Java (Threads)
Múltiplas Linhas de Execução Java (Threads) SCC0604 - Programação Orientada a Objetos Prof. Fernando V. Paulovich http://www.icmc.usp.br/~paulovic paulovic@icmc.usp.br Instituto de Ciências Matemáticas
Leia maisJava Threads. Introdução
Java Threads mleal@inf.puc-rio.br 1 Introdução O único mecanismo de concorrência suportado explicitamente pela linguagem Java é multi-threading. threading. Os mecanismos de gerenciamento e sicronização
Leia maisPROGRAMAÇÃO ORIENTADA A OBJETOS. Aula 11 - Threads e Concorrência
Aula 11 - Threads e Concorrência Conteúdo Programático desta aula Apresentar os Conceitos de Threads, Concorrência e Sincronização. Verificar a aplicabilidade destes conceitos no mercado, bem como sua
Leia maisPUC-SP Depto. de Ciência da Computação
Mensagens Concorrentes Prof. Dr. Italo Santiago Vega Julho de 2000 PUC-SP Depto. de Ciência da Computação www.pucsp.br/~italo Introdução Concorrência libera a modelagem de interações entre objetos tradicionalmente
Leia maisSincronização de Processos (2)
Sincronização de Processos (2) Tipos de Soluções (cont.) Soluções de Hardware Inibição de interrupções Instrução TSL (apresenta busy wait) Soluções de software com busy wait Variável de bloqueio Alternância
Leia maisMonitores. Setembro de Monitores
Setembro de 2010 mecanismo de sincronização clássico referência influência de conceitos de programação estruturada C. A. R. Hoare, Monitors: an operating system structuring concept, Communications of the
Leia mais(Aula 17) Threads em Java
(Aula 17) Threads em Java Difícil As Threads thread threads de emjava classificar sãogerenciadaspelajvm. podemser com user criadasdas thread ou kernel Profa. Patrícia A seguintesmaneiras: Fazendo extend
Leia maisFundamentos 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 maisMétodos Sincronizados
Programação Paralela e Distribuída Ordenação e Sincronização em Java Prof. Msc. Marcelo Iury de Sousa Oliveira marceloiury@gmail.com http://sites.google.com/site/marceloiury/ Métodos Sincronizados Todo
Leia maisOO Engenharia Eletrônica
OO Engenharia Eletrônica - Programação em C/C++ Slides 18: Introdução à programação multi-thread. Thread: linha de execução de um processo. Multi-thread: execução de múltiplas threads em um processo. Prof.
Leia maisUtilizando Threads em Java
Utilizando Threads em Java CCComp - DCE - UESB Resumo sobre os threads em Java Estrutura Geral das Implementações CCComp - DCE - UESB class ProcessoA extends Thread {... }//fim da classe ProcessoA class
Leia maisThreads e Concorrência em Java (Material de Apoio)
Introdução Threads e Concorrência em Java (Material de Apoio) Professor Lau Cheuk Lung http//www.inf.ufsc.br/~lau.lung INE-CTC-UFSC A maioria dos programas são escritos de modo seqüencial com um ponto
Leia maisProblema do Produtor -Consumidor. Solução por semáforos
Problema do Produtor -Consumidor Solução por semáforos Autoria Autores alunos da disciplina SO II Local Instituto de Informática UFRGS Versão v7 agosto de 2008 por C. Geyer Visão geral do assunto...2 Conceito...3
Leia maisSincronização de Processos (2)
Sincronização de Processos (2) Tipos de Soluções (cont.) Soluções de Hardware Inibição de interrupções Instrução TSL (apresenta busy wait) Soluções de software com busy wait Variável de bloqueio Alternância
Leia maisMonitores. Programação Concorrente September 11, 2012
September 11, 2012 mecanismo de sincronização clássico Brinch-Hansen e Hoare, circa 1974 nível de proteção diferente do apresentado em outras propostas o que são? construção sintática: parte da linguagem
Leia maisGabriel de Oliveira Ramos Roland Teodorowitsch - Orientador
THREADS EM JAVA Gabriel de Oliveira Ramos Roland Teodorowitsch - Orientador Universidade Luterana do Brasil (Ulbra) Curso de Ciência da Computação Campus
Leia maisUtilização de threads em Java
Universidade Federal do Rio de Janeiro IM/DCC Utilização de threads em Java Prof. Austeclynio Pereira e-mail: austeclyniop@posgrad.nce.ufrj.br Ciclo de vida de uma thread nascimento start notify notifyall
Leia maisSSC0640 Sistemas Operacionais I
SSC0640 Sistemas Operacionais I 8ª Aula Comunicação e Sincronismo de Processos Profa. Sarita Mazzini Bruschi sarita@icmc.usp.br Slides adaptados de Marcos José Santana / Regina H. C. Santana / Luciana
Leia maisFundamentos de Programaçã. ção Concorrente
Java 2 Standard Edition Fundamentos de Programaçã ção Concorrente Helder da Rocha www.argonavis.com.br 1 Programação concorrente O objetivo deste módulo é oferecer uma introdução a Threads que permita
Leia maisSistemas Distribuídos Aula 5
Sistemas Distribuídos Aula 5 Aula passada Sincronização Race condition Região crítica Locks Algoritmo de Peterson Aula de hoje Atomicidade test-and-set Locks revisitado Semáforos Dois problemas Atomicidade
Leia maisProf. Silvana Rossetto 9 de julho de DCC/IM/UFRJ
Computação Concorrente (MAB117) Gabarito Segunda Prova Prof. Silvana Rossetto 9 de julho de 2015 1 DCC/IM/UFRJ Questão 1 (2,5 pts) O código Java abaixo implementa uma solução para o problema do barbeiro
Leia maisCarlos Eduardo Batista Centro de Informática - UFPB
Carlos Eduardo Batista Centro de Informática - UFPB bidu@ci.ufpb.br Introdução Sintaxe e Semântica Exclusão Mútua Variáveis Condicionais Tipos de Sinalização Técnicas de Sincronização Monitores em C++
Leia maisComunicação entre Processos
Programação Paralela e Distribuída Ordenação e Sincronização Prof. Msc. Marcelo Iury de Sousa Oliveira marceloiury@gmail.com http://sites.google.com/site/marceloiury/ Comunicação entre Processos Processos
Leia maisRoteiro. BC1518-Sistemas Operacionais. Prof. Marcelo Z. do Nascimento Semáforos
BC1518-Sistemas Operacionais Sincronização de Processos (aula 6 Parte 2) Prof. Marcelo Z. do Nascimento marcelo.nascimento@ufabc.edu.br Roteiro Semáforos Problemas clássicos de comunicação entre processos
Leia maisTratamento de Exceção. Programação Orientada a Objetos Java (Rone Ilídio)
Tratamento de Exceção Programação Orientada a Objetos Java (Rone Ilídio) Tratamento de exceção Exceção é uma contração de Evento de Exceção Evento de exceção impede a execução normal de um programa Quando
Leia maisComputação Paralela. Especificação de Concorrência/Paralelismo. João Luís Ferreira Sobral Departamento do Informática Universidade do Minho
Computação Paralela Especificação de Concorrência/Paralelismo João Luís Ferreira Sobral Departamento do Informática Universidade do Minho Outubro 2005 Especificação de Concorrência/Paralelismo Baseada
Leia maisSistemas Operacionais. Condição de corrida e Região crítica
Sistemas Operacionais Condição de corrida e Região crítica Região Crítica Parte do código que acessa a área compartilhada Condição em que dois processos lêem e escrevem um dado compartilhado e o resultado
Leia maisProgramação Orientada a Objetos em Java. Threads Threads Threads. Threads
Universidade Federal do Amazonas Departamento de Ciência da Computação IEC481 Projeto de Programas Programação Orientada a Objetos em Java Threads Threads Threads Threads Professor: César Melo Slides baseados
Leia maisExecução concorrente em Java: threads. O que são Threads? Criação e métodos de Threads Sincronização Comunicação entre Threads
Execução concorrente em Java: threads O que são Threads? Criação e métodos de Threads Sincronização Comunicação entre Threads Programação concorrente: introdução O mundo real funciona concorrentemente:
Leia mais[Magee 1999] Concurrency State Models and Java Programs, Jeff Magee, Jeff Kramer, John Wiley 1999.
Cap. IV - Programação Concorrente [Magee 1999] Concurrency State Models and Java Programs, Jeff Magee, Jeff Kramer, John Wiley 1999. [Gosling] The Java Language Specification James Gosling, Bill Joy and
Leia maisExclusã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 maisTipos de Soluções (cont.)
Sincronização de Processos (2) Tipos de Soluções (cont.) Soluções de Hardware Inibição de interrupções Instrução TSL (apresenta busy wait) Soluções de software com busy wait Variável de bloqueio Alternância
Leia maisComunicação entre processos
Universidade Federal do Acre Centro de Ciências Exatas e Tecnológicas Bacharelado em Sistemas de Informação Comunicação entre processos Macilon Araújo Costa Neto macilon@ufac.br Capítulo 2 do livro do
Leia maisProgramação Orientada a Objetos. Concorrência
Programação Orientada a Objetos Concorrência Cristiano Lehrer, M.Sc. Níveis de concorrência: Introdução Nível de instrução de máquina: Executando duas ou mais instruções de máquina simultaneamente. Nível
Leia maisSistemas Operacionais. Universidade Federal de Minas Gerais. Aula 6. Primitivas de Sincronização
Aula 6 Primitivas de Sincronização Primitivas de Sincronização Lock / Unlock Sleep / Wakeup Semáforo Monitores Mensagens Sincronização no Linux Lock / Unlock Funcionam como as primitivas vistas até agora
Leia maisSistemas Operacionais Concorrência. Carlos Ferraz Jorge Cavalcanti Fonsêca
Sistemas Operacionais Concorrência Carlos Ferraz (cagf@cin.ufpe.br) Jorge Cavalcanti Fonsêca (jcbf@cin.ufpe.br) POSIX Threads... ... POSIX Threads (2) Exercício } Executando n vezes e verificando a ordem
Leia maisProgramaçã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 maisConcorrência. Condições de Corrida. 5a. Tentativa. Dificuldades: Sincronização de Processos (2) Aula 11 Profa. Patrícia Dockhorn Costa
Concorrência Dificuldades: Sincronização de Processos (2) Aula 11 Profa. Patrícia Dockhorn Costa Compartilhamento de recursos globais. Gerência de alocação de recursos. Localização de erros de programação
Leia maisProgramação Orientada a Objetos SANTOS, Rafael (PLT)
Programação Orientada a Objetos SANTOS, Rafael (PLT) Possibilita atribuições em sequência na mesma instrução Retorna o valor atribuído Atribuições compostas: incluem a própria variável: +=, *=, -=, etc
Leia maisUniversidade da Beira Interior. Sistemas Distribuídos. Folha 4-1. Threads Daemon Threads
Threads Daemon Threads Folha 4-1 Uma Thread Daemon é uma Thread, geralmente usada para executar serviços em background, que tem a particularidade de terminar automaticamente após todas as Threads não Daemon
Leia maisINE5645 Programação Paralela e Distribuída - Prova 1 22/10/2012 Aluno: Parte 1 Controle de Concorrência Conceitos Básicos (2,5)
INE5645 Programação Paralela e Distribuída - Prova 1 22/10/2012 Aluno: Parte 1 Controle de Concorrência Conceitos Básicos (2,5) 1.1 (Verdade/Falso) Itens próprios de processos são: Espaço de endereçamento,
Leia maisSincronização e Comunicação de/entre Processos. Na Aula Anterior... Nesta Aula. Comunicação entre Processos. Pipes 07/09/2016
GSI018 Sistemas Operacionais 07/09/2016 Sincronização e Comunicação de/entre Processos Universidade Federal de Uberlândia Faculdade de Computação Prof. Dr. rer. nat. Daniel D. Abdala Na Aula Anterior...
Leia maisSincronizaçã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 maisMULTITHREADING. Prof.: Michele Nasu Tomiyama Bucci
MULTITHREADING Prof.: Michele Nasu Tomiyama Bucci Introdução O corpo humano realiza uma grande variedade de operações paralelamente, ou concorrentemente. Os computadores também realiza operações concorrentemente.
Leia maisUnidade 3. Controle de Concorrência. Primitivas de Programação Concorrente Clássica
Unidade 3 Controle de Concorrência Primitivas de Programação Concorrente Clássica Programação Concorrente A abstração de programação concorrente é o estudo de sequênciasde execução intercaladas, de instruções
Leia maisNotas de Aula 09: Tratamento de exceções
Notas de Aula 09: Tratamento de exceções Objetivos da aula: Compreender o conceito de exceção Aprender a tratar exceções nos programas Entender a hierarquia das exceções Criar e lançar uma exceção proprietária
Leia maisComunicação entre processos (2)
Comunicação entre processos (2) Pedro Cruz EEL770 Sistemas Operacionais Lembretes Proposta de trabalho Enviar para cruz@gta.ufrj.br Prazo: dia 02 de abril 2 Aula passada Comunicação entre processos é útil
Leia maisTratamento de Exceção. Tratamento de Exceções. Vantagens de TE. Exemplos de Exceções. Exemplo: Divide1 (sem TE)
DCC / ICEx / UFMG Tratamento de Exceção Tratamento de Exceções Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo Uma exceção é uma indicação de problema na execução do programa Exceção foge ao fluxo
Leia maisProgramação Concorrente em java - Exercícios Práticos Abril 2004
Programação Concorrente em java - Exercícios Práticos Abril 2004 1. Introdução As threads correspondem a linhas de controlo independentes no âmbito de um mesmo processo. No caso da linguagem JAVA, é precisamente
Leia maisMultithreading. Programação Orientada por Objectos com Java. Ademar Aguiar. MRSC - Programação em Comunicações
Programação Orientada por Objectos com Java www.fe.up.pt/~aaguiar ademar.aguiar@fe.up.pt 1 Multithreading 154 Objectivos Ser capaz de: Explicar os conceitos básicos de multithreading Criar threads múltiplos
Leia maisFerramentas 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 maisDesenvolvimento de Aplicações Distribuídas
Transação e Controle de Concorrência Pontifícia Universidade Católica de Minas Gerais Instituto de Ciências Exatas e Informática DAD (2019/01) Tópicos Apresentação da disciplina Introdução Desafios e características
Leia maisSistemas Operacionais. Comunicação entre processos
Sistemas Operacionais Comunicação entre processos Comunicação entre Processos Os SO s hoje são multi-tarefa Alguns processos precisam cooperar para cumprir seus objetivos Sugestões de implementação? Exemplos
Leia maisProgramação Orientada a Objectos - P. Prata, P. Fazendeiro
Quando um programa viola as restrições semânticas da linguagem, a JVM assinala um erro ao programa, sob a forma de exceção. Uma exceção é um erro recuperável O controlo da execução do programa é transferido
Leia maisSistemas 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 maisConcorr^encia. A classe Thread (java.lang)
Concorr^encia I Concorr^encia em Java I MultiThreadin I sincronizac~ao I interface Runnable I rupos de threads I exemplos Complementos de Proramac~ao e Aloritmos { LEIC A classe Thread (java.lan) Os threads
Leia maisSISTEMAS 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 maisDEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO SISTEMAS OPERACIONAIS I SEM/12 PROVA I. Tempo de Prova: 100 minutos / Escore Máximo: 300 pontos
DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO SISTEMAS OPERACIONAIS I - 1 0 SEM/12 PROVA I Tempo de Prova: 100 minutos / Escore Máximo: 300 pontos Aluno: G A B A R I T O Escore: Responda às perguntas de forma
Leia maisUniversidade Federal do Pará Instituto de Ciências Exatas e Naturais Faculdade de Computação
Universidade Federal do Pará Instituto de Ciências Exatas e Naturais Faculdade de Computação SISTEMAS OPERACIONAIS Aulas 6 Regiane Kawasaki kawasaki@ufpa.br Slides adaptados da Profa. Sarita Mazzini Bruschi
Leia maisLabSO Gerência de Processos. Retrospectiva da aula passada... Na aula passada... Na aula passada...
LabSO Gerência de Processos Retrospectiva da aula passada... AULA 4 Flávia Maristela (flavia@flaviamaristela.com) Romildo Martins (romildo@romildo.net) Na aula passada... Processos Estados do processo
Leia maisProgramaçã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 maisQuando um programa viola as restrições semânticas da linguagem, a JVM assinala um erro ao programa, sob a forma de exceção.
6 Exceções Quando um programa viola as restrições semânticas da linguagem, a JVM assinala um erro ao programa, sob a forma de exceção. Uma exceção é um erro recuperável - O controlo da execução do programa
Leia maisProgramação de Computadores II TCC /Turma A 1
Programação de Computadores II TCC 00.174/Turma A 1 Professor Leandro A. F. Fernandes http://www.ic.uff.br/~laffernandes Conteúdo: Tratamento de exceções Material elaborado pelos profs. Anselmo Montenegro
Leia maisMC504 - Sistemas Operacionais
MC504 - Sistemas Operacionais Algoritmo da Padaria Problema dos Produtores e Consumidores Primitivas de Sincronização Islene Calciolari Garcia Primeiro Semestre de 2014 Sumário 1 Algoritmo da Padaria 2
Leia maisClasses e Objetos. Sintaxe de classe em Java
Classes e Objetos Classes e Objetos A Programação Orientada a Objetos (POO) é uma técnica de programação que se baseia na construção de classes e utilização de objetos. Os objetos são formados por dados
Leia maisArquitecturas Paralelas I Computação Paralela em Larga Escala LESI - 4º Ano. Especificação de Concorrência/Paralelismo
Arquitecturas Paralelas I Computação Paralela em Larga Escala LESI - 4º Ano Especificação de Concorrência/Paralelismo (gec.di.uminho.pt/lesi/ap10203/aula05concorrência.pdf) João Luís Ferreira Sobral Departamento
Leia maisSistemas Operacionais. Prof. André Y. Kusumoto
Sistemas Operacionais Prof. André Y. Kusumoto andrekusumoto.unip@gmail.com Fundamentos Paradigma do produtor-consumidor Sincronização de Processos Produtor while (count == BUFFER_SIZE) ; //no-op //adiciona
Leia maisMonitores. Paulo Sérgio Almeida. Grupo de Sistemas Distribuídos Departamento de Informática Universidade do Minho
Monitores Paulo Sérgio Almeida Grupo de Sistemas Distribuídos Departamento de Informática Universidade do Minho c 2006 2008 Paulo Sérgio Almeida Monitores 1 Problemas com semáforos Semáforo é uma primitiva
Leia maisProgramação Concorrente/Paralela em Java
em Java Resolução do Exercício 1 public class Cont extends Thread { protected int ct; public Cont() { ct=0; public synchronized void inc() { ct++; public void run() { for (int i=0; i
Leia maisSistemas Distribuídos INF
Sistemas Distribuídos INF2545 2015.1 alternativas p/ concorrência 1. multithreading várias linhas de execução compartilham globais com escalonamento preemptivo surgido de estudos de sistemas operacionais
Leia maisSistemas Operacionais
Sistemas Operacionais I Índice 2 Processos... 1 2.2.5 Semáforos... 1 2.2.6 Monitores... 2 2.2.7 Passagem de Mensagens... 5 2 Processos 2.2.5 Semáforos Para resolver este problema, Dijkstra propôs em 1965
Leia maisGRUPO: Rafael Igor Vanderlei Vieira
GRUPO: Rafael Igor Vanderlei Vieira C# INTRODUÇÃO Paradigmas: Orientado a objeto; Estruturado; Imperativo; Surgimento: 2002. Criador: Anders Hejlsberg. Principais Compiladores:.NET Framework (Windows),
Leia maisTipos, Literais, Operadores
Tipos, Literais, Operadores Identificadores São palavras utilizadas para nomear variáveis, métodos e classes Na linguagem Java, o identificador sempre começa por letra, sublinhado(_) ou cifrão ($) Não
Leia maisTipos, Literais, Operadores
Tipos, Literais, Operadores Identificadores São palavras utilizadas para nomear variáveis, métodos e classes Na linguagem Java, o identificador sempre começa por letra, sublinhado(_) ou cifrão ($) Não
Leia mais