PROGRAMAÇÃO PARALELA E DISTRIBUÍDA Fundamentos. Prof. Cesar Augusto Tacla

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

Download "PROGRAMAÇÃO PARALELA E DISTRIBUÍDA Fundamentos. Prof. Cesar Augusto Tacla http://www.dainf.ct.utfpr.edu.br/~tacla"

Transcrição

1 PR UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ PROGRAMAÇÃO PARALELA E DISTRIBUÍDA Fundamentos Prof. Cesar Augusto Tacla JAVAProgParSD/0030-ProgParalelaDistribuida.ppt 1. Introdução a. Definição de sistemas paralelos e distribuídos b. Conceitos: programa, processo e thread c. Criação de threads d. Yield, Sleep, Join e. Prioridade entre threads f. Compartilhamento de memória g. Máquina de estados de uma thread Sumário 2. Problemas de concorrência a. Race condition b. Vivacidade (deadlock, livelock, starvation) c. Soluções (mutex, semáforos, monitor) 2

2 REFERÊNCIAS BIBLIOGRÁFICAS (Coulouris et al., 2003) George Coulouris, Jean Dollimore, Tim Kindberg. Distributed Systems - Concepts and Design, Addison Wesley Publ. Comp., 3a edição, (Tanenbaum & Steen, 2002) Andrew S. Tanenbaum, Maarten van Steen. Distributed Systems, Prentice-Hall International, (Garg, 2004) Vijay K. Garg. Concurrent and Distributed Computing in Java, Wiley Inter-Science, 2004, 309p. Concurrent programming in Java : design principles and patterns - 2nd ed / c Livros - Acervo LEA, Douglas. Concurrent programming in Java: design principles and patterns. 2nd ed. Reading: Addison-Wesley, c p. (Java series) ISBN Número de Chamada: L433c 2. ed. 3 Sumário 1 a Definição de sistemas paralelos e distribuídos 4

3 Sistema Paralelo Múltiplos processadores conectados por uma memória compartilhada Memória Compartilhada barramento CPU CPU CPU CPU MEM LOCAL MEM LOCAL MEM LOCAL MEM LOCAL 5 Sistema Distribuído Múltiplos processadores conectados por uma rede de comunicação Troca de mensagens Rede de Comunicação Segundo (Garg, 2004), são sistemas compostos por múltiplos processadores conectados por uma rede de comunicação, sendo a rede de comunicação uma LAN (Ethernet) ou WAN (Internet). Neste tipo de sistema os processadores se comunicam por troca de mensagens (não por memória compartilhada) 6

4 Necessidades Sistemas paralelos e distribuídos Necessitam de ferramentas e técnicas Distintas das utilizadas em software sequencial 7 Distribuído x Paralelo (1) Em relação ao hardware, Se pensarmos em desempenho, é melhor termos sistemas distribuídos ou paralelos? R: combinação Computadores multiprocessados conectados por uma rede Rede de Comunicação Memória Compartilhada CPU CPU CPU CPU MEM LOCAL MEM LOCAL MEM LOCAL MEM LOCAL 8

5 Distribuído x Paralelo (2) Por que não sistemas completamente paralelos? Escalabilidade Modularidade e heterogeneidade Compartilhamento de dados Compartilhamento de recursos Estrutura distribuída por si Confiabilidade Baixo custo 9 Distribuído x Paralelo (3) Por que não sistemas completamente distribuídos? Melhor desempenho no processamento local É mais rápido atualizar uma memória local do que enviar uma mensagem para outro processador, especialmente quando o valor de uma variável deve ser comunicado para vários processadores 10

6 Distribuído x Paralelo (4) Em relação ao software (API programação), Pode ser independente do hardware? Na realidade, reflete a estrutura de hardware Modelo de objetos distribuídos (ex. RMI) tem-se Processos que se comunicam por mensagens Processos que podem ter várias threads Threads que se comunicam por memória compartilhada Rede de Comunicação Memória Compartilhada CPU CPU CPU CPU MEM MEM MEM MEM LOCAL LOCAL LOCAL LOCAL 11 Sumário 1 b Conceitos: programa, processo e thread 12

7 Programa, processo, thread Programa conjunto de instruções numa linguagem de alto nível ou de máquina Processo resulta da execução do programa, tem um ambiente de execução autocontido e privado. O que o usuário enxerga como aplicação ou sistema, normalmente é composto por vários processos Sequencial = 1 processo Concorrente = vários processos Processo 1 programa execução Processo 2 Processo n 13 Programa, processo, thread Thread são chamadas de processos peso-pena Tanto threads como processos provêm um ambiente de execução ou contexto de execução Multithread é uma característica essencial de Java Toda aplicação possui pelo menos uma thread main Threads compartilham o mesmo "espaço de endereçamento (memória) É mais rápido chavear a execução entre threads do que entre processos. Threads compartilham recursos do processo: memória e arquivos abertos. 14

8 Programa, processo e thread Uma thread recebe recursos próprios durante a execução: uma pilha (stack) de execução para poder chamar métodos, passar parâmetros, alocar variáveis locais um "Program Counter" Estes elementos formam o contexto de execução da thread 15 Programa, processo, thread Stack: armazena o estado de cada invocação de método: variáveis locais, argumentos, retorno e dispatch de exceções. São vários frames empilhados stack overflow Heap: armazena instâncias de objetos criadas em tempo de execução. Também armazena arrays OutOfMemoryError Processos que compartilham código e dados são chamados de threads, são também chamados de processos lightweight Program Counter Register PCR Stack Thread 1 PCR Stack Thread 2 heap Method area PCR Stack Thread 3 Contexto de execução de uma thread Compartilhado pelas threads Method area: informações da classe (nome, modificadores), superclasse, atributos e seus modificadores, atributos estáticos com valores, métodos e seus modificadores, bytecodes 16

9 Exemplos de threads Threads demos Links na página do curso 17 Sumário 1 c Criação de Processos/Threads 18

10 UNIX, C++ Criação de processos programa pid = fork(); if (pid == 0) { cout << processo filho ; else cout << processo pai ; Processo pai pid = fork(); if (pid == 0) { cout << processo filho ; else cout << processo pai ; Processo filho pid = fork(); if (pid == 0) { cout << processo filho ; else cout << processo pai ; 19 Criação de threads em Java Há 2 métodos Extends Thread Implements Runnable Thread Runnable <<realizes>> MinhaThread +run():void MinhaThread +run():void Possibilita estender outra classe 20

11 Criação de threads em Java Exemplo de criação de Thread por extends public class MinhaThread extends Thread { public void run() { System.out.println( Ola!!!! ); public class Main { public static void main(string[] args) { MinhaThread t = new MinhaThread(); t.start(); :Main new :MinhaThread start() run() 21 Criação de threads em Java Exemplo de criação de Thread por implements public class MinhaThread implements Runnable { public void run() { System.out.println( Ola!!!! ); public class Main { public static void main(string[] args) { MinhaThread t = new MinhaThread(); Thread t2 = new Thread(t); t2.start(); :Main new :MinhaThread start() run() 22

12 Criação de threads em Java Exemplo básico: threads contadoras Código fonte e.jar disponível em Duas threads são criadas, cada uma conta até Os resultados podem aparecer intercalados. Para compilar e executar Ir ao subdiretório src/jthread Salvar o arquivo em Main.java <dir>/jthread/ Lance o shell: executar cmd Posicione no diretório <dir> Compile: javac jthread/main.java Execute: java -cp. jthread/main Para executar somente Ir ao subdiretório dist Salve o arquivo.jar em <dir> Lance o shell: executar cmd Posicione no diretório <dir> Execute: java -jar JThreadContadoras.jar JAVARepositorio\JThreads\JThreadContadoras 23 Exemplo básico: threads contadoras Criação de Threads em Java class MinhaThread implements Runnable { public void run() { // a interface Runnable exige a implementação do método run String name = Thread.currentThread().getName(); System.out.println(name + " rodando"); for (int i=0;i < 1000; i++) { System.out.println(name + ": " + i); System.out.println(name + " FIM ***"); public class Main { public static void main(string[] args) { System.out.println("INICIO DA THREAD MAIN ***"); Thread t1 = new Thread(new MinhaThread(), "thread 1"); Thread t2 = new Thread(new MinhaThread(), "\t\tthread 2"); t1.start(); t2.start(); 24

13 Exemplo básico: threads contadoras Criação de Threads em Java Quem faz o chaveamento de contexto? 25 Criação de threads em Java Exercício 1: modifique o programa das threads contadoras de forma a criá-las estendendo a classe Thread class MinhaThread implements Runnable {... Exercício 2: criar várias threads (> 4) e observar o chaveamento de contexto. 26

14 Sumário 1 d Yield, Sleep e Join 27 YIELD Java THREADS: YIELD suspende a execução da thread atual e permite que outra ocupe o As flechas pontilhadas indicam swap. processador. O label das flechas indicam omotivo do swap: Swap: escalonador do SO; :Main yield(): a chamada ao método causou a mudança. new start() Início do run() t1:minhathread swap yield() new t2:minhathread start() swap yield() Início do run() 28

15 Exemplo de utilização de yield Java THREADS: YIELD class MinhaThread implements Runnable { public void run() { // a interface Runnable exige a implementação do método run String name = Thread.currentThread().getName(); System.out.println(name + " rodando"); for (int i=0;i < 1000; i++) { System.out.println(name + ": " + i); // eh possivel passar o controle para outra thread implicitamente Thread.yield(); System.out.println(name + " FIM ***"); public class Main { public static void main(string[] args) { System.out.println("INICIO DA THREAD MAIN ***"); Thread t1 = new Thread(new MinhaThread(), "thread 1"); Thread t2 = new Thread(new MinhaThread(), "\t\tthread 2"); t1.start(); t2.start(); 29 Java THREADS: YIELD Exercício: no exemplo das threads contadoras, habilite o yield fazendo: java jar JThreadContadoras.jar YIELD 30

16 Java Threads: SLEEP Sleep: suspende a execução da thread por um período Libera o processador para outras threads Faz a thread dormir por milisegundos ou nanosegundos Tempo de sleep não é preciso, depende do SO No exemplo das threads contadoras, cada thread dorme 2s a cada 3 contagens. Execute-o fazendo: java jar JThreadContadoras.jar NO 2000 if (i%3==0) { try { thread.sleep(2000); // dorme 2 seg catch (InterruptedException e) { 31 Java THREADS: SLEEP SLEEP suspende a execução da thread atual por pelo menos x milisegundos e permite que outra ocupe o processador. :Main new start() Início do run() t1:minhathread Timed waiting swap swap new t2:minhathread start() swap sleep(2000) Início do run() 32

17 Java Threads: SLEEP Exercício [JAVA]: faça a simulação de um cruzamento controlado por dois semáforos utilizando apenas sleep para controlar os tempos de verde, amarelo e vermelho. Observe que o sleep fará sinaleiros não sincronizados. Para simplesmente executá-lo, ver próximo slide. Sol. JAVARepositorio\JThreads\JCruzamento-v1 33 Java Threads: SLEEP Para executar o cruzamento fazer: Baixar o.jar de >java -jar JCruzamento.jar Estado SEM1:VERMELHO Estado SEM2:VERDE Estado SEM1:VERDE Estado SEM2:AMARELO Estado SEM2:VERMELHO Estado SEM1:AMARELO Estado SEM2:VERDE... As linhas em destaque mostram que o semáforo SEM1 e o SEM2 ficaram verde ao mesmo tempo!!! 34

18 Java Threads: JOIN Thread.join(): permite que uma thread espere pelo término de duas ou mais threads :Main join (t1, t2) waiting Fim join (t1, t2) new t1:minhathread new t2:minhathread start() start() Início do run() swap Início do run() swap fim t1 fim t2 A thread main fica a espera de t1 e t2 35 Java Threads: JOIN public static void main (String[] args) { System.out.println("INICIO DA THREAD MAIN ***"); Thread t1 = new Thread(new MinhaThread(), "thread 1"); Thread t2 = new Thread(new MinhaThread(), "\t\tthread 2"); t1.start(); t2.start(); try { t1.join(); // a thread main aguarda o término de t1 t2.join(); // a thread main aguarda o término de t2 catch (InterruptedException e) { System.out.println( interrupcao"); System.out.println("*** As duas threads encerraram a contagem ***"); // outras coisas da thread main 36

19 Java Threads: JOIN JOIN: une as execuções das threads No exemplo das threads contadoras, para testar o JOIN, faça: java jar JThreadContadoras.jar NO 2000 JOIN 37 Sumário 1 e Prioridade entre threads 38

20 Prioridade entre threads Qual thread é escolhida para rodar? Depende... da implementação da JVM (ex. se utiliza threads nativas do SO) da prioridade da thread da política/algoritmo de escalonamento do sistema operacional (ex. round-robin = rodízio por fatia de tempo = quantum) 39 Prioridade entre threads Exemplo: escalonamento no Linux [fonte Cada processo possui uma prioridade, recalculada dinamicamente. O escalonador dá a CPU ao processo de maior prioridade O escalonador é preemptivo Para processos interativos (I/O bound) -> round-robin Para processos tempo-real -> FCFS (first come, first served) 40

21 Prioridade entre Threads Windows (2000/NT/XP) ESCALONAMENTO [fonte No Windows 2000/XP o escalonador utiliza múltiplas filas e as threads interativos (I/O bound) possuem prioridade sobre os CPU bound. O escalonamento é baseado em prioridades. Cada thread possui uma prioridade, que varia de 0 a 31 (0 é a menor e 31 a maior). A prioridade 0 é atribuída a uma thread especial, chamada zero thread, que é responsável por zerar as páginas livres no sistema. Somente esta thread pode receber a prioridade 0. As prioridades definem três classes de threads: Real time: prioridades de 16 a 31; Normal: prioridades de 0 a 15. Existe ainda uma classe especial chamada idle, a de mais baixa prioridade. Threads nesta classe somente executam quando não existem outras threads aptas (portanto, threads dessa classe não interferem na performance não causam overhead). 41 Prioridade entre Threads Windows (2000/NT/XP) ESCALONAMENTO O escalonador escolhe sempre a thread de maior prioridade. As threads da classe real time executam até terminar ou se bloquear (FCFS). As threads com prioridade normal (0 a 15) recebem fatias de tempo (RR). no Windows 2000 professional, a fatia de tempo é de 20 ms (para favorecer a interatividade). no Windows 2000 Server, a fatia é de 120 ms (para gerar menos trocas de contexto). Cada thread recebe uma prioridade base ao ser criada. Para os processos de tempo real (prioridade entre 16 e 31) esta prioridade não se altera. Além disso, uma thread tem uma prioridade inicial que indica sua prioridade relativa dentro do processo. Threads com prioridade entre 0 e 15 têm a prioridade ajustada em tempo de execução: Preemptadas por operações de I/0 recebem um bônus de aumento, que depende do periférico (ex. 1 para disco e 6 para teclado). Preemptadas por esgotar o quantum: prioridade reduzida. 42

22 Prioridade entre threads Mapeamento de threads Há de se considerar o mapeamento das threads da JVM para threads nativas do sistema operacional. Por exemplo, a JavaHotSpot VM na Solaris mapeia uma thread Java em uma thread nativa. Maiores detalhes em As prioridades das Threads setadas no código Java são lógicas e dependem da implementação da JVM: public final void setpriority(int newpriority) public final int getpriority() MAX_PRIORITY = 10 constante inteira MIN_PRIORITY = 1 constante inteira NORM_PRIORITY = 5 prioridade atribuída por default 43 Prioridade entre threads Exercício: modificar a prioridade das threads contadoras e observar efeito na execução. Os dois últimos parâmetros modificam respectivamente as prioridades da thread 1 e 2. Recorda-se que a prioridade deve estar no intervalo [1, 10] No exemplo das threads contadoras, para testar o a prioridade, faça: java jar JThreadContadoras.jar OFF 0 OFF 1 10 Prioridade thread 1 Prioridade thread 2 Código fonte e jar disponíveis em 44

23 Prioridade entre threads Exercício: considere um simulador de corridas de fórmula 1 que simula uma disputa entre dois pilotos: Schumacker e Barrichelo. Cada carro funciona de forma independente O tempo de cada volta é dado por um valor randômico. O programa deve esperar por este tempo sem fazer nada para então iniciar a próxima volta Ao final da corrida (quando os dois carros completam 5 voltas), o simulador mostra o tempo acumulado para cada um dos pilotos e aponta o vencedor ou empate. Responda Que comandos da linguagem Java você utilizaria para resolver cada um dos itens acima? JAVARepositorio\JThreads\JCarrosCorrida 45 Prioridade entre threads O código abaixo é uma solução do problema anterior. [JAVA] Altere o programa atribuindo maior prioridade a uma das threads (Schumaker ou Barrichelo). [TELEINFO] Execute o.jar for fun! Código fonte e.jar disponíveis em * No exemplo seguinte, simulamos dois carros de corrida: Schumacker e Barrichelo. * Cada carro funciona de forma independente na sua thread e demora x milisegundos * para percorrer um determinado trecho da pista (x é um valor aleatório). * Para simular este tempo, utilizamos o método Sleep. Na thread Main aguardamos que * os dois carros terminem a prova para encerrar a corrida. Isto é feito através do join. * * * Rodar a partir da linha de comando * =================================== * 1. Salve este arquivo em <dir>/jcarroscorrida/ * 2. Lance o shell: executar -> cmd * 3. posicione no diretório <dir> * 4. compile: javac jcarroscorrida/main.java * 5. execute: java -cp. jcarroscorrida/main */ JAVARepositorio\JThreads\JCarrosCorrida 46

24 Sumário 1 f Compartilhamento de memória 47 Compartilhamento de memória Compartilhamento de memória é um subtópico de comunicação inter-processos (IPC) fila de mensagens (SO) pipeline (SO) proc1 >> proc2 >> proc 3 área de memória compartilhada (SO) POSIX, threads envio de mensagens (rede) CORBA, JRMI, RPC, MPI Threads se comunicam por compartilhamento de memória Atributos (membro de classe e de instância) Objetos compartilhados 48

25 Exemplo de compartilhamento de memória class AreaMem { static String compartilhada= Thread.currentThread().getName();; class Escritora extends Thread { public void run() { AreaMem.compartilhada = Thread.currentThread().getName(); public class Main { public static void main(string[] args) { Escritora E0 = new Escritora(); Escritora E1 = new Escritora(); E0.start(); E1.start(); System.out.println("Compartilhada = " + AreaMem.compartilhada); O atributo estático AreaMem.compartilhada é compartilhado entre as threads E0, E1 e main 49 Exercício Execute várias vezes o código do slide anterior Anote os valores impressos Qual a explicação? 50

26 Cenários de execução do exemplo Um dos cenários possíveis de execução; o valor impresso é main main:thread c= main new E0:Thread print c X start() E1:Thread start() run() c= Thread-0 run() c= Thread-1 X X 51 Exemplo por atributo estático public class Main extends Thread { static int c = 0; // compartilhado private int ini, fim; // nao compartilhados public Main(int ini, int fim) { this.ini = ini; this.fim = fim; public void run() { System.out.println(Thread.currentThread().getName() + "!!! wait "); while (c >= ini && c <= fim) { System.out.println(Thread.currentThread().getName() + " antes " + c); c = (int)(math.random()*10); System.out.println(Thread.currentThread().getName() + " depois " + c); System.out.println(Thread.currentThread().getName() + "!!! fim "); public static void main(string[] args) { new Main(0, 4).start(); new Main(5, 10).start(); JAVARepositorio\JThreads\JCompartMemStatic 52

27 Cenário de execução do exemplo main:main <<create>> start() Thread-0:Main swap start() Thread-1:Main X O atributo estático c é compartilhado pelas threadas X run() 0 c 4 c:=2 0 c 4 c:=5 swap 5 c 10 c:=6 5 c 10 c:=2 X 53 Exercício main:main <<create>> start() X Thread-0:Main swap X run() 0 c 4 c:=2 swap 0 c 4 c:=5 start() Explique porque a seguinte sequência de mensagens não é possível swap swap Thread-1:Main run() 5 c 10 5 c 10 c:=6 5 c 10 c:=2 X 54

28 Exercício Para a classe abaixo class Schedule static int x = 0; static int y = 0; public static int op1() { x = 1; return y; public static int op2() { y = 2; return 3*x; Objetivo: entender o compartilhamento de memória por atributos estáticos Se uma thread chama op1 e outra, op2, que resultados podem ser retornados pelos métodos op1 e op2? (Vijay K. Garg, 2004, p. 15) 55 Exemplo por objeto compartilhado class Conta { int saldo = 0; class Retirada extends Thread { private Conta c; public Retirada(Conta c) { this.c = c; public void run() { int vlrs[] = {10, 20, 30, 40, 50, 60; for (int i=0; i <vlrs.length; i++) c.saldo -= vlrs[i]; Objeto compartilhado class Deposito extends Thread { private Conta c; public Deposito(Conta c) { this.c = c; public void run() { int vlrs[] = {40, 50, 60, 10, 20, 30; for (int i=0; i <vlrs.length; i++) c.saldo += vlrs[i]; public class Main { public static void main(string[] args) { Conta c = new Conta(); Thread d = new Deposito(c); Thread r = new Retirada(c); d.start(); r.start(); try { d.join(); r.join(); catch (InterruptedException e) { System.out.println("Saldo=" + c.saldo); 56

29 Exercício Faça uma classe Java que faça busca paralela num array de inteiros. A classe deve implementar o método: public static int busca(int x, int[] A, int nthreads) O método cria nthreads Estas threads devem compartilhar o objeto A. Cada thread busca pelo inteiro x em uma parte de A, por exemplo, da posição 0 até a 10, outra da 11 a 20,... Se uma das threads encontra x, então retorna-se o índice i, tal que A[i] = x Caso contrário, o método retorna -1 Quando uma das threads encontra o número x, as outras devem parar a busca! sol. JAVARepositorio\JThreads\JBuscaParalela 57 Sumário 1 g Máquina de estados de uma thread 58

30 Estados de uma thread As transições observadas até o momento estão em destaque Object.wait(timeout) Thread.join(timeout) Thread.sleep(delay) new() start() NEW TIMED WAITING Object.notify() Object.notifyAll() join thread termina fim do sleep RUNNABLE Obteu lock BLOCKED Escolhida pelo scheduler Thread.yield() swap do scheduler join threads terminam Object.notify() Object.notifyAll() RUNNING Object.wait() Thread.join() WAITING Fim do método run() TERMINATED Synchronized(obj) 59 Estado de uma thread: detalhe do runnable RUNNING Escolhida pelo scheduler Thread.yield() swap do scheduler Em runnable, a thread pode ser escolhida pelo scheduler para entrar em execução. Uma vez em execução, pode liberar o processador por yield ou por swap do scheduler. RUNNABLE 60

31 Sumário 2 PROBLEMAS DE CONCORRÊNCIA 61 Sumário 2 a Problemas de Concorrência 62

32 Problemas de concorrência Processos compartilham dados Sincronizar acesso aos dados é necessário Exemplo x é uma variável compartilhada (inicialmente zero) Thread T0 faz x := x + 1 Thread T1 faz x := x + 1 x deve ser 2 ao final Porém, se x := x + 1 não for uma operação atômica RACE CONDITION: atualização perdida x = x + 1 em código de máquina (inicial x=0) LD R, x load registrador R com x INC R incrementar R ST R, x store R em x A execução de T0 e T1 é intercalada P0: LD R, x P0: INC R R = 0 R =1 P1: LD R, x P1: INC R R = 0 R =1 P0: ST R, x x =1 P1: ST R, x x =1 Registrador R Variável x 10 1 Resultado final: x = 1 problema da atualização perdida 64

33 Problemas de concorrência x := x + 1 deve ser executada atomicamente Região/Seção crítica necessida atomicidade Para garantir atomicidade, exclusão mútua processos querem o recurso, mas só um pode utilizá-lo, caso contrário o recurso pode ficar num estado inconsistente Recurso compartilhado Processo 1 Processo 2 Quem ganha a disputa? 65 RACE CONDITION: atualização perdida CC = Conta corrente Saldo: R$ 100,00 Transação T1: crédito de R$5,00 Transação T2: crédito de 10% de juros Situação desejada: 1) Aplica-se o juros 2) credita-se R$ 5,00 Funcionamento das transações 1) s:=cc.getsaldo() 2) Crédito na variável s 3) CC.setSaldo(s) Saldo da conta deve ser: (R$100,00 * 1,1) + 5,00 = R$ 115,00 Problemas: Leitura suja Atualização perdida 66

34 RACE CONDITION: atualização perdida Quando uma transação sobrescreve valores produzidos por outra TRANSAÇÃO T1 Creditar R$ 5,00 TRANSAÇÃO T2 Juros de 10% S:= CC.getSaldo() // R$100 S:= S + 5 // S = 105 CC.setSaldo(S) // R$105 S = CC.getSaldo( ); // R$100 S = S * 1,10; // R$ 110,00 CC.setSaldo(S); // R$ 110,00 Sobrescreve o valor produzido por T2 Saldo final = R$ 105,00 67 RACE CONDITION: leitura suja Quando uma transação lê valores intermediários de outro transação - atributos que estão sendo modificados em outra transação Saldo A = R$ 200,00 Saldo B = R$ 300,00 TOTAL = R$ 500,00 Transfere R$100,00 da Conta A para a conta B TRANSAÇÃO T1 A.retirar(100) B.depositar(100) Após transferência TRANSAÇÃO T2 Saldo A = R$ 100,00 Saldo B = R$ 400,00 TOTAL = R$ 500,00 Relatório com o saldo total das agências total = A.saldo( ); // R$100 total = total + B.saldo( ); // R$300 Mostrar total = R$ 400,00 68

35 CONCORRÊNCIA Exemplo de leitura suja/atualização perdida: executar o código abaixo e observar que o número apontado pelo contador central difere da soma dos contadores locais devido aos problemas de leitura suja e atualização perdida. Códigos fonte e.jar disponíveis em Contador central Atualizado pelas duas roletas de forma concorrente Roleta e contador local 69 Sumário 2 b Vivacidade: deadlock, livelock e starvation 70

36 Vivacidade VIVACIDADE: um pedido de uma thread para entrar/acessar uma seção crítica será atendido mais cedo ou mais tarde DEADLOCK: uma thread t1 bloqueia a espera de uma seção crítica ocupada por t2 que, por sua vez, está bloqueada a espera da seção crítica ocupada por t1 grafo wait-for cíclico STARVATION: quando uma thread solicita entrada numa seção crítica e nunca é atendida (ex. porque as outras tem maior prioridade) LIVELOCK: duas threads não conseguem avançar porque uma muda seu estado em resposta à mudança de estado da outra (ex. duas pessoas no corredor que sempre escolhem o mesmo lado para desviarem). 71 Exemplo de deadlock DEADLOCK: filósofos podem bloquear-se.?? Applet demo disponível em / 72

37 Exemplo de starvation STARVATION: um dos filósofos nunca come porque o outro tem maior prioridade. Prioridade por ser o mais sábio 73 Exemplo de livelock LIVELOCK: filósofos podem bloquear-se porque mudam de estado continuament em função do outro. 74

38 Problema dos filósofos 1. Só um dos filósofos decide comer 2. Os dois decidem comer ao mesmo tempo, cada um pega um pauzinho P1 c/ F1 Pauzinho 1 P1 c/ F21 Filósofo 1 termina de comer F1 F1 pega decide 2 pauzinhos comer F1 e F2 pensam F2 decide comer F2 pega 2 pauzinhos Filósofo 2 termina de comer P2 c/ F1 Pauzinho 2 P2 c/ F2 75 Problema dos filósofos Solução para o problema dos filósofos: coordenar as ações Um dos filósofos devem solicitar os recursos na ordem inversa dos outros Ex. todos pegam o objeto da esquerda e depois o da direita. Facilmente visível com dois filósofos 76

39 Problema dos filósofos SOLUÇÃO: coordenar as ações. Inverter a ordem. WAIT 77 Solução para filósofos Primeiro o p1 depois o p2 P1 c/ F1 Se os dois decidem comer ao mesmo tempo, somente um deles conseguirá pegar o pauzinho 1 Pauzinho 1 P1 c/ F21 Filósofo 2 termina de comer Filósofo 1 termina de comer P1 e P2 C/ F1 F1 decide comer F1 e F2 pensam F2 decide comer P1 E P2 c/ F2 Pauzinho 2 78

40 Problema dos filósofos Exercício Verificar se a solução apresentada funciona para 4 filósofos sendo o f2 aquele que pega na ordem invertida. Represente em um diagrama de seqüência a situação na qual todos tentam pegar os pauzinhos ao mesmo tempo. f1 p4 p1 f4 f2 p3 p2 f3 79 Sumário 2 c Soluções aos problemas de concorrência 80

41 SOLUÇÕES PARA CONCORRÊNCIA Como resolver os problemas de acesso à seção crítica? Algoritmos de exclusão mútua (mutex) Busy-wait (Peterson) Exclusão mútua por hardware Desabilitar interrupções instruções de máquina atômicas de mais alto-nível Primitivas de sincronização Semáforos Monitores monitor 81 MUTEX BUSY-WAIT BUSY-WAIT: um processo verifica continuamente se pode entrar na seção crítica desperdiçando assim ciclos do processador. public class Lock1 implements Lock { boolean livre = true; public void requestsc(int i ) { while (!livre); // busy wait livre = false; public void releasesc(int i) { livre = true; JAVARepositorio\JThreads\JExclusaoMutuaLock\src\jexclusaomutualock/Lock1.java 82

42 MUTEX BUSY-WAIT Algoritmo de exclusão mútua de Peterson Três versões incrementais 1.não garante exclusão mútua 2.Pode entrar em deadlock 3.Alternância estrita Versão final Deadlock (livre de impasse) Starvation (livre de inanição) Vivacidade Busy-wait: solução de Peterson Exercício: algoritmo de Dekker Sujeito a deadlock? Sujeito a Starvation? Possui a propriedade de vivacidade? 83 MUTEX por HARDWARE Que soluções existem em hardware para o problema de exclusão mútua? Desabilitar interrupções: antes de entrar na SC, o processo desabilita as interruções Em máquinas monoprocessador pode funcionar com alguns incovenientes... interrupções do clock (time-slice) ficam desabilitadas mas, em máquinas multiprocessadores? É possível desabilitar interrupções em todos os processadores? Instruções atômicas mais abstratas fornecidas pelo hardware Test and set Swap 84

43 SEMÁFOROS SEMÁFORO (Dijkstra): é uma primitiva de sincronização de acesso à seção crítica que soluciona o problema de busywait. API do sistema operacional (SO) Disponível na API do S.O. Java não oferece semáforos Dois tipos de semáforos Binário contador 85 SEMÁFORO BINÁRIO Semáforo binário: Valor inicial: verdadeiro Fila de processos em wait: vazia Operações básicas P() wait V() signal (notify) 86

THREADS EM JAVA. George Gomes Cabral

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

Leia mais

Threads e Concorrência em Java (Material de Apoio)

Threads 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 mais

Revisão Ultima aula [1/2]

Revisão Ultima aula [1/2] SOP - TADS Comunicação Interprocessos - 2 IPC Prof. Ricardo José Pfitscher dcc2rjp@joinville.udesc.br Material cedido por: Prof. Rafael Rodrigues Obelheiro Prof. Maurício Aronne Pillon Revisão Ultima aula

Leia mais

Computação Concorrente (MAB-117) Monitores

Computação Concorrente (MAB-117) Monitores Computação Concorrente (MAB-117) Monitores Prof. Silvana Rossetto 1 Departamento de Ciência da Computação (DCC) Instituto de Matemática (IM) Universidade Federal do Rio de Janeiro (UFRJ) Maio de 2012 1.

Leia mais

Fundamentos de Programaçã. ção Concorrente

Fundamentos 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 mais

BC1518-Sistemas Operacionais. Prof. Marcelo Z. do Nascimento marcelo.nascimento@ufabc.edu.br

BC1518-Sistemas Operacionais. Prof. Marcelo Z. do Nascimento marcelo.nascimento@ufabc.edu.br BC1518-Sistemas Operacionais Sincronização de Processos (aula 5 Parte 2) Prof. Marcelo Z. do Nascimento marcelo.nascimento@ufabc.edu.br Roteiro Semáforos Monitores Passagem de Mensagem Exemplos em S.O.

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos Processos e Threads Gustavo Reis gustavo.reis@ifsudestemg.edu.br - O que são Processos? Uma abstração de um programa em execução. Mantêm a capacidade de operações (pseudo)concorrentes,

Leia mais

Universidade Federal da Paraíba

Universidade Federal da Paraíba Universidade Federal da Paraíba Mestrado em Informática Fora de Sede Universidade Tiradentes Aracaju - Sergipe Disciplina Sistemas Operacionais Professor Jacques Philippe Sauvé Aluno José Maria Rodrigues

Leia mais

(Aula 17) Threads em Java

(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 mais

Programação Orientada a Objetos em Java. Threads Threads Threads. Threads

Programaçã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 mais

Sistemas Operacionais: Threads

Sistemas Operacionais: Threads Sistemas Operacionais: Threads Threads Única linha de execução x múltiplas linhas de execução Benefícios Tempo de resposta Compartilhamento de recursos Economia de recursos Desempenho em arquiteturas multiprocessadas

Leia mais

Programação Concorrente em Java. Profa Andréa Schwertner Charão DLSC/CT/UFSM

Programação Concorrente em Java. Profa Andréa Schwertner Charão DLSC/CT/UFSM Programação Concorrente em Java Profa Andréa Schwertner Charão DLSC/CT/UFSM O que é programação concorrente? Um programa, múltiplos fluxos de execução Quando usar programação concorrente? Desempenho Ex.:

Leia mais

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

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

Leia mais

Java Threads. Introdução

Java 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 mais

Módulo 4: Processos. Conceito de Processo. Escalonamento de processos Operações sobre processos Processos cooperantes Comunicação entre processos

Módulo 4: Processos. Conceito de Processo. Escalonamento de processos Operações sobre processos Processos cooperantes Comunicação entre processos Módulo 4: Processos Conceito de Processo Escalonamento de processos Operações sobre processos Processos cooperantes Comunicação entre processos 4.1 Conceito de Processo Um Sistema Operacional executa uma

Leia mais

S.O.: Conceitos Básicos

S.O.: Conceitos Básicos S.O.: Conceitos Básicos Camada de software localizada entre o hardware e os programas que executam tarefas para o usuário; Acessa os periféricos Entrada e Saída Esconde os detalhes do hardware para o programador

Leia mais

PROGRAMAÇÃO PARALELA EM C# Notas de Aula Prof. Marcos E Barreto

PROGRAMAÇÃO PARALELA EM C# Notas de Aula Prof. Marcos E Barreto PROGRAMAÇÃO PARALELA EM C# Notas de Aula Prof. Marcos E Barreto Referências: - Programming C#. Jesse Liberty, O Reilly, 2001. - Threading in Java and C#: a focused language comparison. Shannon Hardt -

Leia mais

Sistemas distribuídos. Grids e Clusters. Arquiteturas de SDs

Sistemas distribuídos. Grids e Clusters. Arquiteturas de SDs UTFPR/Curitiba - Especialização em Teleinformática Sistemas Distribuídos (Prof. Tacla) EXERCÍCIOS Sistemas distribuídos * consultar slides 0010 1. Quais as diferenças entre um sistema distribuído e um

Leia mais

Programação Orientada a Objetos Threads

Programação Orientada a Objetos Threads Threads Prof. Edwar Saliba Júnior Janeiro de 2013 1 Introdução Multithreading: fornece múltiplas threads de execução para a aplicação; permite que programas realizem tarefas concorrentemente; às vezes

Leia mais

Threads em Java. Sistemas Operacionais - Laboratório Professor Machado

Threads em Java. Sistemas Operacionais - Laboratório Professor Machado Threads em Java Sistemas Operacionais - Laboratório Professor Machado 1 Conceitos de Programação Concorrente Uma unidade concorrente é um componente de um programa que não exige a execução seqüencial,

Leia mais

Universidade da Beira Interior. Sistemas Distribuídos

Universidade da Beira Interior. Sistemas Distribuídos Folha 6-1 Sincronização de Threads A sincronização de Threads em Java é baseada no conceito do Monitor (de Hoare). Cada objecto Java tem associado um monitor (ou lock ) que pode ser activado se a palavra

Leia mais

Threads e Sockets em Java. Threads em Java. Programas e Processos

Threads e Sockets em Java. Threads em Java. Programas e Processos Threads em Java Programas e Processos Um programa é um conceito estático, isto é, um programa é um arquivo em disco que contém um código executável por uma CPU. Quando este programa é executado dizemos

Leia mais

Introdução a Threads Java

Introdução a Threads Java Introdução a Threads Java Prof. Gerson Geraldo Homrich Cavalheiro Universidade Federal de Pelotas Departamento de Informática Instituto de Física e Matemática Pelotas RS Brasil http://gersonc.anahy.org

Leia mais

Multithreading. Programação Orientada por Objectos com Java. Ademar Aguiar. MRSC - Programação em Comunicações

Multithreading. 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 mais

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

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

Leia mais

Sistemas Operacionais

Sistemas Operacionais AULA 09 Sincronização de Processos - II Monitores Conforme comentamos, o uso equivocado dos semáforos pode levar a uma situação de deadlock, por isso devemos tomar cuidado ao programar utilizando este

Leia mais

Sincronização. Cooperação entre Processos

Sincronização. Cooperação entre Processos Sincronização Parte II Programação Concorrente Cooperação entre Processos Vários processos executam em conjunto uma ou mais tarefas, nas quais Competem por recursos Indicam uns aos outros a: Ausência/existência

Leia mais

Introdução ao uso de Threads em Java

Introdução ao uso de Threads em Java Introdução ao uso de Threads em Java Daniel de Angelis Cordeiro danielc@ime.usp.br 26 de março de 2004 Sumário 1 Introdução 1 1.1 O que são threads?............................... 1 1.2 Todo programa em

Leia mais

Módulo 4: Processos. Conceito de Processo. Diagrama de Estados de Processos. Estados de Processo

Módulo 4: Processos. Conceito de Processo. Diagrama de Estados de Processos. Estados de Processo Módulo 4: Processos Conceito de Processo Conceito de Processo Escalonamento de Processos Operações com Processos Processos Cooperativos Comunicação entre Processos Um sistema operacional executa uma variedade

Leia mais

Processos e Threads (partes I e II)

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

Leia mais

ARQUITETURA DE COMPUTADORES E SISTEMAS OPERACIONAIS P/ CONCURSOS PÚBLICOS FOCO: ESAF/CESGRANRIO/FCC. Prof. Almeida Jr

ARQUITETURA DE COMPUTADORES E SISTEMAS OPERACIONAIS P/ CONCURSOS PÚBLICOS FOCO: ESAF/CESGRANRIO/FCC. Prof. Almeida Jr ARQUITETURA DE COMPUTADORES E SISTEMAS OPERACIONAIS P/ CONCURSOS PÚBLICOS FOCO: ESAF/CESGRANRIO/FCC Prof. Almeida Jr Processos Conceitos Básicos Nomes Tipos Batch: jobs CPU-bound T.Sharing: Tarefas/Processos

Leia mais

9 - Sincronização e Comunicação entre Processos

9 - Sincronização e Comunicação entre Processos 1 9 - Sincronização e Comunicação entre Processos 91 Introdução Em um sistema multitarefa, seja com um único processador ou com mais de um processador ou ainda com vários núcleos por processador, os processos

Leia mais

Capítulo 2. Processos e Threads. Processos e threads

Capítulo 2. Processos e Threads. Processos e threads Capítulo 2 Processos e Threads 1 Processos e threads 1. Processos 2. Threads 3. Comunicação inter processos (IPC) 4. Problemas clássicos de IPC 5. Escalonamento (Scheduling) 2 1 Processos: O modelo de

Leia mais

Sincronização e Comunicação entre Processos. Adão de Melo Neto

Sincronização e Comunicação entre Processos. Adão de Melo Neto Sincronização e Comunicação entre Processos Adão de Melo Neto 1 INTRODUÇÃO Em um sistema multitarefa os processos alternam sua execução segundo critérios de escalonamento estabelecidos pelo sistema operacional.

Leia mais

Sistemas Operacionais Aula 08: Sincronização de Processos. Ezequiel R. Zorzal ezorzal@unifesp.br www.ezequielzorzal.com

Sistemas Operacionais Aula 08: Sincronização de Processos. Ezequiel R. Zorzal ezorzal@unifesp.br www.ezequielzorzal.com Sistemas Operacionais Aula 08: Sincronização de Processos Ezequiel R. Zorzal ezorzal@unifesp.br www.ezequielzorzal.com Objetivos Introduzir o problema da seção crítica, cujas soluções podem ser usadas

Leia mais

Programação Concorrente em java - Exercícios Práticos Abril 2004

Programaçã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 mais

Notas da Aula 4 - Fundamentos de Sistemas Operacionais

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

Leia mais

Escalonamento no Linux e no Windows NT/2000/XP

Escalonamento no Linux e no Windows NT/2000/XP Escalonamento no Linux e no Windows NT/2000/XP 1 Escalonamento no Linux Os requisitos do escalonador do Linux eram: Apresentar boa performance em programas interativos, mesmo com carga elevada; Distribuir

Leia mais

Disciplina: Sistemas Operacionais - CAFW-UFSM Professor: Roberto Franciscatto

Disciplina: Sistemas Operacionais - CAFW-UFSM Professor: Roberto Franciscatto Disciplina: Sistemas Operacionais - CAFW-UFSM Professor: Roberto Franciscatto Introdução Processo cooperativo é aquele que pode afetar outros processos em execução no sistema Ou ser por eles afetado Processos

Leia mais

Como foi exposto anteriormente, os processos podem ter mais de um fluxo de execução. Cada fluxo de execução é chamado de thread.

Como foi exposto anteriormente, os processos podem ter mais de um fluxo de execução. Cada fluxo de execução é chamado de thread. 5 THREADS Como foi exposto anteriormente, os processos podem ter mais de um fluxo de execução. Cada fluxo de execução é chamado de thread. 5.1 VISÃO GERAL Uma definição mais abrangente para threads é considerá-lo

Leia mais

Sistemas Operacionais

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

Leia mais

Sistemas Operacionais 2014 Gerência de Processos. Alexandre Augusto Giron

Sistemas Operacionais 2014 Gerência de Processos. Alexandre Augusto Giron Sistemas Operacionais 2014 Gerência de Processos Alexandre Augusto Giron ROTEIRO Revisão Processos Escalonamento de processos Operações de processos Comunicação Cooperação Threads Escalonamento de CPU

Leia mais

Sistemas Operacionais 2014 Introdução. Alexandre Augusto Giron alexandre.a.giron@gmail.com

Sistemas Operacionais 2014 Introdução. Alexandre Augusto Giron alexandre.a.giron@gmail.com Sistemas Operacionais 2014 Introdução Alexandre Augusto Giron alexandre.a.giron@gmail.com Roteiro Sistemas Operacionais Histórico Estrutura de SO Principais Funções do SO Interrupções Chamadas de Sistema

Leia mais

(Aula 15) Threads e Threads em Java

(Aula 15) Threads e Threads em Java (Aula 15) Threads e Threads em Java Um fluxo computacional. A programa maioria de execução, dos seqüencial programas o qual simples consiste realiza tem uma de essa um certa único tarefa Grande característica:

Leia mais

Remote Procedure Call. Programação distribuída e paralela (C. Geyer) RPC 1

Remote Procedure Call. Programação distribuída e paralela (C. Geyer) RPC 1 Remote Procedure Call Programação distribuída e paralela (C. Geyer) RPC 1 Autoria Autores C. Geyer Local II-UFRGS Versão V11.4 2014-2 Disciplinas SOII Programação distribuída e paralela (C. Geyer) RPC

Leia mais

Capítulo 2 Processos e Threads Prof. Fernando Freitas

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

Leia mais

Programação Concorrente Processos e Threads

Programação Concorrente Processos e Threads Programação Concorrente Processos e Threads Prof. Eduardo Alchieri Processos O conceito mais central em qualquer sistema operacional é o processo Uma abstração de um programa em execução Um programa por

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais SINCRONIZAÇÃO E COMUNICAÇÃO ENTRE PROCESSOS MACHADO/MAIA: CAPÍTULO 07, PÁGINA 101 Prof. Pedro Luís Antonelli Anhanguera Educacional sistemas multiprogramáveis Os sistemas multiprogramáveis

Leia mais

FBV - Linguagem de Programação II. Um pouco sobre Java

FBV - Linguagem de Programação II. Um pouco sobre Java FBV - Linguagem de Programação II Um pouco sobre Java História 1992: um grupo de engenheiros da Sun Microsystems desenvolve uma linguagem para pequenos dispositivos, batizada de Oak Desenvolvida com base

Leia mais

Threads Aula 04 2 Quadrimestre

Threads Aula 04 2 Quadrimestre BC1518 - Sistemas Operacionais Threads Aula 04 2 Quadrimestre de 2010 Prof. Marcelo Z. do Nascimento Email: marcelo.nascimento@ufabc.edu.br Roteiro Threads: Visão Geral Benefícios Tipos Modelos de multithread

Leia mais

P5 P3. interrupçãocorrespondente. Sistemas Operacionais 2008/1 Profa. Patricia D. CostaLPRM/DI/UFES 3 Sistemas Operacionais 2008/1

P5 P3. interrupçãocorrespondente. Sistemas Operacionais 2008/1 Profa. Patricia D. CostaLPRM/DI/UFES 3 Sistemas Operacionais 2008/1 Conceitos Processos Básicos (Aula 4) Profa. É Provoca Constitui Mecanismo Patricia informa evento controle, a multiprogramação. Ex: rotina um a base de Interrupção de um (1) sistema de D. CostaLPRM/DI/UFES

Leia mais

Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO

Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO Comunicação e Sincronismo entre processos Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO 1 Comunicação entre Processos Processos

Leia mais

Java. Marcio de Carvalho Victorino www.dominandoti.eng.br

Java. Marcio de Carvalho Victorino www.dominandoti.eng.br Java Marcio de Carvalho Victorino www.dominandoti.eng.br 3. Considere as instruções Java abaixo: int cont1 = 3; int cont2 = 2; int cont3 = 1; cont1 += cont3++; cont1 -= --cont2; cont3 = cont2++; Após a

Leia mais

Curso Adonai QUESTÕES Disciplina Linguagem JAVA

Curso Adonai QUESTÕES Disciplina Linguagem JAVA 1) Qual será o valor da string c, caso o programa rode com a seguinte linha de comando? > java Teste um dois tres public class Teste { public static void main(string[] args) { String a = args[0]; String

Leia mais

III - Processos e Threads

III - Processos e Threads III - Processos e Threads P rocesso é geralmente entendido como um programa em execução porém, na realidade, trata-se de uma estrutura mais complexa que contém, além do programa no seu formato executável,

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Gerência de processos Edson Moreno edson.moreno@pucrs.br http://www.inf.pucrs.br/~emoreno Introdução Multiprogramação Permite a execução de diversos processos concorrentemente Maior

Leia mais

Máquina de estados UNIX O

Máquina de estados UNIX O Estruturas Processos de Controle (Aula 5) Aula Interrupções Profa. Patricia Gerência fluxo, execução D. O Abstração passada Criação podendo de gerar hw e transição sw (mudança de CostaLPRM/DI/UFES que

Leia mais

Máquina de estados UNIX O. Sistemas Operacionais 2008/1Profa. Patricia S.O. computação: recursos D. S.O S.O. controla eventos no sistema de

Máquina de estados UNIX O. Sistemas Operacionais 2008/1Profa. Patricia S.O. computação: recursos D. S.O S.O. controla eventos no sistema de Estruturas Processos de Controle (Aula 5) Aula Interrupções Profa. Patricia Gerência fluxo, execução D. O Abstração passada Criação podendo de gerar hw e transição sw (mudança de CostaLPRM/DI/UFES que

Leia mais

Sincronização de Processos (1) Mecanismos de busy wait

Sincronização de Processos (1) Mecanismos de busy wait Sincronização de Processos (1) Mecanismos de busy wait Condições de Corrida Exemplo: Fila de impressão. Qualquer processo que queira imprimir precisa colocar o seu documento na fila de impressão (compartilhada).

Leia mais

Programação distribuída e paralela (C. Geyer) RPC 1

Programação distribuída e paralela (C. Geyer) RPC 1 Programação distribuída e paralela (C. Geyer) RPC 1 Autores C. Geyer Local II-UFRGS Versão v6 2008-2 Disciplinas SOII Programação distribuída e paralela (C. Geyer) RPC 2 Bibliografia base original dos

Leia mais

UNIVERSIDADE FEDERAL DE VIÇOSA DEPARTAMENTO DE INFORMÁTICA. JAVA NA PRÁTICA Volume II. Alcione de Paiva Oliveira Vinícius Valente Maciel

UNIVERSIDADE FEDERAL DE VIÇOSA DEPARTAMENTO DE INFORMÁTICA. JAVA NA PRÁTICA Volume II. Alcione de Paiva Oliveira Vinícius Valente Maciel UNIVERSIDADE FEDERAL DE VIÇOSA DEPARTAMENTO DE INFORMÁTICA JAVA NA PRÁTICA Volume II Alcione de Paiva Oliveira Vinícius Valente Maciel 2002 Sumário 1 Capítulo I - Concorrência... 3 CRIANDO THREADS EM JAVA...

Leia mais

Sistemas Operacionais. Escalonamento de Processo. Prof. Dr. Márcio Andrey Teixeira

Sistemas Operacionais. Escalonamento de Processo. Prof. Dr. Márcio Andrey Teixeira Sistemas Operacionais Escalonamento de Processo Prof. Dr. Márcio Andrey Teixeira Quando um computador é multiprogramado, ele muitas vezes tem variados processos que competem pela CPU ao mesmo tempo; Essa

Leia mais

Ciclo de Vida de um Processo

Ciclo de Vida de um Processo Nas aulas anteriores Ciclo de Vida de um Processo Marcelo Johann Conceito de Processo Mecanismo de Programação em C/UNIX Continuando Interrupções TRAP Chaveamento de Contexto Chamadas de Sistema INF01142

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Sistemas Operacionais Prof. Marcelo Sabaris Carballo Pinto Gerencia de Processos 4.1 Introdução aos Processos Gerenciamento de Processos Processo -Definição: É uma abstração do sistema

Leia mais

Programação Concorrente

Programação Concorrente + XV Jornada de Cursos CITi Aula 2 Programação Concorrente Benito Fernandes Fernando Castor João Paulo Oliveira Weslley Torres + Agenda Conceitos básicos de Threads em Java Benefícios de Thread Estados,Métodos,

Leia mais

Universidade da Beira Interior Cursos: Matemática /Informática e Ensino da Informática

Universidade da Beira Interior Cursos: Matemática /Informática e Ensino da Informática Folha 1-1 Introdução à Linguagem de Programação JAVA 1 Usando o editor do ambiente de desenvolvimento JBUILDER pretende-se construir e executar o programa abaixo. class Primeiro { public static void main(string[]

Leia mais

Sistemas Operacionais Aula 06: Threads. Ezequiel R. Zorzal ezorzal@unifesp.br www.ezequielzorzal.com

Sistemas Operacionais Aula 06: Threads. Ezequiel R. Zorzal ezorzal@unifesp.br www.ezequielzorzal.com Sistemas Operacionais Aula 06: Threads Ezequiel R. Zorzal ezorzal@unifesp.br www.ezequielzorzal.com Objetivos Introduzir o conceito de thread Discutir as APIs das bibliotecas de threads Pthreads, Win32

Leia mais

Mecanismo de Threads em Java 2

Mecanismo de Threads em Java 2 Mecanismo de Threads em Java 2 Índice MULTITHREADING : Múltiplos processos. 3 Paulo Costa, n.º 1000334 Mecanismo de Threads Página 2 de 20 MULTITHREADING : Múltiplos Processos As Threads são convenientes

Leia mais

Parte 1 Processos e Threads (20%)

Parte 1 Processos e Threads (20%) INE 5645 Programação Paralela e Distribuída 2011.1 Turma 0238B Prof. Bosco Nome: BOSCO Matrícula: Parte 1 Processos e Threads (20%) 1.1 Explique, resumidamente, o que é um processo em Sistema Operacional.

Leia mais

insfcanceof new public switch transient while byte continue extends for int null

insfcanceof new public switch transient while byte continue extends for int null Palavras -chave de JAV A abstract catch do final implements long private static throw void boolean char double finally import native protected super throws volatile break class float insfcanceof new public

Leia mais

Um sistema é constituído de um conjunto de processos que executam seus respectivos códigos do sistema operacional e processos e códigos de usuários.

Um sistema é constituído de um conjunto de processos que executam seus respectivos códigos do sistema operacional e processos e códigos de usuários. Os sistemas computacionais atuais permitem que diversos programas sejam carregados na memória e executados simultaneamente. Essa evolução tornou necessário um controle maior na divisão de tarefas entre

Leia mais

(ou seja, boas praticas de programação orientada a objetos devem ser empregadas mesmo se não foram explicitamente solicitadas)

(ou seja, boas praticas de programação orientada a objetos devem ser empregadas mesmo se não foram explicitamente solicitadas) PC-2 / LP-2 2009/2 Lista 2 Prof. Alexandre Sztajnberg Em todos os exercícios a(o) aluna(o) deve, além de atender aos requisitos enunciados, utilizar os conceitos e características de orientação a objetos

Leia mais

PROCESSOS. Prof. Maicon A. Sartin mapsartin@gmail.com

PROCESSOS. Prof. Maicon A. Sartin mapsartin@gmail.com PROCESSOS Prof. Maicon A. Sartin mapsartin@gmail.com Cenários em Sistemas Multitarefas Um usuário pode executar diversas atividades simultâneas Música Editoração de texto Navegar na Internet Servidor pode

Leia mais

Sintaxe Geral Tipos de Dados. Prof. Angelo Augusto Frozza, M.Sc.

Sintaxe Geral Tipos de Dados. Prof. Angelo Augusto Frozza, M.Sc. Sintaxe Geral Tipos de Dados Comentários Comentários: De linha: // comentário 1 // comentário 2 De bloco: /* linha 1 linha 2 linha n */ De documentação: /** linha1 * linha2 */ Programa Exemplo: ExemploComentario.java

Leia mais

JAVA VIRTUAL MACHINE (JVM)

JAVA VIRTUAL MACHINE (JVM) JAVA VIRTUAL MACHINE (JVM) Por Leandro Baptista, Marlon Palangani e Tiago Deoldoto, 11 de Abril de 2009 A linguagem de programação Java proporciona o desenvolvimento aplicações que podem ser executadas

Leia mais

Sistemas Operacionais

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

Leia mais

Conceito de processo como uma unidade de trabalho em um sistema moderno de tempo compartilhado. Estados de um processo.

Conceito de processo como uma unidade de trabalho em um sistema moderno de tempo compartilhado. Estados de um processo. gerenciamento de processos Objetivo Compreender a maneira como o sistema operacional controla o gerenciamento dos programas em execução por meio do gerenciamento de processos no qual cada processo representa

Leia mais

Unidade IV: Ponteiros, Referências e Arrays

Unidade IV: Ponteiros, Referências e Arrays Programação com OO Acesso em Java a BD Curso: Técnico em Informática Campus: Ipanguaçu José Maria Monteiro Pontifícia Universidade Católica do Rio de Janeiro PUC-Rio Departamento Clayton Maciel de Informática

Leia mais

Capítulo 8 Arquitetura de Computadores Paralelos

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

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Gerência do processador 2 a edição Capítulo 4 Revisão: Fev/2003 Sumário Implementação do conceito de processos e threads Escalonamento Escalonadores não -preemptivos Escalonamento

Leia mais

Máquinas virtuais. Máquina virtual de um processo. Máquinas virtuais (3) Máquina virtual de sistema. Máquinas virtuais (1) VMware para Windows e Linux

Máquinas virtuais. Máquina virtual de um processo. Máquinas virtuais (3) Máquina virtual de sistema. Máquinas virtuais (1) VMware para Windows e Linux System API Máquinas virtuais System ISA (Instruction Set Architecture) Aplicações Chamadas ao sistema Sistema de Operação Hardware User ISA (Instruction Set Architecture) Uma máquina virtual executa software

Leia mais

void echo(); { chin = getchar(); chout = chin; putchar(chout); }

void echo(); { chin = getchar(); chout = chin; putchar(chout); } Sincronização Processos (Aula de 10) Concorrência Dificuldades: Profa. Patrícia Ação Compartilhamento Gerência Localização D. Proteger Promover de alocação de recursos. globais. CostaLPRM/DI/UFES programas).

Leia mais

Notas da Aula 6 - Fundamentos de Sistemas Operacionais

Notas da Aula 6 - Fundamentos de Sistemas Operacionais 1. Monitores Notas da Aula 6 - Fundamentos de Sistemas Operacionais Embora os semáforos sejam uma boa solução para o problema da exclusão mútua, sua utilização não é trivial. O programador é obrigado a

Leia mais

Programação de Computadores - I. Profª Beatriz Profº Israel

Programação de Computadores - I. Profª Beatriz Profº Israel Programação de Computadores - I Profª Beatriz Profº Israel As 52 Palavras Reservadas O que são palavras reservadas São palavras que já existem na linguagem Java, e tem sua função já definida. NÃO podem

Leia mais

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

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

Leia mais

Analisar os sistemas operacionais apresentados na figura e responder as questões abaixo: Identificar

Analisar os sistemas operacionais apresentados na figura e responder as questões abaixo: Identificar Projeto Integrador Sistemas Operacionais Prof.ª Lucilia Ribeiro GTI 3 Noturno Grupo: Anderson Alves da Mota. André Luiz Silva. Misael bezerra dos santos. Sandro de almeida silva. Analisar os sistemas operacionais

Leia mais

CURSO DE ENGENHARIA DE COMPUTAÇÃO Renovação de Reconhecimento pela Portaria n 123 de 09/07/12 DOU de 10/07/12 PLANO DE CURSO

CURSO DE ENGENHARIA DE COMPUTAÇÃO Renovação de Reconhecimento pela Portaria n 123 de 09/07/12 DOU de 10/07/12 PLANO DE CURSO CURSO DE ENGENHARIA DE COMPUTAÇÃO Renovação de Reconhecimento pela Portaria n 123 de 09/07/12 DOU de 10/07/12 Componente Curricular: Sistemas Concorrentes e Distribuídos Código: ENG - 436 Pré-requisito:

Leia mais

Sistemas Operacionais I Parte III Estrutura dos SOs. Prof. Gregorio Perez gregorio@uninove.br 2007. Roteiro. Componentes do Sistema

Sistemas Operacionais I Parte III Estrutura dos SOs. Prof. Gregorio Perez gregorio@uninove.br 2007. Roteiro. Componentes do Sistema Sistemas Operacionais I Parte III Estrutura dos SOs Prof. Gregorio Perez gregorio@uninove.br 2007 Roteiro Serviços Estrutura dos Sistemas Operacionais Funções do Sistema Operacional Chamadas do Sistema

Leia mais

Guia de Fatores de Qualidade de OO e Java

Guia de Fatores de Qualidade de OO e Java Qualiti Software Processes Guia de Fatores de Qualidade de OO e Java Versã o 1.0 Este documento só pode ser utilizado para fins educacionais, no Centro de Informática da Universidade Federal de Pernambuco.

Leia mais

Java : Comunicação Cliente-Servidor.

Java : Comunicação Cliente-Servidor. Java : Comunicação Cliente-Servidor. Objetivo: Capacitar o aluno a desenvolver uma aplicação servidora para múltiplos clientes. Apresentar as classes Socket e ServerSocket, classes de fluxo de dados, a

Leia mais

Linguagem de Programação JAVA. Técnico em Informática Professora Michelle Nery

Linguagem de Programação JAVA. Técnico em Informática Professora Michelle Nery Linguagem de Programação JAVA Técnico em Informática Professora Michelle Nery Agenda Regras paravariáveis Identificadores Válidos Convenção de Nomenclatura Palavras-chaves em Java Tipos de Variáveis em

Leia mais

Sistemas Operacionais. Processos. Edeyson Andrade Gomes. edeyson@uol.com.br

Sistemas Operacionais. Processos. Edeyson Andrade Gomes. edeyson@uol.com.br Sistemas Operacionais Processos Edeyson Andrade Gomes edeyson@uol.com.br Roteiro da Aula Conceitos Estados do Processo Controle de Processo Escalonamento Criação e Término de Processos 2 Definição Processo

Leia mais

Aula 09 Introdução à Java. Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes http://www.profbrunogomes.com.br/

Aula 09 Introdução à Java. Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes http://www.profbrunogomes.com.br/ Aula 09 Introdução à Java Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes http://www.profbrunogomes.com.br/ Agenda da Aula Java: Sintaxe; Tipos de Dados; Variáveis; Impressão de Dados.

Leia mais

Infra-estrutura de Software

Infra-estrutura de Software Infra-estrutura de Software Apresentação Ciência da Computação Professor: Carlos Ferraz Monitoria: em formação Horários: Quartas e Sextas, 08-10h (D-005) Laboratório: G4, normalmente URL: http://www.cin.ufpe.br/~cagf/if677/2013-1

Leia mais

Sistemas Operacionais. Alexandre Meslin meslin@inf.puc-rio.br

Sistemas Operacionais. Alexandre Meslin meslin@inf.puc-rio.br Sistemas Operacionais Alexandre Meslin meslin@inf.puc-rio.br Ementa Apresentação do curso Cap1 - Visão Geral Cap2 - Conceitos de Hardware e Software Cap3 - Concorrência Cap4 - Estrutura do Sistema Operacional

Leia mais

Linguagens de. Aula 02. Profa Cristiane Koehler cristiane.koehler@canoas.ifrs.edu.br

Linguagens de. Aula 02. Profa Cristiane Koehler cristiane.koehler@canoas.ifrs.edu.br Linguagens de Programação III Aula 02 Profa Cristiane Koehler cristiane.koehler@canoas.ifrs.edu.br Linguagens de Programação Técnica de comunicação padronizada para enviar instruções a um computador. Assim

Leia mais

Aula 2. Objetivos. Encapsulamento na linguagem Java; Utilizando a referência this.

Aula 2. Objetivos. Encapsulamento na linguagem Java; Utilizando a referência this. Aula 2 Objetivos Encapsulamento na linguagem Java; Utilizando a referência this. Encapsulamento, data hiding é um conceito bastante importante em orientação a objetos. É utilizado para restringir o acesso

Leia mais

Chamadas de Sistema e Processo

Chamadas de Sistema e Processo Andrique Amorim www.andrix.com.br professor@andrix.com.br Chamadas de Sistema e Processo Estrutura do Computador Sistemas Operacionais Estrutura do Computador Sistemas Operacionais Modos de Acesso ao S.O.

Leia mais