Вы находитесь на странице: 1из 35

Sistemas Operacionais

Threads
Parte III

Prof. Lzaro
maio/2012

SOp-Apres08

Propriedades das Threads


Viso Geral
O estado de um processo definido pelos recursos que ele est usando e pela posio na qual est sendo executado. Existem muitos casos, entretanto, em que seriam teis o acesso e o compartilhamento simultneo de recursos.
Discos

Sistemas Operacionais

Recursos
Memria Processador
Canais Comunic.

Concorre por

Processo A

Propriedades das Threads


Esquema das threads

Sistemas Operacionais

Fonte: http://java.sun.com/docs/hotspot/threads/threads.html

Propriedades das Threads


Esquema das threads

Sistemas Operacionais

Fonte: http://techpubs.sgi.com/library/tpl/cgi-bin/getdoc.cgi?coll=0650&db=bks&fname=/SGI_Developer/Cos3C_PG/ch13.html

Sistemas Operacionais
Propriedade

das Threads

Thread uma linha de execuo de controle. uma parte de um processo que pode ser executada independentemente. Todo processo tem, pelo menos, uma thread.
Inicio Abre_Arquivos() Limpa_Variveis() Exibe_Tela() Clculos() Abre_Arquivos() Open Arq1, Arq2, Arq3 Open Trab1, Trab2 Limpa_Variveis() Area1=space(10) NUm1=0, Num2=0 Exibe_Tela() Molda Tela e Exibe Clculos() Calc1= -------Inicio

Thread nica

Abre_Arquivos()

Limpa_Variveis()

Exibe_Tela()

Clculos()

Sistemas Operacionais
Propriedade
Por exemplo: Se voc deseja conferir uma srie de fotos no website de um amigo e seu sistema operacional permite que os processos tenham uma nica linha de execuo de controle, voc dever instruir o navegador para estabelecer uma conexo entre dois sites e fazer o download de uma foto por vez.

das Threads

Foto1

Sistema Operacional
P1
Foto1

Foto2 Foto3

Sistemas Operacionais
Propriedade

das Threads

No entanto, se seu sistema permite que os processos tenham mltiplas linhas de execuo de controle, voc poder requisitar vrias fotos simultaneamente e o navegador estabelecer mltiplas conexes para fazer o download de vrias fotos ao mesmo tempo.

Foto1

Sistema Operacional
P1
Foto1

P1
Foto2

P1
Foto3

Foto2 Foto3 7

Propriedades das Threads Viso Geral


Um fluxo de execuo ( thread ) - algumas vezes chamada de processo leve ( lightweigth process ) - uma unidade bsica de utilizao da CPU e consiste em um contador de instrues, um conjunto de registradores e um espao de pilha.

Sistemas Operacionais

Propriedades das Threads Viso Geral


Ele compartilha com fluxos irmos sua seo de cdigo, a seo de dados e os recursos do Sistema Operacional, como arquivos abertos e sinais, conhecidos coletivamente como uma tarefa. Um processo tradicional ou pesado (heavyweight process) igual a uma tarefa com um nico fluxo de execuo.

Sistemas Operacionais

Propriedades das Threads


Viso Geral
cdigo dados arquivos
cdigo dados arquivos

Sistemas Operacionais

registradores

pilha

Registr. pilha thread

Registr. pilha

Registr. pilha

nico Thread

Multithreads

Propriedades das Threads


Viso Geral
Como qualquer ambiente de processamento paralelo, a existncia de vrios fluxos de execuo para um processo pode introduzir problemas de controle de concorrncia que necessitam do uso de regies crticas ou semforos. Os threads (fluxos de execuo) operam, em muitos aspectos, da mesma maneira que os processos. Eles podem estar em um dos vrios estados: iniciados, pronto, espera, execuo ou finalizados.

Sistemas Operacionais

11

Propriedades das Threads


Viso Geral
Em contraste com os processos, independentes uns dos outros. os threads no so

Sistemas Operacionais

Como os threads podem usar os mesmos endereos em uma tarefa, um thread pode ler e escrever sobre pilhas de outros threads.

12

Propriedades das Threads


Viso Geral
O exemplo ao lado mostra um processo que tem vrias threads, ou seja, vrios fluxos de execuo. Essas vrias threads so chamadas tambm de subprocessos, porque elas se subordinam a um processo principal.
Fluxos de execuo

Sistemas Operacionais

Segmento de cdigo

Segmento de dados

13

Diversos fluxos de execuo em uma tarefa

Propriedades das Threads Ciclo de vida do thread


Novo
Iniciar Esperar por evento Preempo Concluir

Sistemas Operacionais

Morto

Pronto
Despacho Concluso E/S Notificar ou acordar

Execuo

Requisio E/S

Dormir

Bloqueado por I/O

Adormecido
Acordar 14

Em Espera

Propriedades das Threads Threads (fluxos de execuo)


Nos processos tradicionais h apenas uma linha de controle e um nico contador de programa em cada processo. Nos sistemas operacionais modernos h suporte para vrias linhas de controle e vrios contadores dentro de um nico processo. Threads tambm chamado de processos leves.

Sistemas Operacionais

15

Propriedades das Threads Threads (fluxos de execuo)


Um processo com uma thread Um processo com trs threads

Sistemas Operacionais

Contador de Programa

A
Processo

thread

Thread 3 Thread 2 Thread 1


16

Propriedades das Threads Threads (fluxos de execuo)


Exemplo de um processo servidor de arquivos, que est bloqueado e executado em um sistema que pressupe a utilizao de apenas um nico processo. Neste caso, nenhum outro processo servidor pode ser executado at que o primeiro seja desbloqueado.

Sistemas Operacionais

Servidor de Impresso

Arquivos

17

Propriedades das Threads Threads (fluxos de execuo)


Exemplo do navegador da Web. Vrios fluxos de execuo so disparados para atender aos vrios tipos de dados que podero estar chegando. Algumas threads tratam de resolver as questes das figuras, outras de textos especiais e outras dos textos comuns.
Tela do usurio Navegador Web
Thread 1 (figuras) Thread 2 (textos espec.)

Sistemas Operacionais

comunicao

Thread 2 (textos comuns)

18

Propriedades das Threads Benefcios das Threads


Capacidade de resposta a estruturao de uma aplicao interativa em multithreads pode permitir a um programa continuar executando mesmo se parte dele estiver bloqueada ou realizando uma operao prolongada, aumentando desse modo a capacidade de resposta para o usurio.
Por exemplo: um navegador de web multithread.
Thread 1 Thread 2 Navegador Web Intera o com o usurio Arma zena mento de imagem

Sistemas Operacionais

19

Propriedades das Threads Benefcios das Threads


Compartilhamento de recursos os threads compartilham, por default, a memria e os recursos do processo ao qual pertencem.
A vantagem do compartilhamento de cdigo permitir que uma aplicao tenha diversos threads de atividade, todos dentro do mesmo espao de endereamento.

Sistemas Operacionais

Compartilhamento de memria e recursos do processo principal

20

Propriedades das Threads Benefcios das Threads


Economia a alocao de memria e de recursos para a criao de processos custosa. Por outro lado, como os threads compartilham recursos do processo ao qual pertencem, mais econmico criar threads e comutar seus contextos.

Sistemas Operacionais

21

Propriedades das Threads Benefcios das Threads


Utilizao de arquiteturas de multiprocessadores as vantagens de criao de multithreads podem ser bastante aumentadas em uma arquitetura de multiprocessadores, onde cada thread pode ser executado em paralelo em um processador diferente. Um processo com um nico thread pode executar somente em uma CPU.

Sistemas Operacionais

Proc. A

Proc. B

Thread 1

Thread 2

Processo Principal

22

Propriedades das Threads


Threads do Usurio e do Kernel
Os threads do Usurio so suportados acima do kernel e so implementados por uma biblioteca de threads no nvel de usurio. O kernel no tem conscincia dos threads de nvel de usurio, toda criao feita no espao do usurio. Dessa forma, os threads de usurio so mais geis para criar e gerenciar.
23

Sistemas Operacionais

Propriedades das Threads Threads do Usurio e do Kernel


Os threads do Kernel so suportados diretamente pelo sistema operacional.
O kernel realiza a criao, o scheduling e o gerenciamento dos threads, no espao do kernel. Como o gerenciamento dos threads feito pelo sistema operacional, sua criao e schedulagem mais lenta do que as do usurio.

Sistemas Operacionais

Sistema Operacional (Kernel)

24

Propriedades das Threads Criao de Threads

Sistemas Operacionais

Chamadas Fork e Exec quando um thread chama a rotina fork para criar um processo, h duas modalidades de operao: Uma ser a duplicao total do processo onde a thread est com todas as threads sendo duplicada, outra ser duplicar apenas a thread que est invocando a rotina fork.
A utilizao das duas verses depende da aplicao.

25

Propriedades das Threads Criao de Threads


Cancelamento de threads corresponde tarefa de terminar um thread antes que se complete.
Por exemplo, se mltiplos threads esto pesquisando concorrentemente um banco de dados e um thread retorna o resultado, os threads remanescentes podem ser cancelados. Cancelamento Assncrono um thread imediatamente termina o thread-alvo; Cancelamento adiado o thread-alvo pode verificar periodicamente se deveria terminar, possibilitando ao threadalvo uma oportunidade de terminar a si prprio de modo ordenado.
26

Sistemas Operacionais

Propriedades das Threads Criao de Threads


Manipulao de sinais usado em sistemas Unix para notificar um processo sobre a ocorrncia de um evento em particular. Processamento de um sinal: Pela ocorrncia de um evento em particular; liberado para um processo, O sinal deve ser manipulado. Todo sinal pode ser manipulado por: Um manipulador de sinal default Um manipulador de sinais definido pelo usurio.

Sistemas Operacionais

27

Criao de Threads

Propriedades das Threads

Sistemas Operacionais

Cadeias de Threads criar um nmero de threads na inicializao do processo e coloc-los em uma cadeia, onde eles permanecem e aguardam para entrar em funcionamento. Usado em servidores, sendo que, quando um servidor recebe uma solicitao, ele desperta um thread desta cadeia, se um estiver disponvel, passando a ele a solicitao para ser atendida. Exemplo: a criao de processo init com os vrios terminais alocados na rede multiusuria.

28

Propriedades das Threads Threads no Solaris 2

Sistemas Operacionais

A nova verso, um sistema moderno, com suporte de processos em tempo real e no nvel de usurios, multiprocessamento simtrico e seleo de processos em tempo real.

SOLARIS 2
API Pthread Thread do Usurio
29

Propriedades das Threads Threads no Solaris 2


Os fluxos de operao no Solaris 2 feita no nvel de usurios. So criados e selecionados por rotinas de biblioteca, sem que o ncleo saiba coisa alguma sobre eles. O Solaris 2 prev que milhares de fluxos de execuo no nvel de usurios possam ser criados, passando a competir pelo uso da CPU.

Sistemas Operacionais

30

Propriedades das Threads Threads no Solaris 2


O Solaris 2 define tambm fluxos de execuo de nvel intermedirio, entre os fluxos de execuo do ncleo e no nvel de usurios, chamados de processos leves.

Sistemas Operacionais

O Processo de funcionamento dos fluxos de execuo no Solaris 2.

31

Propriedades das Threads


Tarefa 1 Tarefa 2

Sistemas Operacionais

Tarefa 3 Fluxo de execuo no nvel de usurios Processo leve

Fluxo de execuo do ncleo

ncleo

CPU

Fluxos de execuo no Solaris 2


32

Propriedades das Threads

Sistemas Operacionais

Tabela de Threads - contem uma entrada por thread com contador de programa, registradores e estado do thread. Contador de programa porque threads podem ser suspensos e retomados

Registradores porque threads suspensos tem que ter registradores salvos.


Processo Thread Status contador Registradores Memria Observaes PC-A Tr-1 Exec P01 R1, R2, R3 23A9F Tr-2 Wait P02 R1, R2, R3 45D12 Tr-3 Pronto P03 R1, R2, R3 AB2387F

33

Propriedades das Threads


Tabela de Threads
Sistemas Operacionais que no reconhecem threads interage apenas entre processos. Sistemas Operacionais que reconhecem threads interage entre threads do mesmo processo ou com de outros processos.

Sistemas Operacionais

34

Sistemas Operacionais

FIM

35