arquitetura de sistemas operacionais francis berenger machado / luiz paulo maia complementado por...
TRANSCRIPT
Arquitetura de Sistemas OperacionaisArquitetura de Sistemas OperacionaisFrancis Berenger Machado / Luiz Paulo MaiaFrancis Berenger Machado / Luiz Paulo Maia
Complementado por Sidney Lucena (Prof. UNIRIO)Complementado por Sidney Lucena (Prof. UNIRIO)
Capítulo 6Capítulo 6
ThreadThread
AS
O –
Mac
had
o/M
aia
– co
mp
lem
. por
Sid
ney
Luc
ena
(UN
IRIO
)
6 – Thread6 – Thread Ambiente Monothread
o Concorrência implementada apenas com o uso de processos independentes e subprocessos
Permite dividir uma aplicação em partes que podem trabalhar de forma concorrente
o Problemas:
Consumo maior de recursos do sistema
Espaço de endereçamento não é compartilhado
o Comunicação entre processos mais difícil e lenta
o Compartilhamento de recursos é mais complicado (ex: arquivos abertos)
6/1
AS
O –
Mac
had
o/M
aia
– co
mp
lem
. por
Sid
ney
Luc
ena
(UN
IRIO
)
6 – Thread6 – Thread Ambiente Monothread
6/1
Subprocessos Processos Independentes
AS
O –
Mac
had
o/M
aia
– co
mp
lem
. por
Sid
ney
Luc
ena
(UN
IRIO
)
6 – Thread6 – Thread Ambiente Monothread
o Processos monothread possuem, cada um, seu próprio contexto de hardware, de software e espaço de endereçamento
o Exemplos de SO’s monothread:
MS-DOS, primeiras versões do MS-Windows
Primeiros sistemas UNIX
6/2
Th rea d Th rea dTh rea d
AS
O –
Mac
had
o/M
aia
– co
mp
lem
. por
Sid
ney
Luc
ena
(UN
IRIO
)
6 – Thread6 – Thread Ambiente Multithread
6/3
C on textod e h a rd w a re
C on textod e h a rd w a re
C on textod e h a rd w a re
Esp aço d een dereça m en to
Co
nte
xto
de
soft
wa
re
Th rea d 3Th rea d 2Th rea d 1
AS
O –
Mac
had
o/M
aia
– co
mp
lem
. por
Sid
ney
Luc
ena
(UN
IRIO
)
6 – Thread6 – Thread Ambiente Multithread
o Programas são associados a threads, não a procesos
Cada programa tem pelo menos uma thread de execução
Pode compartilhar espaço de endereçamento com outras threads criadas pelo programa
o Thread corresponde a uma sub-rotina que pode ser executada de forma assíncrona (paralela) das demais
Sub-rotinas concorrentes dentro de um mesmo processo
Threads criadas dinamicamente, sob demanda
6/3
AS
O –
Mac
had
o/M
aia
– co
mp
lem
. por
Sid
ney
Luc
ena
(UN
IRIO
)
6 – Thread6 – Thread Aplicação Multithread
6/4
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
...
...
AS
O –
Mac
had
o/M
aia
– co
mp
lem
. por
Sid
ney
Luc
ena
(UN
IRIO
)
6 – Thread6 – Thread Aplicação Multithread
o Minimiza a alocação de recursos do sistema
o Mais rápidos p/ criação, término e troca de contexto
o Compartilham processador da mesma forma que processos independentes
Mudança de estados entre wait, ready e running
Cada thread com contexto próprio de hardware
o Threads de um mesmo processo compartilham contexto de software e espaço de endereçamento (comunicação mais rápida e eficiente)
o Implementadas por estrutura chamada Thread Control Block (TCB)
6/4
AS
O –
Mac
had
o/M
aia
– co
mp
lem
. por
Sid
ney
Luc
ena
(UN
IRIO
)
6 – Thread6 – Thread Aplicação Multithread
oTCB armazena contexto de hardware e informações exclusivas da thread (prioridade, estado)
o Unidade de alocação de recursos é o processo
Threads criadas compartilham recursos do processo
o Unidade de escalonamento é a thread
SO não escalona o processo para execução, mas sim uma de suas threads
o Compartilhamento de espaço de endereçamento inibe mecanismos de proteção no acesso a este espaço (aplicação deve cuidar disto)
6/4
AS
O –
Mac
had
o/M
aia
– co
mp
lem
. por
Sid
ney
Luc
ena
(UN
IRIO
)
6 – Thread6 – Thread Aplicação Multithread
o Threads de um mesmo processo pode facilmente compartilhar recursos como descritores de arquivos, sinais, temporizadores, etc
o Uso de periféricos pode ser realizado de forma concorrente entre as threads
o Melhora desempenho de algumas aplicações onde tarefas podem ser executadas em background durantes operações de E/S
Exs: editores de texto, planilhas, aplicações gráficas, processamento de imagens
6/4
AS
O –
Mac
had
o/M
aia
– co
mp
lem
. por
Sid
ney
Luc
ena
(UN
IRIO
)
6 – Thread6 – Thread Aplicação Multithread
o Thread principal solicita operações de E/S
o Threads específicas p/ executar as operações de E/S
6/5
Th rea d d een trada
Th rea d d eg ravaçã o
Th rea d d eexib ição
Bu ffer
AS
O –
Mac
had
o/M
aia
– co
mp
lem
. por
Sid
ney
Luc
ena
(UN
IRIO
)
6 – Thread6 – Thread Aplicação Multithread
o Essenciais para arquiteturas cliente-servidor
Thread no cliente p/ solicitar e aguardar o serviço enquanto thread principal continua executando em background
o Evita que processo cliente pare aguardando serviço pedido
Processo servidor dispara threads para atender cada solicitação que chega de maneira simultânea
o Evita que uma solicitação precise aguardar o término do atendimento das solicitações anteriores
o Úteis para núcleo de arquiteturas microkernel
6/4
AS
O –
Mac
had
o/M
aia
– co
mp
lem
. por
Sid
ney
Luc
ena
(UN
IRIO
)
6 – Thread6 – Thread Aplicação Multithread
6/6
So licita ções
Processo se rvido r
Th rea dTh rea d
Processo clienteProcesso cliente Processo cliente
Th rea d
AS
O –
Mac
had
o/M
aia
– co
mp
lem
. por
Sid
ney
Luc
ena
(UN
IRIO
)
6 – Thread6 – Thread Arquitetura e Implementação
o Sistemas Operacionais disponibilizam pacotes de threads para serem usados pelas aplicações
o Abordagem usada no pacote influenciará o desempenho, a concorrência e a modularidade das aplicações multithread
o Podem ser oferecidas de quatro formas:
Biblioteca de rotinas em modo usuário (fora do núcleo do SO)
Rotinas em modo kernel (do núcleo do SO)
Modo híbrido (modos kernel + usuário)
Modelo de Scheduler Activations6/4
AS
O –
Mac
had
o/M
aia
– co
mp
lem
. por
Sid
ney
Luc
ena
(UN
IRIO
)
6 – Thread6 – Thread Arquitetura e Implementação
o Ex. de SO’s de acordo com a arquitetura de thread:
Modo usuário
o Open VMS versão 6
Modo kernel
o Windows 2000, Open VMS versão 7, Compaq UNIX
Modo híbrido
o Sun Solaris versão 2
Modelo de Scheduler Activations
o FastThreads (University of Washington)
6/4
AS
O –
Mac
had
o/M
aia
– co
mp
lem
. por
Sid
ney
Luc
ena
(UN
IRIO
)
6 – Thread6 – Thread Threads em Modo Usuário
o Threads em modo usuário (TMU) são implementadas pela aplicação, e não pelo SO, através de uma biblioteca de rotinas
Criação, eliminação, troca de mensagens, política de escalonamento
o SO não gerencia nem sincroniza as múltiplas thread, é responsabilidade da aplicação
o Vantagem é poder implementar aplicações multithreads em SO’s que não suportam threads
o TMU’s são mais rápidas por dispensarem acessos ao kernel do SO, porém mais limitadas
6/4
AS
O –
Mac
had
o/M
aia
– co
mp
lem
. por
Sid
ney
Luc
ena
(UN
IRIO
)
6 – Thread6 – Thread Threads em Modo Usuário
o SO gerencia TMU’s 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 não-bloqueantes
o Sinais são enviados para o processo, não para a thread
Processo deve reconhecer os sinais e encaminhá-los para as threads de direito
O mesmo para interrupções de clock objetivando time-sharing
6/4
AS
O –
Mac
had
o/M
aia
– co
mp
lem
. por
Sid
ney
Luc
ena
(UN
IRIO
)
6 – Thread6 – Thread Threads em Modo Usuário
o Caso hajam múltiplos processadores, TMU’s não poderão rodar nos diferentes processadores
Como o SO só enxerga o processo, todas as TMU’s rodarão no mesmo processador
Limitação extrema para o paralelismo da aplicação
6/4
AS
O –
Mac
had
o/M
aia
– co
mp
lem
. por
Sid
ney
Luc
ena
(UN
IRIO
)
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
6 – Thread6 – Thread Threads em Modo Kernel
o Threads em modo kernel (TMK) são implementadas diretamente pelo núcleo do SO através de system calls que fazem o gerenciamento e a sincronização
SO escalona as threads individualmente
Utiliza capacidade de múltiplos processadores
o Baixo desempenho devido às mudanças de modo de acesso usuário-kernel-usuário (10 a 30x, +/-)
6/4
AS
O –
Mac
had
o/M
aia
– co
mp
lem
. por
Sid
ney
Luc
ena
(UN
IRIO
)
M odou suá rio
M odokernelKernel
Thre
ad
0
Thre
ad
4
Thre
ad
3
Thre
ad
2
Thre
ad
1
6 – Thread6 – Thread Threads em Modo Híbrido
o Threads em modo híbrido (TMH) combinam vantagens das TMU’s e das TMK’s
Processo pode ter várias TMK’s e as TMK’s podem ter várias TMU’s
TMK’s escalonadas individualmente pelo SO
Uma TMU pode ser executada por qualquer TMK
o Apesar da flexibilidade, apresenta desvantagens
Quando TMK faz uma operação bloquante, todas as TMU’s associadas à TMK ficam bloqueadas
TMU’s que precisem rodar em diferentes processadores precisam estar em TMK’s distintas
6/4
AS
O –
Mac
had
o/M
aia
– co
mp
lem
. por
Sid
ney
Luc
ena
(UN
IRIO
)
6 – Thread6 – Thread Threads em Modo Híbrido
6/4
AS
O –
Mac
had
o/M
aia
– co
mp
lem
. por
Sid
ney
Luc
ena
(UN
IRIO
)
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
6 – Thread6 – Thread Threads no Modelo Scheduler Activations
o Problemas das TMH’s em muito se devem à falta de comunicação entre TMU’s e TMK’s
o O ideal é combinar o que há de melhor nas TMU’s e nas TMK’s sem precisar repetir os modelos
o Modelo de scheduler activations
Introduzido na década de 1990 na Universidade de Washington
Núcleo do SO troca informações com biblioteca de threads através de estrutura chamada scheduler activations
Evita mudanças desnecessárias de modos de acesso
6/4
AS
O –
Mac
had
o/M
aia
– co
mp
lem
. por
Sid
ney
Luc
ena
(UN
IRIO
)
6 – Thread6 – Thread Threads no Modelo Scheduler Activations
o Caso uma thread faça uma chamada bloqueante, biblioteca em modo usuário escalona outra thread em cooperação com modo kernel
Cada camada implementa seu escalonamento de forma independente, trocando informações quando necessário
6/4
AS
O –
Mac
had
o/M
aia
– co
mp
lem
. por
Sid
ney
Luc
ena
(UN
IRIO
)
M odou suá rio
M odokernelKernel
Bib lio teca
Thre
ad
0
Thre
ad
4
Thre
ad
3
Thre
ad
2
Thre
ad
1
6 – Thread6 – Thread Modelos de Programação
o Desenvolvimento de aplicações multithread exige sincronismo na comunicação e compartilhamento de recursos entre as threads
Deve-se evitar problemas de inconsistência e deadlocks
o Procedimento de depuração torna-se mais complicado
o Fator importante para desempenho do programa é sua política de criação e eliminação de threads, o que implicará no número total de threads coexistindo
o Uma boa estratégia de modularização do programa e conseqüente divisão em threads é fundamental
6/4
AS
O –
Mac
had
o/M
aia
– co
mp
lem
. por
Sid
ney
Luc
ena
(UN
IRIO
)