Threads
https://sites.google.com/site/thiagoaalves/
thiago.augusto2@anhanguera.com
6 Thread
Ambiente Monothread
6 Thread
Ambiente Monothread
Subprocessos
Processos Independentes
6 Thread
Ambiente Monothread
o Processos monothread possuem, cada um, seu
prprio contexto de hardware, de software e espao de
endereamento
o Exemplos de SOs monothread:
Thread
Thread
Thread
6 Thread
Ambiente Multithread
Contexto
de hardware
Contexto
de hardware
Thread 1
Thread 2
Thread 3
Contexto de
software
Contexto
de hardware
Espao de
endereamento
6 Thread
Ambiente Multithread
o Programas so associados a threads, no a procesos
Cada programa tem pelo menos uma thread de execuo
Pode compartilhar espao de endereamento com outras
threads criadas pelo programa
o Thread corresponde a uma sub-rotina que pode ser executada
de forma assncrona (paralela) das demais
Sub-rotinas concorrentes dentro de um mesmo processo
Threads criadas dinamicamente, sob demanda
6 Thread
Aplicao Multithread
Processo
Variveis
Programa Principal
Thread_1
PC
SP
Contexto de
Hardware
...
Espao de
endereamento
Call Sub_1
Thread_2
Sub_1
Ret
PC
SP
Thread_3
Sub_2
...
Ret
PC
SP
Contexto de
Hardware
Fim
Contexto de
Hardware
Call Sub_2
6 Thread
Aplicao Multithread
6 Thread
Aplicao Multithread
6 Thread
Aplicao Multithread
o Threads de um mesmo processo pode facilmente
compartilhar recursos como descritores de arquivos,
sinais, temporizadores, etc
o Uso de perifricos pode ser realizado de forma
concorrente entre as threads
6 Thread
Aplicao Multithread
Th r e a d d e
e n tr a d a
o Threads especficas
executam as operaes de
E/S
Bu f f e r
Th r e a d d e
e xi b i o
Th r e a d d e
g r a v a o
6 Thread
Aplicao Multithread
o Essenciais para arquiteturas cliente-servidor
Thread no cliente p/ solicitar e aguardar o servio enquanto
thread principal continua executando em background
o Evita que processo cliente pare aguardando servio
pedido
Processo servidor dispara threads para atender cada
solicitao que chega de maneira simultnea
o Evita que uma solicitao precise aguardar o trmino
do atendimento das solicitaes anteriores
o teis para ncleo de arquiteturas microkernel
6 Thread
Aplicao Multithread
Processo servidor
Solicitaes
Thread
Thread
Thread
Processo cliente
Processo cliente
Processo cliente
6 Thread
Arquitetura e Implementao
o Sistemas Operacionais disponibilizam pacotes de threads
para serem usados pelas aplicaes
o Abordagem usada no pacote influenciar o desempenho, a
concorrncia e a modularidade das aplicaes multithread
o Podem ser oferecidas de quatro formas:
Biblioteca de rotinas em modo usurio (fora do ncleo
do SO)
Rotinas em modo kernel (do ncleo do SO)
Modo hbrido (modos kernel + usurio)
Modelo de Scheduler Activations
6 Thread
Arquitetura e Implementao
Modo kernel
o Windows 2000, Open VMS verso 7, Compaq UNIX
Modo hbrido
o Sun Solaris verso 2
Modelo de Scheduler Activations
o FastThreads (University of Washington)
6 Thread
Threads em Modo Usurio
o Threads em modo usurio (TMU) so implementadas pela
aplicao, e no pelo SO, atravs de uma biblioteca de rotinas
Criao, eliminao, troca de mensagens, poltica de
escalonamento
6 Thread
Threads em Modo Usurio
o SO gerencia TMUs como se fosse uma nica thread
Caso uma thread entre em estado de espera, todo o
processo fica em estado espera
Biblioteca deve possuir rotinas que substituam as rotinas
bloqueantes por outras no-bloqueantes
o Sinais so enviados para o processo, no para a thread
Processo deve reconhecer os sinais e encaminh-los
para as threads de direito
O mesmo para interrupes de clock objetivando timesharing
6 Thread
Threads em Modo Usurio
o Caso hajam mltiplos processadores, TMUs no
podero rodar nos diferentes processadores
Como o SO s enxerga o processo, todas as
TMUs rodaro no mesmo processador
Thread 4
Thread 3
Thread 2
Thread 1
Thread 0
Modo
usurio
Biblioteca
Kernel
Modo
kernel
6 Thread
Threads em Modo Kernel
Kernel
Thread 4
Thread 3
Thread 2
Thread 1
Thread 0
Modo
usurio
Modo
kernel
6 Thread
Threads em Modo Hbrido
6 Thread
TMU 5
TMU 4
TMU 3
TMU 2
TMU 1
TMU 0
Modo
usurio
Biblioteca
TMK 0
TMK 1
TMK 2
TMK 3
Modo
kernel
Kernel
6 Thread
Threads no Modelo Scheduler Activations
6 Thread
Threads no Modelo Scheduler Activations
o Caso uma thread faa uma chamada bloqueante, biblioteca
em modo usurio escalona outra thread em cooperao com
modo kernel
Thread 4
Thread 3
Thread 2
Thread 1
Thread 0
Modo
usurio
Biblioteca
Kernel
Modo
kernel
6 Thread
Modelos de Programao
o Desenvolvimento de aplicaes multithread exige
sincronismo na comunicao e compartilhamento de recursos
entre as threads
Deve-se evitar problemas de inconsistncia e deadlocks
6/4
Exerccios Threads
1) Como uma aplicao pode implementar concorrncia em um ambiente
monothread?
2) Quais os problemas de aplicaes concorrentes desenvolvidas em
ambientes monothread?
3) O que um ambiente multithread e quais as vantagens de sua utilizao?
4) Explique a diferena entre unidade de alocao de recursos e unidade de
escalonamento.
5) Quais as vantagens e desvantagens do compartilhamento do espao de
endereamento entre threads de um mesmo processo?
6) Qual a vantagem do scheduler activations comparado ao pacote hbrido?
7) D exemplos do uso de threads no desenvolvimento de aplicativos, como
editores de textos e planilhas eletrnicas.
8) Como o uso de threads pode melhorar o desempenho de aplicaes
paralelas em ambientes com mltiplos processadores?
9) Quais os benefcios do uso de threads em ambientes cliente-servidor?
Sincronizao e Comunicao
Sincronizao
gr
Processo
gravador
av
a
o
r
tu
i
le
dado
Buffer
Processo
leitor
Sincronizao e Comunicao
o Mecanismos de sincronizao:
Concorrncia em Programas
o Cada linguagem tem sua notao para especificar as
partes do programa que devem ser executadas
concorrentemente
Fork e Join (Conway, Dennis e Van Horn, 1963/66)
o Fork <X> dispara o processo X
Concorrncia em Programas
Processo
principal
PARBEGIN
Comando_1;
Comando_2;
.
.
Comando_n;
PAREND
Processo 1
Processo 2
Processo
principal
Processo n
Compartilhamento de Recursos
o Arquivos compartilhados
Ex: atualizaes em um mesmo saldo bancrio
Caso o processo no trave o arquivo com
saldo, poder haver inconsistncia
o Variveis compartilhadas
Um processo s poder operar com a varivel
aps processo anterior completar sua operao
Anlogo ao caso de arquivos compartilhados
o Estes problemas so chamados de race conditions
Compartilhamento de Recursos
PROGRAM Conta_Corrente;
.
.
READ (Arq_Contas, Reg_Cliente);
READLN (Valor_Dep_Ret);
Reg_Cliente.Saldo := Reg_Cliente.Saldo + Valor_Dep_Ret;
WRITE (Arq_Contas, Reg_Cliente);
.
.
END.
Excluso Mtua
o Soluo mais simples
Excluso Mtua
o Mecanismos que implementam excluso mtua se
valem de protocolos de acesso regio crtica
Excluso Mtua
o Duas situaes indesejadas devem ser evitadas:
Starvation ou espera indefinida
o Processo nunca consegue entrar na regio
crtica, ficando eternamente em espera
o Pode ocorrer devido a critrios do SO para
seleo do processo que vai entrar numa RC
que tenha sido liberada
Critrios baseados em prioridade ou em
aleatoriedade
Sistema FIFO, por exemplo, resolve o
problema
Excluso Mtua
o Outra situao indesejada que deve ser evitada:
Excluso Mtua
o Solues de hardware:
Desabilitar de interrupes
o Processo desabilita todas as interrupes
antes de entrar na RC, reabilitando-as aps
deix-la
Excluso Mtua
o Solues de hardware:
Instruo Test-and-Set
o Instruo de mquina que permite ler
uma varivel, armazen-la em outra rea e
atribuir novo valor varivel
o Indivisvel, executada sem interrupo
o Garante que dois ou mais processos no
manipulem uma varivel compartilhada
simultaneamente
o Usa varivel lgica global chamada
Bloqueio
Excluso Mtua
o Solues de software:
Diversos algoritmos para implementar excluso
mtua atravs de software
Primeiras solues abrangiam apenas dois
processos e apresentavam problemas,
posteriormente sanados
o Algoritmo de Peterson, inicialmente aplicado
a dois processos, evoludo para N processos
Excluso Mtua
o Solues de software:
Primeiro algoritmo
o Usa varivel global para sincronizar
processos
Excluso Mtua
o Solues de software:
Terceiro algoritmo
o Funciona somente com dois processos
o Atribuio da varivel de condio feita
antes do loop de teste
o Processos no necessitam ser alternados
Excluso Mtua
o Solues de software:
Quarto algoritmo
o Funciona somente com dois processos
o Como o terceiro, mas introduz tempo aleatrio
para setar vrivel de condio
o Processos no necessitam ser alternados
o Se um processo travar antes de alterar
varivel, o outro fica bloqueado
o Garante excluso mtua, mas ambos
processos podem ficar bloqueados durante
algum tempo
Excluso Mtua
o Solues de software:
Algoritmo de Peterson
o Soluo para problemas anteriores, foi
generalizado para N processos (Hofri, 1990)
o Alm das variveis de condio, usa varivel
Vez para resolver conflitos
Antes de acessar a RC, sinaliza este desejo
mas cede a vez para outro processo, depois
fica em loop aguardando sua vez
Para N processos, tambm h o algoritmo do
Padeiro (Lamport, 1974)
Sincronizao Condicional
o Situao onde o acesso RC exige sincronizao
vinculada a uma condio de acesso
Semforos
o Proposto por Dijkstra em 1965
Mecanismo de sincronizao para implementar
excluso mtua e sincronizao condicional
Principal mecanismo usado em aplicaes
concorrentes
Semforos
o Classificados como binrios ou contadores
0)
DO
N
=
(S
0)
O
D
N
W
>
(S
Fila de espera
de processos
Semforos
o Sincronizao condicional para operao de E/S
Semforos
o Problema produtor/consumidor:
Mutex usado para a RC que permite gravao e
leitura (logo, mutuamente exclusivas)
Semforos contadores representam posies
livres (Vazio) para serem gravadas, e posies
ocupadas (Cheio) para serem lidas
o Vazio = 0, processo produtor em espera
o Cheio = 0, processo consumidor em espera
Vazio iniciado com tamanho do buffer
Cheio iniciado com 0
Semforos
o Semforos contadores so teis para
problemas de sincronizao condicional com
processos concorrentes disputando pool de
recursos
Semforo iniciado com nmero total de
recursos do pool
Processo que deseja alocar recurso faz
DOWN
Processo que libera recurso faz UP
Semforo em 0 indica que no h mais
recursos disponveis no pool e coloca
processos que fizeram DOWN em espera
Problema do Barbeiro
o Na barbearia h um barbeiro, uma cadeira de
barbeiro e 5 para espera
o Se um cliente chega e o barbeiro est
trabalhando, ele senta se houver cadeira vaga,
seno vai embora
o Se no h nenhum cliente para atender, barbeiro
senta na cadeira e dorme at novo cliente chegar
Monitores
o Mecanismos de sincronizao de alto nvel
Semforos so mecanismos no
estruturados implementados pelo
desenvolvedor
Monitores so mecanismos estruturados
implementados pelo compilador
Monitores
o Um monitor definido especificando-se um
nome, declarando-se variveis locais, um
conjunto de procedimentos e um cdigo de
inicializao
o Um processo que deseje acessar determinada
RC atravs de um monitor far chamada a um
dos procedimentos do monitor
Caso outro processo j esteja executando
qualquer um dos procedimentos, ele
aguarda sua vez na fila
Estrutura do Monitor
Declarao de
variveis globais
Procedimentos
Monitor
Proc. 1
Proc. 2
Fila de entrada
Proc. n
Inicializao
de variveis
Monitores
o O uso de monitores facilita o desenvolvimento de
aplicaes concorrentes
CondioC1
Monitor
P
roc. 1
P
roc. 2
CondioC2
P
roc. n
CondioCn
Filadeentrada
Filasdeespera
Inicializao
devariveis
Transmisso de Mensagem
Processo
transmissor
Processo
receptor
Canal de comunicao
SEND
RECEIVE
Processo B
Processo A
Processo B
Mailbox
ou Port
Troca de Mensagens
o Forma sncrona:
Deadlock
o Situao onde um processo aguarda
indefinidamente por um recurso que nunca estar
disponvel ou aguarda por um evento que nunca
ir ocorrer
o Pode ser representado por ciclos num diagrama
de grafo
Ns simbolizam processos e recursos
Aresta que sai do processo X e chega ao
recurso Y indica que X solicita Y
Aresta que sai do recurso Y e chega no
processo X indica que Y est alocado a X
Recurso 1
alocado ao
Processo A
Recurso 2
Recurso 1
Processo B
Recurso 2
alocado ao
Processo B
Processo B
solicita o
Recurso 1
Deadlock
o Condies simultneas para ocorrer deadlock:
Excluso mutua: Cada recurso s pode estar
alocado a um nico processo por vez
Espera por recurso: Um processo, apesar dos
recursos alocados, pode estar esperando por novo
recurso
No-preempo: recurso no liberado de um
processo devido solicitao do mesmo por outro
processo
Espera circular: processo pode ter que esperar
por um recurso alocado a outro processo e viceversa
Deadlock
o Preveno de deadlock:
o Permitir preempo
o Processos que possuem recurso no
podem solicitar outro recurso
Deadlock
o Deteco de deadlock:
Exerccios
1)
2)
Considere uma aplicao que utilize uma matriz na memria principal para a
comunicao entre vrios processos concorrentes. Que tipo de problema pode
ocorrer quando dois ou mais processos acessam uma mesma posio da
matriz?
3)
4)
5)
6)
7)
8)
9)