1 prof. robert gans faculdade pitÁgoras de tecnologia faculdade pitÁgoras – outubro de 2012...

26
1 Prof. Robert Gans FACULDADE PITÁGORAS DE TECNOLOGIA Faculdade PITÁGORAS – Outubro de 2012 Prof. Robert Gans [email protected] Conceitos de thread

Upload: internet

Post on 22-Apr-2015

113 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: 1 Prof. Robert Gans FACULDADE PITÁGORAS DE TECNOLOGIA Faculdade PITÁGORAS – Outubro de 2012 Prof. Robert Gans robert.gans@gmail.com Conceitos de thread

1Prof. Robert Gans

FACULDADE PITÁGORAS DE TECNOLOGIA

Faculdade PITÁGORAS – Outubro de 2012Prof. Robert Gans

[email protected]

Conceitos de thread

Page 2: 1 Prof. Robert Gans FACULDADE PITÁGORAS DE TECNOLOGIA Faculdade PITÁGORAS – Outubro de 2012 Prof. Robert Gans robert.gans@gmail.com Conceitos de thread

2Prof. Robert Gans

FACULDADE PITÁGORAS DE TECNOLOGIA

Introdução (Threads)

• Partes de um processo que compartilham mesmo espaço de endereçamento;

• Sub-rotina de um programa executado paralelamente ao programa chamador (execução concorrente de sub-rotinas);

• Mais uma definição:

–Enquanto processos permitem que o sistema operacional execute mais de uma aplicação ao mesmo tempo, as threads permitem que a aplicação execute mais de um método ao mesmo tempo.

Page 3: 1 Prof. Robert Gans FACULDADE PITÁGORAS DE TECNOLOGIA Faculdade PITÁGORAS – Outubro de 2012 Prof. Robert Gans robert.gans@gmail.com Conceitos de thread

3Prof. Robert Gans

FACULDADE PITÁGORAS DE TECNOLOGIA

Definição de thread

Thread■ É às vezes chamado de processo leve (LWP - light-weight process).■ Existem threads de instrução ou threads de controle.■ Os threads compartilham espaço de endereço e outras

informações globais com seu próprio processo.■ Registradores, pilha, máscaras de sinal e outros dados

específicos de thread são nativos a cada thread. Os threads devem ser gerenciados pelo sistema

operacional ou pela aplicação de usuário. Exemplos: threads Win32, C-threads, threads em

java, etc.

Page 4: 1 Prof. Robert Gans FACULDADE PITÁGORAS DE TECNOLOGIA Faculdade PITÁGORAS – Outubro de 2012 Prof. Robert Gans robert.gans@gmail.com Conceitos de thread

4Prof. Robert Gans

FACULDADE PITÁGORAS DE TECNOLOGIA

Figura 4.1 Relação entre thread e processo.

Definição de thread

Page 5: 1 Prof. Robert Gans FACULDADE PITÁGORAS DE TECNOLOGIA Faculdade PITÁGORAS – Outubro de 2012 Prof. Robert Gans robert.gans@gmail.com Conceitos de thread

5Prof. Robert Gans

FACULDADE PITÁGORAS DE TECNOLOGIA

Vantagens/Desvantagens de threads

• Vantagens:

– Desempenho:• não existe necessidade de comunicação entre processos;• utilização de multiprocessadores para um mesmo processo;• um programa pode continuar sendo executado mesmo se parte dele estiver

bloqueada (um navegador pode permitir a interação do usuário em um thread enquanto uma imagem é carregada em outro thread);

• Desvantagem: o desenvolvimento de aplicações não é simples;

Page 6: 1 Prof. Robert Gans FACULDADE PITÁGORAS DE TECNOLOGIA Faculdade PITÁGORAS – Outubro de 2012 Prof. Robert Gans robert.gans@gmail.com Conceitos de thread

6Prof. Robert Gans

FACULDADE PITÁGORAS DE TECNOLOGIA

Threads

• Mais exemplos:

– Navegador Web: • um thread para exibir imagens• um thread para recuperar dados da rede

– Processador de texto:• um thread para seqüência de teclas• um thread para verificação ortográfica e gramatical

• Para obter benefícios do uso de threads, aplicação deve permitir que partes do seu código sejam executadas em paralelo de forma independente;

Page 7: 1 Prof. Robert Gans FACULDADE PITÁGORAS DE TECNOLOGIA Faculdade PITÁGORAS – Outubro de 2012 Prof. Robert Gans robert.gans@gmail.com Conceitos de thread

7Prof. Robert Gans

FACULDADE PITÁGORAS DE TECNOLOGIA

Threads

• Por que não dividir em vários outros processos?

– A criação de um processo e a mudança de contexto consome muito mais recurso do que a criação de uma thread;

– Como cada processo possui espaço de endereçamento próprio, a comunicação entre processos é difícil e lenta;

• Exemplos de sistemas monothreads:– MS-DOS e primeiras versões do Windows;

Page 8: 1 Prof. Robert Gans FACULDADE PITÁGORAS DE TECNOLOGIA Faculdade PITÁGORAS – Outubro de 2012 Prof. Robert Gans robert.gans@gmail.com Conceitos de thread

8Prof. Robert Gans

FACULDADE PITÁGORAS DE TECNOLOGIA

Ambiente Multithreads

• Cada processo possui pelo menos um thread;

• Exemplo: programa com duas sub-rotinas independentes

Page 9: 1 Prof. Robert Gans FACULDADE PITÁGORAS DE TECNOLOGIA Faculdade PITÁGORAS – Outubro de 2012 Prof. Robert Gans robert.gans@gmail.com Conceitos de thread

9Prof. Robert Gans

FACULDADE PITÁGORAS DE TECNOLOGIA

Ambiente Multithreads

• Processo fica responsável pela alocação de recursos, mas a unidade escalonada é a thread;

• TCB: armazena contexto de hardware e informações sobre a thread (prioridade, estado...)

• O TCB está para a thread assim como o PCB está para o processo!

Page 10: 1 Prof. Robert Gans FACULDADE PITÁGORAS DE TECNOLOGIA Faculdade PITÁGORAS – Outubro de 2012 Prof. Robert Gans robert.gans@gmail.com Conceitos de thread

10Prof. Robert Gans

FACULDADE PITÁGORAS DE TECNOLOGIA

Ambiente Multithreads

• Threads de um mesmo processo compartilham contexto de software e espaço de endereçamento, mas não compartilham contexto de hardware;

Pro gra m a

C o n texto d eSo ftw a re

C o n texto d eH a rdw are

Esp aço deEn dereça m en to

Estrutura do processo

C on textode hardw a re

C on textode hardw a re

C ontextode hardw a re

Espaço deendereça mento

Co

nte

xto

de

soft

wa

re

Th rea d 3Th rea d 2Th rea d 1

Processo MULTITHREAD

Page 11: 1 Prof. Robert Gans FACULDADE PITÁGORAS DE TECNOLOGIA Faculdade PITÁGORAS – Outubro de 2012 Prof. Robert Gans robert.gans@gmail.com Conceitos de thread

11Prof. Robert Gans

FACULDADE PITÁGORAS DE TECNOLOGIA

Ambiente Multithreads

Esp aço d een dereça m en to

Processo

Program a Pr in cipa l

Co

nte

xto

de

Ha

rdw

are

Co

nte

xto

de

Ha

rdw

are

Co

nte

xto

de

Ha

rdw

are

C a l l Su b_1

C a ll Su b_2

Th rea d_1

Th rea d_2

Th rea d_3

PCSP

PCSP

PCSP

Fim

Sub _2

Va riáve is

Ret

Sub _1

Ret

...

...

Page 12: 1 Prof. Robert Gans FACULDADE PITÁGORAS DE TECNOLOGIA Faculdade PITÁGORAS – Outubro de 2012 Prof. Robert Gans robert.gans@gmail.com Conceitos de thread

12Prof. Robert Gans

FACULDADE PITÁGORAS DE TECNOLOGIA

Ambiente Multithreads

• Threads são extremamente utilizadas em ambientes cliente/servidor. Ex: SGBD;

• Um único processo no servidor gera uma thread para cada solicitação de cliente;

Page 13: 1 Prof. Robert Gans FACULDADE PITÁGORAS DE TECNOLOGIA Faculdade PITÁGORAS – Outubro de 2012 Prof. Robert Gans robert.gans@gmail.com Conceitos de thread

13Prof. Robert Gans

FACULDADE PITÁGORAS DE TECNOLOGIA

Ambiente Multithreads

So licitações

Processo se rvido r

Th rea dTh rea d

Processo clienteProcesso cliente Processo cliente

Th rea d

Page 14: 1 Prof. Robert Gans FACULDADE PITÁGORAS DE TECNOLOGIA Faculdade PITÁGORAS – Outubro de 2012 Prof. Robert Gans robert.gans@gmail.com Conceitos de thread

14Prof. Robert Gans

FACULDADE PITÁGORAS DE TECNOLOGIA

Motivação na criação de threads

Os threads tornaram-se proeminentes por causa de tendências subseqüentes em relação:

■ Ao projeto de software ● Maior simplicidade para exprimir tarefas inerentemente paralelas.

■ Ao desempenho● Maior escalonamento para sistemas com múltiplos processadores.

■ À cooperação● O custo operacional do espaço de endereço compartilhado é menor

que o da IPC.

Page 15: 1 Prof. Robert Gans FACULDADE PITÁGORAS DE TECNOLOGIA Faculdade PITÁGORAS – Outubro de 2012 Prof. Robert Gans robert.gans@gmail.com Conceitos de thread

15Prof. Robert Gans

FACULDADE PITÁGORAS DE TECNOLOGIA

Motivação na criação de threads

Todo thread transita entre uma série de estados de thread distintos.

Os threads e os processos têm muitas operações em comum (por exemplo, criar, sair, retomar e suspender).

A criação de thread não requer que o sistema operacional inicialize recursos compartilhados entre os processos-pai e os respectivos threads.

■ Isso reduz o esforço de criação e término de threads, em comparação à criação e ao término de processo.

Page 16: 1 Prof. Robert Gans FACULDADE PITÁGORAS DE TECNOLOGIA Faculdade PITÁGORAS – Outubro de 2012 Prof. Robert Gans robert.gans@gmail.com Conceitos de thread

16Prof. Robert Gans

FACULDADE PITÁGORAS DE TECNOLOGIA

Estados de thread: ciclo de vida de um thread

Estados de thread■ Estado nascido■ Estado pronto (estado executável)■ Estado em execução■ Estado morto■ Estado bloqueado■ Estado de espera■ Estado adormecido

● O período de sono especifica por quanto tempo um thread ficará adormecido.

Page 17: 1 Prof. Robert Gans FACULDADE PITÁGORAS DE TECNOLOGIA Faculdade PITÁGORAS – Outubro de 2012 Prof. Robert Gans robert.gans@gmail.com Conceitos de thread

17Prof. Robert Gans

FACULDADE PITÁGORAS DE TECNOLOGIA

Figura 4.2 Ciclo de vida do thread.

Estados de thread: ciclo de vida de um thread

Em sistemas operacionais, preemptividade ou preempção é a capacidade de alterar a ordem de (ou tirar de execução) um processo em detrimento de outro com uma prioridade maior.

Page 18: 1 Prof. Robert Gans FACULDADE PITÁGORAS DE TECNOLOGIA Faculdade PITÁGORAS – Outubro de 2012 Prof. Robert Gans robert.gans@gmail.com Conceitos de thread

18Prof. Robert Gans

FACULDADE PITÁGORAS DE TECNOLOGIA

Operações de thread

As operações de thread não correspondem precisamente às operações de processo.

■ Cancelar● Indica que um thread deve ser terminado, mas não garante que o

thread será terminado.● Os threads podem mascarar o sinal de cancelamento.

■ Associar● Para que um thread primário aguarde até que todos os outros threads

terminem, ele se associa a esses threads.● O thread que se associa é bloqueado até que o thread ao qual ele se

associou termine.

Page 19: 1 Prof. Robert Gans FACULDADE PITÁGORAS DE TECNOLOGIA Faculdade PITÁGORAS – Outubro de 2012 Prof. Robert Gans robert.gans@gmail.com Conceitos de thread

19Prof. Robert Gans

FACULDADE PITÁGORAS DE TECNOLOGIA

Modelos de thread

Três são os modelos de thread mais conhecidos:■ Threads de usuário■ Threads de núcleo■ Uma combinação de ambos

Page 20: 1 Prof. Robert Gans FACULDADE PITÁGORAS DE TECNOLOGIA Faculdade PITÁGORAS – Outubro de 2012 Prof. Robert Gans robert.gans@gmail.com Conceitos de thread

20Prof. Robert Gans

FACULDADE PITÁGORAS DE TECNOLOGIA

Threads de usuário

Os threads de usuário executam operações de suporte a threads no espaço do usuário.

■ Isso significa que os threads são criados por bibliotecas em tempo de execução que não podem executar instruções privilegiadas nem acessar as primitivas do núcleo diretamente.

Implementação de thread de usuário■ Mapeamentos de thread muitos-para-um

● O sistema operacional mapeia todos os threads de um processo multithread para um único contexto de execução.

● Vantagens→ As bibliotecas de usuário podem escalonar seus threads para

otimizar o desempenho.→ A sincronização é realizada fora do núcleo, e isso evita chaveamento

de contexto.→ É mais portável.

● Desvantagens→ O núcleo considera o processo multithread como um único thread de

controle.▪ Isso pode fazer com que o desempenho fique abaixo do ideal

se um thread requisitar uma operação E/S.▪ Não pode ser escalonado para executar em múltiplos

processadores ao mesmo tempo.empo.M odou suá rio

M odokernel

Kernel

Bib lio teca

Thre

ad

0

Thre

ad

4

Thre

ad

3

Thre

ad

2

Thre

ad

1

Page 21: 1 Prof. Robert Gans FACULDADE PITÁGORAS DE TECNOLOGIA Faculdade PITÁGORAS – Outubro de 2012 Prof. Robert Gans robert.gans@gmail.com Conceitos de thread

21Prof. Robert Gans

FACULDADE PITÁGORAS DE TECNOLOGIA

Figura 4.3 Threads de usuário.

Threads de usuário

Page 22: 1 Prof. Robert Gans FACULDADE PITÁGORAS DE TECNOLOGIA Faculdade PITÁGORAS – Outubro de 2012 Prof. Robert Gans robert.gans@gmail.com Conceitos de thread

22Prof. Robert Gans

FACULDADE PITÁGORAS DE TECNOLOGIA

Threads de núcleo

Os threads de núcleo tentam resolver as limitações dos threads de usuário mapeando cada thread para o seu próprio contexto de execução.

■ O thread de núcleo oferece mapeamento de thread um-para-um.

● Vantagens: maior escalabilidade, interatividade e rendimento.● Desvantagens: sobrecarga decorrente do chaveamento de contexto e

menor portabilidade em virtude de as APIs serem específicas ao sistema operacional.

Os threads de núcleo nem sempre são a solução ideal para as aplicações.

M odou suá rio

M odokernelKernel

Thre

ad

0

Thre

ad

4

Thre

ad

3

Thre

ad

2

Thre

ad

1

Page 23: 1 Prof. Robert Gans FACULDADE PITÁGORAS DE TECNOLOGIA Faculdade PITÁGORAS – Outubro de 2012 Prof. Robert Gans robert.gans@gmail.com Conceitos de thread

23Prof. Robert Gans

FACULDADE PITÁGORAS DE TECNOLOGIA

Figura 4.4 Threads de núcleo.

Threads de núcleo

Page 24: 1 Prof. Robert Gans FACULDADE PITÁGORAS DE TECNOLOGIA Faculdade PITÁGORAS – Outubro de 2012 Prof. Robert Gans robert.gans@gmail.com Conceitos de thread

24Prof. Robert Gans

FACULDADE PITÁGORAS DE TECNOLOGIA

Combinação de threads de usuário e de núcleo

Implementação da combinação de threads de usuário (TMU) e de núcleo (TMK)

■ Mapeamento de threads muitos-para-muitos (mapeamento de threads m-to-n)

● Em comparação com os mapeamentos de threads um-para-um, esse mapeamento consegue reduzir a sobrecarga implementando o reservatório de threads.

M odou suá rio

M odokernel

Kernel

TM K 0 TM K 3TM K 2TM K 1

Bib lio teca

TMU

0

TMU

4

TMU

5

TMU

3

TMU

2

TMU

1

Um processo pode ter vários TMKs, e por sua vez, um TMK pode ter vários TMUs. O núcleo do SO reconhece os TMKs e pode escalona-los individualmente. Um TMU pode ser executado em um TMK,em um determinado momento, e no instante seguinte ser executado em outro.

Page 25: 1 Prof. Robert Gans FACULDADE PITÁGORAS DE TECNOLOGIA Faculdade PITÁGORAS – Outubro de 2012 Prof. Robert Gans robert.gans@gmail.com Conceitos de thread

25Prof. Robert Gans

FACULDADE PITÁGORAS DE TECNOLOGIA

Figura 4.5 Modelo de operação de thread híbrido.

Combinação de threads de usuário e de núcleo

Page 26: 1 Prof. Robert Gans FACULDADE PITÁGORAS DE TECNOLOGIA Faculdade PITÁGORAS – Outubro de 2012 Prof. Robert Gans robert.gans@gmail.com Conceitos de thread

26Prof. Robert Gans

FACULDADE PITÁGORAS DE TECNOLOGIA

Término de threads

Término de threads (cancelamento)■ É diferente de implementação de threads.■ Se for terminado prematuramente, o thread pode provocar

erros sutis nos processos, porque vários threads compartilham o mesmo espaço de endereço.

■ Determinadas implementações de thread permitem que um thread determine quando ele pode ser terminado, a fim de evitar que o processo entre em um estado inconsistente.