Programação Concorrente Conceitos Multiprogramação Threads



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

Sistemas Operacionais Aula 06: Threads. Ezequiel R. Zorzal

(Aula 15) Threads e Threads em Java

Sistemas Operacionais

Programação Concorrente

Programação Concorrente Processos e Threads

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

Processos e Threads (partes I e II)

Sistemas Operativos. Threads. 3º ano - ESI e IGE (2011/2012) Engenheiro Anilton Silva Fernandes (afernandes@unipiaget.cv)

Sistemas Operacionais. Prof. M.Sc. Sérgio Teixeira. Aula 05 Estrutura e arquitetura do SO Parte 1. Cursos de Computação

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

THREADS EM JAVA. George Gomes Cabral

Java Threads. Introdução

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

Slide. ! Multiprocessamento! Modelo de processo. Dep. Ciência da Computação. Slide. ! Alternância de processos. ! Relação Programa x Processo

Processos. Adão de Melo Neto

Udesc/Ceplan Bacharelado em Sistemas de Informação Sistemas Operacionais. Prof. Alexandre Veloso

Sobre a apresentação (About(

Programação Orientada a Objetos Threads

Threads. 8 de janeiro de 2015

Até o final de década de 70, os sistemas operacionais suportavam apenas processos com um único thread;

Threads Aula 04 2 Quadrimestre

Sistemas Operacionais Processos e Threads

SISTEMAS OPERACIONAIS CAPÍTULO 3 CONCORRÊNCIA

SO: Gerenciamento de Processos

Sistema Operacional Correção - Exercício de Revisão

Sistemas Operacionais. Prof. M.Sc. Sérgio Teixeira. Aula 04 - Concorrência. Cursos de Computação

Arquitetura de Sistemas Operacionais Machado/Maia. Arquitetura de Sistemas

SISTEMAS OPERACIONAIS

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

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

Sistemas Operacionais I

Sistema Operacional. Processo e Threads. Prof. Dr. Márcio Andrey Teixeira Sistemas Operacionais

Sistemas Operacionais. Prof. M.Sc. Sérgio Teixeira. Aula 05 Estrutura e arquitetura do SO Parte 2. Cursos de Computação

Sistemas Operacionais

Introdução a Threads Java

Capítulo 2 Processos e Threads Prof. Fernando Freitas

Sistemas Distribuídos: Conceitos e Projeto Threads e Migração de Processos

Figura 01 Kernel de um Sistema Operacional

Processamento de Dados

PROCESSOS. Prof. Maicon A. Sartin

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

SISTEMAS OPERACIONAIS. Apostila 03 Estrutura do Sistema Operacional UNIBAN

O que veremos nesta aula? Principais Aspectos de Sistemas Operacionais. Visão geral de um sistema computacional

Resumo até aqui. Gerenciamento Proteção Compartilhamento. Infra-estrutura de Software

Fundamentos de Programaçã. ção Concorrente

Visão Geral de Sistemas Operacionais

Sistemas Operacionais

Sistemas Distribuídos Processos I. Prof. MSc. Hugo Souza

Introdução a Computação 07 Sistemas operacionais. Márcio Daniel Puntel marcio.puntel@ulbra.edu.br

Sistemas Distribuídos

Introdução à Linguagem Java

EXEMPLO: Processo para atualização da hora Processo para monitoramento da necessidade de proteção de tela. Figura Exemplo

Prof.: Roberto Franciscatto. Capítulo 1.2 Aspectos Gerais

Sistemas Operacionais

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

Arquitetura de Sistemas Operacionais

Linguagens de. Aula 02. Profa Cristiane Koehler

Mecanismo de Interrupção

Sistemas Operacionais

Paralelismo. Computadores de alto-desempenho são utilizados em diversas áreas:

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

Aula 3. Sistemas Operacionais. Prof: Carlos Eduardo de Carvalho Dantas

Tipos de sistemas operacionais

EXERCÍCIOS SOBRE ORIENTAÇÃO A OBJETOS

Comparativo de desempenho do Pervasive PSQL v11

É a associação de mais de um fluxo de execução em um único processo.

Programação Sistemas

Sistemas Distribuídos

Orientação a Objetos

1.6. Tratamento de Exceções

Sistemas Distribuídos

Sistemas Distribuídos Capítulos 3 e 4 - Aula 4

Objetivos do Curso. Você será capaz de:

Sistemas Operacionais

Sistemas Operacionais

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

Infra-Estrutura de Software. Introdução. (cont.)

(Aula 17) Threads em Java

CPG: sincronização entre diferentes dispositivos

DESENVOLVIMENTO PARA DISPOSITIVOS MÓVEIS. PROFª. M.Sc. JULIANA H Q BENACCHIO

UFRJ IM - DCC. Sistemas Operacionais I. Unidade I Introdução. 11/02/2014 Prof. Valeria M. Bastos

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

IMPLEMENTAÇÃO DE SOCKETS E THREADS NO DESENVOLVIMENTO DE SISTEMAS CLIENTE / SERVIDOR: UM ESTUDO EM VB.NET

Escalonamento no Linux e no Windows NT/2000/XP

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.

Aula 30 - Sockets em Java

Arquitetura de Computadores. Introdução aos Sistemas Operacionais

Transcrição:

Programação Concorrente Conceitos Multiprogramação Threads Prof. Gibson Pasquini Nascimento gibson.pasquini@gmail.com

O que é Concorrência? Uma unidade concorrente é um componente de um programa que não exige a execução seqüencial Concorrência relaciona-se com fluxo de controle Um programa possui mais de um fluxo de controle ativo ANHANGUERA EDUCACIONAL S.A. www.unianhanguera.edu.br

Fluxo: Seqüencial X Concorrente Tarefa 1 Tarefa 2 Tarefa 1 Tarefa 2 Tarefa 3 Tarefa 3 Os fluxos possuem pilhas individuais de execução

O queé Multiprogramação? Multiprogramaçãoé uma forma de simultaneidade de processamento utilizando um único processador [TANENBAUM] Conhecido como multiprocessamento Técnica utilizada para melhor aproveitamento dos recursos de um sistema operacional

Threads

Histórico Primeiros SOshabilitavam execução de programas concorrente, porém as linguagens não especificavam concorrência Ada (década de 1970 1980) Departamento de Defesa dos EUA (DoD) Empresas especializadas em defesa, que fabricavam sistemas militares (empresas contratadas pelo DoD) Não adotada por universidades e empresas privadas

Linguagens atuais Disponibilizam primitivas de concorrência para o programador São definidos Threads de execução, sendo que cada uma trata de uma parte do programa Com essa definição, estamos estabelecendo que pode haver concorrência Exemplos: Java, C#, Visual C++.NET, Visual Basic.NET, Pythom

Linguagens atuais C e C++ Não são multithreaded versões padronizadas ANSI/ISO Há bibliotecas que habilitam o suporte a multithreading #include <pthread.h> #include <semaphore.h>

O que são threads? Fluxo único de instruções ou fluxo de controle Também chamado de Processo Leve (Lightweight Process) Fazem parte e compartilham atributos de um processo tradicional (Heavyweight Process) Podem executar concorrentemente para atingir uma meta comum São escalonadas no processador com seu conjunto de instruções independentes Gerenciados pelo SO ou pela aplicação usuária

Threads e Processos Processo pesado Informações globais para todos os threads de um processo Espaço de endereçamento Outros dados globais do processo Registradores Registradores Registradores Informações locais para cada threads Pilha Máscara... Pilha Máscara... Pilha Máscara... Threads

Modelosde threads Threads de usuário São criadas por bibliotecas em tempo de execução e não executam acesso direto ao núcleo Threads de núcleo Realiza as operações que as threads de usuário não tem privilégio Mapeamentoum-para-um 1Thread de núcleoparacadathread de usuário

Por que criar threads? Projeto de Software Criação de segmentos de códigos que podem executar independentemente da aplicação Desempenho Compartilhamento de processador para execução de várias tarefas em paralelo Execução concorrente paralela reduz o tempo para conclusão de tarefas Cooperação Comunicação entre Threads de um processo é muito mais ágil (espaço de endereçamento compartilhado) que a comunicação intraprocessos

Ciclo de vida de threads nascido iniciar pronto preempção despacho notificar ou acordar esperar por evento dormir em execução concluir requisição de E/S conclusão de E/S em espera adormecido morto bloqueado intervalo de sono expira

Considerações sobre implementação de threads Entregade sinalde thread Umadas principaisformasde comunicaçãoentre processos Sinais síncronos: resultado de uma instrução executada pelo processo ou thread Aviso de execução de operação ilegal de memória Sinais assíncronos: resultado de evento não relacionado com a transação corrente Notificação de conclusão de E/S Suspensão, continuação, término de um processo

Considerações sobre implementação de threads (cont.) Entregade sinalde thread (cont.) Processoscom um únicothreadentregam os sinais diretamente Sinais síncronos: entrega do sinal ao thread corrente Sinais assíncronos: entrega direta se o processo estiver emexecuçãoouenviode sinalparaumafilade sinais pendentes

Considerações sobre implementação de threads (cont.) Entregade sinalde thread (cont.) Processosmultithread Sinais síncronos: entrega do sinal ao thread corrente Sinaisassíncronos: mecanismode identificaçãodo thread receptor Thread ID Problema com threads de usuário POSIX define o mascaramentoa criaçãodo ID de processoe o mascaramento de sinais

Considerações sobre implementação de threads (cont.) Término de threads Threads finalizame podemser removidasdo sistema por alguns motivos Normalmente: término de uma execução Prematuramente: exceção ou sinal de cancelamento Necessidade de criar mecanismos para remoção de threads Evitar gravação errada nos dados compartilhados (principal meio de troca de informações de threads)

POSIX e Pthreads Threads POSIX oupthreadssãoas threads que implementam os padrões POSIX POSIX Portable Operating Systems Interface for Computing Environments define: Conjunto de padrões para interfaces de sistemas operacionais(publicado no IEEE) baseado no UNIX Interface-padrãoentre threads e as bibliotecasde suportea threads nãose preocupacom detalhes de implementação

POSIX e Pthreads(cont.) A definição POSIX: Registradoresdo processador, pilhae máscarade sinais devem ser únicos para cada thread Outros recursos devem ser acessíveis globalmente Define regras para sinais Sinais de Exceções devem ser entregues diretamente Sinaispara matar umthread sãoentreguesa threads que não mascarem tal sinal

Threads em Java Em Java, thread significa duas coisas: Uma instância da classe java.lang.thread Um objeto com variáveis e operações Uma thread de execução Um processo individual Processo Leve (Lightweight Process)

Principais métodos start(): inicia a execução da thread (chama o método run) suspend(): suspende a execução da thread que está executando sleep(): faz a thread que está executando dormir por um tempo determinado yield(): faz a thread que está executando dormir por um tempo indeterminado resume(): resume a execução de uma thread suspensa

Principais métodos (cont.) stop():t erminaa execução de uma thread; a thread não pode ser mais executada. join():método que espera o término da THREAD para qual foi enviada a mensagem para ser liberada. interrupt():método que interrompe a execução de uma THREAD. interrupted():método que testa se uma THREAD está ou não interrompida.

Definindoumathread Herança java.lang.thread Maneira mais simples 1) Extender classe Thread. public class MyThreadextends Thread { public void run() { System.out.println( Herança"); } } 2) Sobrescrevero método run()

Definindoumathread (cont.) Limitações de utilizar herança É uma escolha considerada pobre quando falamos de design Java não suporte herança multipla

Definindoumathread (cont.) Interface java.lang.runnable 1) Implementar interface Runnable. public class MyThreadimplementsRunnable{ public void run() { System.out.println( Interface"); } } 2) Implementaro método run()

Criandoum thread Quando utilizamos herança MyThreadt = newmythread( ) Quando utilizamos interface Primeiro criamos um objeto da nossa classe: MyRunnabler = newmyrunnable(); Depois criamos um Thread (ele irá executar nosso trabalho) Thread t = newthread(r); Neste ponto precisamos passar nosso objeto para ser executado pela Thread criada

Executandoum thread Basta invocarmos o método start() t.start(); O que acontece internamente? public class Thread..... start() { }.. public class MyThread { public void run() { System.out.println( Interface"); }

Sugestão de leitura Linguagem Ada http://groups.engin.umd.umich.edu/cis/course.des/cis400/ada/ada.html Multithreading em C http://softpixel.com/~cwright/programming/threads/threads.c.php Threads SCJP Sun Certified Java Programmer for Java 5 Study Guide bykathy Sierraand Bert Bates

Obrigado!!!