faculdade pitÁgoras – outubro de 2012 prof. robert gans robert.gans@gmail

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: slade

Post on 19-Jan-2016

21 views

Category:

Documents


3 download

DESCRIPTION

Conceitos de thread. Faculdade PITÁGORAS – Outubro de 2012 Prof. Robert Gans [email protected]. Introdução (Threads). Partes de um processo que compartilham mesmo espaço de endereçamento; - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Faculdade PITÁGORAS – Outubro de 2012 Prof. Robert Gans robert.gans@gmail

1Prof. Robert Gans

FACULDADE PITÁGORAS DE TECNOLOGIA

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

[email protected]

Conceitos de thread

Page 2: Faculdade PITÁGORAS – Outubro de 2012 Prof. Robert Gans robert.gans@gmail

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: Faculdade PITÁGORAS – Outubro de 2012 Prof. Robert Gans robert.gans@gmail

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: Faculdade PITÁGORAS – Outubro de 2012 Prof. Robert Gans robert.gans@gmail

4Prof. Robert Gans

FACULDADE PITÁGORAS DE TECNOLOGIA

Figura 4.1 Relação entre thread e processo.

Definição de thread

Page 5: Faculdade PITÁGORAS – Outubro de 2012 Prof. Robert Gans robert.gans@gmail

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: Faculdade PITÁGORAS – Outubro de 2012 Prof. Robert Gans robert.gans@gmail

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: Faculdade PITÁGORAS – Outubro de 2012 Prof. Robert Gans robert.gans@gmail

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: Faculdade PITÁGORAS – Outubro de 2012 Prof. Robert Gans robert.gans@gmail

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: Faculdade PITÁGORAS – Outubro de 2012 Prof. Robert Gans robert.gans@gmail

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: Faculdade PITÁGORAS – Outubro de 2012 Prof. Robert Gans robert.gans@gmail

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: Faculdade PITÁGORAS – Outubro de 2012 Prof. Robert Gans robert.gans@gmail

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: Faculdade PITÁGORAS – Outubro de 2012 Prof. Robert Gans robert.gans@gmail

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: Faculdade PITÁGORAS – Outubro de 2012 Prof. Robert Gans robert.gans@gmail

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: Faculdade PITÁGORAS – Outubro de 2012 Prof. Robert Gans robert.gans@gmail

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: Faculdade PITÁGORAS – Outubro de 2012 Prof. Robert Gans robert.gans@gmail

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: Faculdade PITÁGORAS – Outubro de 2012 Prof. Robert Gans robert.gans@gmail

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: Faculdade PITÁGORAS – Outubro de 2012 Prof. Robert Gans robert.gans@gmail

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: Faculdade PITÁGORAS – Outubro de 2012 Prof. Robert Gans robert.gans@gmail

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: Faculdade PITÁGORAS – Outubro de 2012 Prof. Robert Gans robert.gans@gmail

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: Faculdade PITÁGORAS – Outubro de 2012 Prof. Robert Gans robert.gans@gmail

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: Faculdade PITÁGORAS – Outubro de 2012 Prof. Robert Gans robert.gans@gmail

21Prof. Robert Gans

FACULDADE PITÁGORAS DE TECNOLOGIA

Figura 4.3 Threads de usuário.

Threads de usuário

Page 22: Faculdade PITÁGORAS – Outubro de 2012 Prof. Robert Gans robert.gans@gmail

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: Faculdade PITÁGORAS – Outubro de 2012 Prof. Robert Gans robert.gans@gmail

23Prof. Robert Gans

FACULDADE PITÁGORAS DE TECNOLOGIA

Figura 4.4 Threads de núcleo.

Threads de núcleo

Page 24: Faculdade PITÁGORAS – Outubro de 2012 Prof. Robert Gans robert.gans@gmail

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: Faculdade PITÁGORAS – Outubro de 2012 Prof. Robert Gans robert.gans@gmail

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: Faculdade PITÁGORAS – Outubro de 2012 Prof. Robert Gans robert.gans@gmail

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.