threads - edwar saliba júnioresj.eti.br/ined/fso/fso_unidade_02_003.pdffundamentos de sistemas...

34
1 Unidade 02 - 003 – Threads Fundamentos de Sistemas Operacionais Threads Prof. Edwar Saliba Júnior Março de 2007

Upload: trinhanh

Post on 10-Dec-2018

229 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Threads - Edwar Saliba Júnioresj.eti.br/INED/FSO/FSO_Unidade_02_003.pdfFundamentos de Sistemas Operacionais Arquitetura – Modo Kernel • A tabela abaixo compara o desempenho de

1Unidade 02 - 003 – Threads

Fundamentos de Sistemas Operacionais

Threads

Prof. Edwar Saliba JúniorMarço de 2007

Page 2: Threads - Edwar Saliba Júnioresj.eti.br/INED/FSO/FSO_Unidade_02_003.pdfFundamentos de Sistemas Operacionais Arquitetura – Modo Kernel • A tabela abaixo compara o desempenho de

2Unidade 02 - 003 – Threads

Fundamentos de Sistemas Operacionais

Definição

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

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

• Exemplos:– Threads em Java, Delphi e etc.

Page 3: Threads - Edwar Saliba Júnioresj.eti.br/INED/FSO/FSO_Unidade_02_003.pdfFundamentos de Sistemas Operacionais Arquitetura – Modo Kernel • A tabela abaixo compara o desempenho de

3Unidade 02 - 003 – Threads

Fundamentos de Sistemas Operacionais

Outra 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 (parte da aplicação, sub-rotina) ao mesmo tempo.

Page 4: Threads - Edwar Saliba Júnioresj.eti.br/INED/FSO/FSO_Unidade_02_003.pdfFundamentos de Sistemas Operacionais Arquitetura – Modo Kernel • A tabela abaixo compara o desempenho de

4Unidade 02 - 003 – Threads

Fundamentos de Sistemas Operacionais

Vantagens e Desvantagens

• 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 uma thread enquanto uma imagem é carregada em outra thread);

• Desvantagem: O desenvolvimento de aplicações que fazem uso de Threads não é simples.

Page 5: Threads - Edwar Saliba Júnioresj.eti.br/INED/FSO/FSO_Unidade_02_003.pdfFundamentos de Sistemas Operacionais Arquitetura – Modo Kernel • A tabela abaixo compara o desempenho de

5Unidade 02 - 003 – Threads

Fundamentos de Sistemas Operacionais

Exemplos

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

• Processador de texto:– Uma thread para sequência de teclas digitadas;– Uma thread para verificação ortográfica e

gramatical.

Page 6: Threads - Edwar Saliba Júnioresj.eti.br/INED/FSO/FSO_Unidade_02_003.pdfFundamentos de Sistemas Operacionais Arquitetura – Modo Kernel • A tabela abaixo compara o desempenho de

6Unidade 02 - 003 – Threads

Fundamentos de Sistemas Operacionais

É bom saber...

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

Page 7: Threads - Edwar Saliba Júnioresj.eti.br/INED/FSO/FSO_Unidade_02_003.pdfFundamentos de Sistemas Operacionais Arquitetura – Modo Kernel • A tabela abaixo compara o desempenho de

7Unidade 02 - 003 – Threads

Fundamentos de Sistemas Operacionais

Pergunta-se…

• Ao invés de Threads, por que não dividir a aplicação em vários outros processos?– A criação de um processo e a mudança de

contexto consomem muito mais recursos 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.

Page 8: Threads - Edwar Saliba Júnioresj.eti.br/INED/FSO/FSO_Unidade_02_003.pdfFundamentos de Sistemas Operacionais Arquitetura – Modo Kernel • A tabela abaixo compara o desempenho de

8Unidade 02 - 003 – Threads

Fundamentos de Sistemas Operacionais

Mono e Multithread

• Os sistemas que suportam apenas uma única thread de execução, são chamados de monothread. E aqueles que suportam múltiplas threads, são chamados de multithread;

• Exemplos de sistemas Monothreads:

– MS-DOS e primeiras versões do Windows.

T h r e a d T h r e a dT h r e a d

Page 9: Threads - Edwar Saliba Júnioresj.eti.br/INED/FSO/FSO_Unidade_02_003.pdfFundamentos de Sistemas Operacionais Arquitetura – Modo Kernel • A tabela abaixo compara o desempenho de

9Unidade 02 - 003 – Threads

Fundamentos de Sistemas Operacionais

Ambiente Multithread

C o n t e x t od e h a r d w a r e

C o n t e x t od e h a r d w a r e

C o n t e x t od e h a r d w a r e

E s p a ç o d ee n d e r e ç a m e n t o

Co

nte

xto

de

soft

wa

re

T h r e a d 3T h r e a d 2T h r e a d 1

Page 10: Threads - Edwar Saliba Júnioresj.eti.br/INED/FSO/FSO_Unidade_02_003.pdfFundamentos de Sistemas Operacionais Arquitetura – Modo Kernel • A tabela abaixo compara o desempenho de

10Unidade 02 - 003 – Threads

Fundamentos de Sistemas Operacionais

Ambiente Multithread

• Cada processo possui pelo menos uma thread

• Exemplo: programa com duas sub-rotinas independentes.

E s p a ç o d ee n d e r e ç a m e n t o

P r o c e s s o

P r o g r a m a P r i n c i p a 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 S u b _ 1

C a l l S u b _ 2

T h r e a d _ 1

T h r e a d _ 2

T h r e a d _ 3

P CS P

P CS P

P CS P

F i m

S u b _ 2

V a r i á v e i s

R e t

S u b _ 1

R e t

...

...

Page 11: Threads - Edwar Saliba Júnioresj.eti.br/INED/FSO/FSO_Unidade_02_003.pdfFundamentos de Sistemas Operacionais Arquitetura – Modo Kernel • A tabela abaixo compara o desempenho de

11Unidade 02 - 003 – Threads

Fundamentos de Sistemas Operacionais

Ambiente Multithread

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

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

• 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 12: Threads - Edwar Saliba Júnioresj.eti.br/INED/FSO/FSO_Unidade_02_003.pdfFundamentos de Sistemas Operacionais Arquitetura – Modo Kernel • A tabela abaixo compara o desempenho de

12Unidade 02 - 003 – Threads

Fundamentos de Sistemas Operacionais

Ambiente Multithread

• Como o espaço de endereçamento é único, a aplicação precisa implementar a sincronização para garantir o acesso seguro à memória.

Page 13: Threads - Edwar Saliba Júnioresj.eti.br/INED/FSO/FSO_Unidade_02_003.pdfFundamentos de Sistemas Operacionais Arquitetura – Modo Kernel • A tabela abaixo compara o desempenho de

13Unidade 02 - 003 – Threads

Fundamentos de Sistemas Operacionais

Ambientes 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;

• Lembra da arquitetura Microkernel?– Pode ser implementada com o uso de threads (cada módulo

servidor é executado em uma thread).

Page 14: Threads - Edwar Saliba Júnioresj.eti.br/INED/FSO/FSO_Unidade_02_003.pdfFundamentos de Sistemas Operacionais Arquitetura – Modo Kernel • A tabela abaixo compara o desempenho de

14Unidade 02 - 003 – Threads

Fundamentos de Sistemas Operacionais

Ambientes Multithread

S o l i c i t a ç õ e s

P r o c e s s o s e r v i d o r

T h r e a dT h r e a d

P r o c e s s o c l i e n t eP r o c e s s o c l i e n t e P r o c e s s o c l i e n t e

T h r e a d

Page 15: Threads - Edwar Saliba Júnioresj.eti.br/INED/FSO/FSO_Unidade_02_003.pdfFundamentos de Sistemas Operacionais Arquitetura – Modo Kernel • A tabela abaixo compara o desempenho de

15Unidade 02 - 003 – Threads

Fundamentos de Sistemas Operacionais

Arquitetura

• Threads podem ser oferecidos por uma biblioteca de rotinas fora do núcleo do sistema operacional (modo usuário), pelo próprio núcleo do sistema (modo kernel), por uma combinação de ambos (modo híbrido) ou por um modelo conhecido como Scheduler Activations;

• A tabela abaixo mostra as diversas arquiteturas para diferentes ambientes operacionais:

Page 16: Threads - Edwar Saliba Júnioresj.eti.br/INED/FSO/FSO_Unidade_02_003.pdfFundamentos de Sistemas Operacionais Arquitetura – Modo Kernel • A tabela abaixo compara o desempenho de

16Unidade 02 - 003 – Threads

Fundamentos de Sistemas Operacionais

Arquitetura

Page 17: Threads - Edwar Saliba Júnioresj.eti.br/INED/FSO/FSO_Unidade_02_003.pdfFundamentos de Sistemas Operacionais Arquitetura – Modo Kernel • A tabela abaixo compara o desempenho de

17Unidade 02 - 003 – Threads

Fundamentos de Sistemas Operacionais

Arquitetura

• Varia de acordo com a implementação do pacote de rotinas necessárias para que a aplicação utilize as threads;

• Modo Usuário: A responsabilidade pela gerência e sincronização das threads é da aplicação; utilizado em sistemas operacionais que não suportam threads (pseudo-multithread).

M o d ou s u á r i o

M o d ok e r n e l

K e r n e l

B i b l i o t e c aTh

rea

d 0

Thre

ad

4

Thre

ad

3

Thre

ad

2

Thre

ad

1

Page 18: Threads - Edwar Saliba Júnioresj.eti.br/INED/FSO/FSO_Unidade_02_003.pdfFundamentos de Sistemas Operacionais Arquitetura – Modo Kernel • A tabela abaixo compara o desempenho de

18Unidade 02 - 003 – Threads

Fundamentos de Sistemas Operacionais

Arquitetura - Modo Usuário

• TMU possuem uma grande limitação, pois o sistema operacional gerencia cada processo como se existisse apenas um único thread. No momento em que um thread chama uma rotina do sistema que o coloca em estado de espera (rotina bloqueante), todo o processo é colocado no estado de espera, mesmo havendo outros threads prontos para execução.

Page 19: Threads - Edwar Saliba Júnioresj.eti.br/INED/FSO/FSO_Unidade_02_003.pdfFundamentos de Sistemas Operacionais Arquitetura – Modo Kernel • A tabela abaixo compara o desempenho de

19Unidade 02 - 003 – Threads

Fundamentos de Sistemas Operacionais

Arquitetura - Modo Usuário

• Um dos maiores problemas na implementação de TMU é o tratamento individual de sinais. Como o sistema reconhece apenas processos e não threads, os sinais enviados para um processo devem ser reconhecidos e encaminhados a cada thread para tratamento;

• No caso do recebimento de interrupções de clock, fundamental para implementação do tempo compartilhado, esta limitação é crítica. Neste caso, os sinais de temporização devem ser interceptados, para que se possa interromper o thread em execução e realizar a troca de contexto.

Page 20: Threads - Edwar Saliba Júnioresj.eti.br/INED/FSO/FSO_Unidade_02_003.pdfFundamentos de Sistemas Operacionais Arquitetura – Modo Kernel • A tabela abaixo compara o desempenho de

20Unidade 02 - 003 – Threads

Fundamentos de Sistemas Operacionais

Arquitetura - Modo Usuário

• Em ambientes com múltiplos processadores, não é possível que múltiplos threads de um processo possam ser executados em diferentes CPU's simultaneamente, pois o sistema seleciona apenas processos para execução e não threads;

• Esta restrição limita drasticamente o grau de paralelismo da aplicação, já que os threads de um mesmo processo podem ser executados em somente

um processador de cada vez.

Page 21: Threads - Edwar Saliba Júnioresj.eti.br/INED/FSO/FSO_Unidade_02_003.pdfFundamentos de Sistemas Operacionais Arquitetura – Modo Kernel • A tabela abaixo compara o desempenho de

21Unidade 02 - 003 – Threads

Fundamentos de Sistemas Operacionais

Arquitetura

• Modo Kernel: Sistema operacional provê rotinas para gerenciamento das Threads (necessita de mudanças nos modos de acesso).

M o d ou s u á r i o

M o d ok e r n e lK e r n e l

Thre

ad

0

Thre

ad

4

Thre

ad

3

Thre

ad

2

Thre

ad

1

Page 22: Threads - Edwar Saliba Júnioresj.eti.br/INED/FSO/FSO_Unidade_02_003.pdfFundamentos de Sistemas Operacionais Arquitetura – Modo Kernel • A tabela abaixo compara o desempenho de

22Unidade 02 - 003 – Threads

Fundamentos de Sistemas Operacionais

Arquitetura – Modo Kernel

• Threads em modo kernel (TMK) são implementados diretamente pelo núcleo do sistema operacional, através de chamadas a rotinas do sistema que oferecem todas as funções de gerenciamento e sincronização;

• O sistema operacional sabe da existência de cada thread e pode escaloná-los individualmente;

• No caso de múltiplos processadores, os threads de um mesmo processo podem ser executados simultaneamente.

Page 23: Threads - Edwar Saliba Júnioresj.eti.br/INED/FSO/FSO_Unidade_02_003.pdfFundamentos de Sistemas Operacionais Arquitetura – Modo Kernel • A tabela abaixo compara o desempenho de

23Unidade 02 - 003 – Threads

Fundamentos de Sistemas Operacionais

Arquitetura – Modo Kernel

• O grande problema para pacotes em modo kernel é o seu baixo desempenho;

• Enquanto nos pacotes em modo usuário todo tratamento é feito sem a ajuda do sistema operacional, ou seja, sem a mudança do modo de acesso, pacotes em modo kernel utilizam chamadas a rotinas do sistema e várias mudanças no modo de acesso.

Page 24: Threads - Edwar Saliba Júnioresj.eti.br/INED/FSO/FSO_Unidade_02_003.pdfFundamentos de Sistemas Operacionais Arquitetura – Modo Kernel • A tabela abaixo compara o desempenho de

24Unidade 02 - 003 – Threads

Fundamentos de Sistemas Operacionais

Arquitetura – Modo Kernel

• A tabela abaixo compara o desempenho de duas operações distintas envolvendo a criação, escalonamento, execução e eliminação de um processo/thread:

Page 25: Threads - Edwar Saliba Júnioresj.eti.br/INED/FSO/FSO_Unidade_02_003.pdfFundamentos de Sistemas Operacionais Arquitetura – Modo Kernel • A tabela abaixo compara o desempenho de

25Unidade 02 - 003 – Threads

Fundamentos de Sistemas Operacionais

Arquitetura

• Modo Híbrido: Cada thread em Modo Kernel pode ter várias threads em Modo Usuário (problemas de ambas implementações).

M o d ou s u á r i o

M o d ok e r n e l

K e r n e l

T M K 0 T M K 3T M K 2T M K 1

B i b l i o t e c a

TMU

0

TMU

4

TMU

5

TMU

3

TMU

2

TMU

1

Page 26: Threads - Edwar Saliba Júnioresj.eti.br/INED/FSO/FSO_Unidade_02_003.pdfFundamentos de Sistemas Operacionais Arquitetura – Modo Kernel • A tabela abaixo compara o desempenho de

26Unidade 02 - 003 – Threads

Fundamentos de Sistemas Operacionais

Arquitetura – Modo Híbrido

• A arquitetura de threads em modo híbrido combina as vantagens de threads implementados em modo usuário e threads em modo kernel;

• Um processo pode ter vários TMK's e, por sua vez, um TMK pode ter vários TMU's;

• O núcleo do sistema reconhece os TMK's e pode escaloná-los individualmente;

• Um TMU pode ser executado em um TMK, em um determinado momento, e no instante seguinte pode ser executado em outro.

Page 27: Threads - Edwar Saliba Júnioresj.eti.br/INED/FSO/FSO_Unidade_02_003.pdfFundamentos de Sistemas Operacionais Arquitetura – Modo Kernel • A tabela abaixo compara o desempenho de

27Unidade 02 - 003 – Threads

Fundamentos de Sistemas Operacionais

Arquitetura – Modo Híbrido

• O programador desenvolve a aplicação em termos de TMU e especifica quantos TMK's estão associados ao processo;

• Os TMU's são mapeados em TMK's enquanto o processo está sendo executado;

• O programador pode utilizar apenas TMK's, TMU's ou uma combinação de ambos.

Page 28: Threads - Edwar Saliba Júnioresj.eti.br/INED/FSO/FSO_Unidade_02_003.pdfFundamentos de Sistemas Operacionais Arquitetura – Modo Kernel • A tabela abaixo compara o desempenho de

28Unidade 02 - 003 – Threads

Fundamentos de Sistemas Operacionais

Arquitetura – Modo Híbrido

• O modo híbrido, apesar da maior flexibilidade, apresenta problemas herdados de ambas as implementações: – quando uma TMK realiza uma chamada bloqueante,

todos os TMU's, a ela associados, são colocados no estado de espera;

– TMU's que desejam utilizar vários processadores devem utilizar diferentes TMK's, o que influenciará no desempenho.

Page 29: Threads - Edwar Saliba Júnioresj.eti.br/INED/FSO/FSO_Unidade_02_003.pdfFundamentos de Sistemas Operacionais Arquitetura – Modo Kernel • A tabela abaixo compara o desempenho de

29Unidade 02 - 003 – Threads

Fundamentos de Sistemas Operacionais

Arquitetura

• Scheduler Activations: Escalonamento em modo usuário para reduzir mudanças no modo de acesso.

M o d ou s u á r i o

M o d ok e r n e lK e r n e l

B i b l i o t e c a

Thre

ad

0

Thre

ad

4

Thre

ad

3

Thre

ad

2

Thre

ad

1

Page 30: Threads - Edwar Saliba Júnioresj.eti.br/INED/FSO/FSO_Unidade_02_003.pdfFundamentos de Sistemas Operacionais Arquitetura – Modo Kernel • A tabela abaixo compara o desempenho de

30Unidade 02 - 003 – Threads

Fundamentos de Sistemas Operacionais

Arquitetura – Scheduler Activations

• Os problemas apresentados no pacote de threads em modo híbrido existem devido à falta de comunicação entre os threads em modo usuário e em modo kernel. O modelo ideal deveria utilizar as facilidades do pacote em modo kernel com o desempenho e flexibilidade do modo usuário.

Page 31: Threads - Edwar Saliba Júnioresj.eti.br/INED/FSO/FSO_Unidade_02_003.pdfFundamentos de Sistemas Operacionais Arquitetura – Modo Kernel • A tabela abaixo compara o desempenho de

31Unidade 02 - 003 – Threads

Fundamentos de Sistemas Operacionais

Arquitetura – Scheduler Activations

• Introduzido no início da década de 1990 na Universidade de Washington, este pacote combina o melhor das duas arquiteturas, mas em vez de dividir os threads em modo usuário entre os de modo kernel, o núcleo do sistema troca informações com a biblioteca de threads utilizando uma estrutura de dados chamada scheduler activations.

Page 32: Threads - Edwar Saliba Júnioresj.eti.br/INED/FSO/FSO_Unidade_02_003.pdfFundamentos de Sistemas Operacionais Arquitetura – Modo Kernel • A tabela abaixo compara o desempenho de

32Unidade 02 - 003 – Threads

Fundamentos de Sistemas Operacionais

Arquitetura – Scheduler Activations

• A maneira de alcançar um melhor desempenho é evitar as mudanças desnecessárias de modos de acesso. Caso um thread utilize uma chamada ao sistema que o coloque no estado de espera, não é necessário que o kernel seja ativado, bastando que a própria biblioteca em modo usuário escalone outro thread;

• Isto é possível porque a biblioteca em modo usuário e o kernel se comunicam e trabalham de forma cooperativa. Cada camada implementa seu escalonamento de forma independente, porém trocando informações quando necessário.

Page 33: Threads - Edwar Saliba Júnioresj.eti.br/INED/FSO/FSO_Unidade_02_003.pdfFundamentos de Sistemas Operacionais Arquitetura – Modo Kernel • A tabela abaixo compara o desempenho de

33Unidade 02 - 003 – Threads

Fundamentos de Sistemas Operacionais

Reflexão…

. Quais as vantagens de utilização de um ambiente multithread?

. Quais os benefícios do uso de threads em ambientes cliente/servidor?

Page 34: Threads - Edwar Saliba Júnioresj.eti.br/INED/FSO/FSO_Unidade_02_003.pdfFundamentos de Sistemas Operacionais Arquitetura – Modo Kernel • A tabela abaixo compara o desempenho de

34Unidade 02 - 003 – Threads

Fundamentos de Sistemas Operacionais

Bibliografia

• MACHADO, F. B.; MAIA, L. P. Arquitetura de Sistemas Operacionais, 3ª Ed., Rio de Janeiro: LTC Editora, 2002.

• SILVA, Guilherme Baião S. Slides da disciplina de Sistemas Operacionais de Arquitetura Fechada. Faculdade INED, 2005.