Arquitetura de Sistemas Operacionais Francis Berenger Machado / Luiz Paulo Maia Complementado por...

24
quitetura de Sistemas Operacion quitetura de Sistemas Operacion rancis Berenger Machado / Luiz Paulo M rancis Berenger Machado / Luiz Paulo M plementado por Sidney Lucena (Prof. UN plementado por Sidney Lucena (Prof. UN Capítulo 6 Capítulo 6 Thread Thread O – Machado/Maia – complem. por Sidney Lucena (UNIR

Transcript of Arquitetura de Sistemas Operacionais Francis Berenger Machado / Luiz Paulo Maia Complementado por...

Page 1: Arquitetura de Sistemas Operacionais Francis Berenger Machado / Luiz Paulo Maia Complementado por Sidney Lucena (Prof. UNIRIO) Capítulo 6 Thread ASO –

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

)

Page 2: Arquitetura de Sistemas Operacionais Francis Berenger Machado / Luiz Paulo Maia Complementado por Sidney Lucena (Prof. UNIRIO) Capítulo 6 Thread ASO –

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

)

Page 3: Arquitetura de Sistemas Operacionais Francis Berenger Machado / Luiz Paulo Maia Complementado por Sidney Lucena (Prof. UNIRIO) Capítulo 6 Thread ASO –

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

)

Page 4: Arquitetura de Sistemas Operacionais Francis Berenger Machado / Luiz Paulo Maia Complementado por Sidney Lucena (Prof. UNIRIO) Capítulo 6 Thread ASO –

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

)

Page 5: Arquitetura de Sistemas Operacionais Francis Berenger Machado / Luiz Paulo Maia Complementado por Sidney Lucena (Prof. UNIRIO) Capítulo 6 Thread ASO –

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

)

Page 6: Arquitetura de Sistemas Operacionais Francis Berenger Machado / Luiz Paulo Maia Complementado por Sidney Lucena (Prof. UNIRIO) Capítulo 6 Thread ASO –

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

)

Page 7: Arquitetura de Sistemas Operacionais Francis Berenger Machado / Luiz Paulo Maia Complementado por Sidney Lucena (Prof. UNIRIO) Capítulo 6 Thread ASO –

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

)

Page 8: Arquitetura de Sistemas Operacionais Francis Berenger Machado / Luiz Paulo Maia Complementado por Sidney Lucena (Prof. UNIRIO) Capítulo 6 Thread ASO –

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

)

Page 9: Arquitetura de Sistemas Operacionais Francis Berenger Machado / Luiz Paulo Maia Complementado por Sidney Lucena (Prof. UNIRIO) Capítulo 6 Thread ASO –

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

)

Page 10: Arquitetura de Sistemas Operacionais Francis Berenger Machado / Luiz Paulo Maia Complementado por Sidney Lucena (Prof. UNIRIO) Capítulo 6 Thread ASO –

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

)

Page 11: Arquitetura de Sistemas Operacionais Francis Berenger Machado / Luiz Paulo Maia Complementado por Sidney Lucena (Prof. UNIRIO) Capítulo 6 Thread ASO –

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

)

Page 12: Arquitetura de Sistemas Operacionais Francis Berenger Machado / Luiz Paulo Maia Complementado por Sidney Lucena (Prof. UNIRIO) Capítulo 6 Thread ASO –

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

)

Page 13: Arquitetura de Sistemas Operacionais Francis Berenger Machado / Luiz Paulo Maia Complementado por Sidney Lucena (Prof. UNIRIO) Capítulo 6 Thread ASO –

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

)

Page 14: Arquitetura de Sistemas Operacionais Francis Berenger Machado / Luiz Paulo Maia Complementado por Sidney Lucena (Prof. UNIRIO) Capítulo 6 Thread ASO –

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

)

Page 15: Arquitetura de Sistemas Operacionais Francis Berenger Machado / Luiz Paulo Maia Complementado por Sidney Lucena (Prof. UNIRIO) Capítulo 6 Thread ASO –

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

)

Page 16: Arquitetura de Sistemas Operacionais Francis Berenger Machado / Luiz Paulo Maia Complementado por Sidney Lucena (Prof. UNIRIO) Capítulo 6 Thread ASO –

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

)

Page 17: Arquitetura de Sistemas Operacionais Francis Berenger Machado / Luiz Paulo Maia Complementado por Sidney Lucena (Prof. UNIRIO) Capítulo 6 Thread ASO –

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

)

Page 18: Arquitetura de Sistemas Operacionais Francis Berenger Machado / Luiz Paulo Maia Complementado por Sidney Lucena (Prof. UNIRIO) Capítulo 6 Thread ASO –

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

Page 19: Arquitetura de Sistemas Operacionais Francis Berenger Machado / Luiz Paulo Maia Complementado por Sidney Lucena (Prof. UNIRIO) Capítulo 6 Thread ASO –

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

Page 20: Arquitetura de Sistemas Operacionais Francis Berenger Machado / Luiz Paulo Maia Complementado por Sidney Lucena (Prof. UNIRIO) Capítulo 6 Thread ASO –

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

)

Page 21: Arquitetura de Sistemas Operacionais Francis Berenger Machado / Luiz Paulo Maia Complementado por Sidney Lucena (Prof. UNIRIO) Capítulo 6 Thread ASO –

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

Page 22: Arquitetura de Sistemas Operacionais Francis Berenger Machado / Luiz Paulo Maia Complementado por Sidney Lucena (Prof. UNIRIO) Capítulo 6 Thread ASO –

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

)

Page 23: Arquitetura de Sistemas Operacionais Francis Berenger Machado / Luiz Paulo Maia Complementado por Sidney Lucena (Prof. UNIRIO) Capítulo 6 Thread ASO –

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

Page 24: Arquitetura de Sistemas Operacionais Francis Berenger Machado / Luiz Paulo Maia Complementado por Sidney Lucena (Prof. UNIRIO) Capítulo 6 Thread ASO –

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

)