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

Post on 10-Dec-2018

229 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

1Unidade 02 - 003 – Threads

Fundamentos de Sistemas Operacionais

Threads

Prof. Edwar Saliba JúniorMarço de 2007

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.

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.

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.

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.

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.

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.

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

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

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

...

...

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.

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.

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).

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

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:

16Unidade 02 - 003 – Threads

Fundamentos de Sistemas Operacionais

Arquitetura

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

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.

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.

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.

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

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.

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.

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:

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

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.

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.

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.

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

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.

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.

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.

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?

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.

top related