Você está na página 1de 35

Arquitetura de Sistemas

Operacionais

Capítulo 6
Thread

Cap. 6 – Thread 1
Sumário
• Introdução
• Ambiente monothread
• Ambiente multithread
• Arquitetura e implementação

Cap. 6 – Thread 2
Sumário
• Introdução
• Ambiente monothread
• Ambiente multithread
• Arquitetura e implementação

Cap. 6 – Thread 3
Introdução
• Até o final da década de 1970 os SO
suportavam apenas processos monothread
(processo com um único programa)

• Em 1979 surgiu um SO (Toth) onde o


espaço de endereçamento de um
processo era compartilhado por vários
programas

• Thread: corresponde à uma parte


do código

Cap. 6 – Thread 4
Introdução
• Múltiplos threads possibilita aplicações
concorrentes eficientes ➔ um processo tem
partes diferentes do seu código sendo
executadas

• Causa menos overhead do que com múltiplos


processos

• Os threads de um mesmo processo


compartilham o mesmo espaço de
endereçamento ➔ comunicação mais fácil
entre threads ➔ melhor desempenho
Cap. 6 – Thread 5
Sumário
• Introdução
• Ambiente monothread
• Ambiente multithread
• Arquitetura e implementação

Cap. 6 – Thread 6
Sumário
• Introdução
• Ambiente monothread
• Ambiente multithread
• Arquitetura e implementação

Cap. 6 – Thread 7
Ambiente monothread
• Programa
– Composto de sequências de instruções
• Desvios (if, else, switch)
• Repetições (for, while, repeat)
• Chamadas a procedimentos e funções

• No ambiente monothread = apenas um


programa ocupa o espaço de endereçamento

• Aplicações concorrentes utilizam múltiplos


processos independentes ou subprocessos

Cap. 6 – Thread 8
Ambiente monothread
• É possível dividir uma aplicação em partes
utilizando processos independentes ou
subprocessos
• Exemplo: Sw de gerenciamento de e-mail:

– Usuário pode ler mensagens recebidas

– Usuário pode enviar e-mails

– Usuário pode receber novas mensagens

• Um processo para cada função ➔ Afeta o


desempenho
Cap. 6 – Thread 9
Ambiente Monothread
• Concorrência com processos

Subprocessos Processos Independentes

Cap. 6 – Thread 10
Ambiente Monothread
• Ambiente monothread

Thread Thread Thread

• Cada processo com seu contexto de


Hw, contexto de Sw e Espaço de
endereçamento
Cap. 6 – Thread 11
Sumário
• Introdução
• Ambiente monothread
• Ambiente multithread
• Arquitetura e implementação

Cap. 6 – Thread 12
Sumário
• Introdução
• Ambiente monothread
• Ambiente multithread
• Arquitetura e implementação

Cap. 6 – Thread 13
Ambiente Multithread
• Não existe programas associados a
processos ➔ são associados a threads

• O processo tem pelo menos um thread


em execução (main)

– Mas pode compartilhar seu espaço de


endereçamento com inúmeros outros
threads

Cap. 6 – Thread 14
Ambiente Multithread

Contexto Contexto Contexto


de hardware de hardware de hardware
Contexto de
software

Thread 1 Thread 2 Thread 3

Espaço de
endereçamento

Cap. 6 – Thread 15
Ambiente Multithread
• Thread: é uma sub-rotina de um
programa que pode ser executada de
forma assíncrona

• Assim, é possível a execução


concorrente de sub-rotinas dentro de
um mesmo processo

Cap. 6 – Thread 16
Ambiente Multithread
• Aplicação multithread

Cap. 6 – Thread 17
Ambiente Multithread
• Aplicação multithread

Cap. 6 – Thread 18
Ambiente Multithread
• Aplicação multithread
Processo

Espaço de
endereçamento

...
Variáveis
Thread_1

Contexto de
Hardware
Programa Principal PC
SP

Call Sub_1

Call Sub_2

Fim Thread_2

Contexto de
Hardware
PC
Sub_1
SP

Ret Thread_3

Contexto de
Hardware
Sub_2 PC
SP

Ret
...

Cap. 6 – Thread 19
Ambiente Multithread
• Cada processo pode responder a várias
solicitações concorrentemente

• Vantagens no uso de threads:


– Minimizar alocação de recursos do sistema
– Diminuir o overhead na criação, troca e
eliminação de processos

• Threads passam pelos mesmos estados


dos processos: execução, espera e
pronto
Cap. 6 – Thread 20
Ambiente Multithread
• Cada thread possui seu próprio
contexto de Hw: registradores

• Threads são implementados através de


Bloco de Controle do Thread (TCB)

• O TCB armazena:
– Contexto de Hw
– Prioridade
– Estado de execução

Cap. 6 – Thread 21
Ambiente Multithread
• Em um ambiente monothread o processo
é a unidade de alocação de recurso e
a unidade de escalonamento

• Em um ambiente multithread:
– O processo é a unidade de alocação de
recurso

– Cada thread é a unidade de escalonamento


• O SO seleciona o thread para execução

Cap. 6 – Thread 22
Ambiente Multithread
• Utiliza de forma concorrente:
– Processador
– Discos
– Outros periféricos

• Enquanto um thread executa uma


operação de E/S outro pode executar em
background

Cap. 6 – Thread 23
Ambiente Multithread
• Aplicação
multithread (a)

Thread de
entrada

Buffer

Thread de Thread de
exibição gravação

Cap. 6 – Thread 24
Ambiente Multithread
• Aplicação Cliente - Servidor

Cap. 6 – Thread 25
Sumário
• Introdução
• Ambiente monothread
• Ambiente multithread
• Arquitetura e implementação

Cap. 6 – Thread 26
Sumário
• Introdução
• Ambiente monothread
• Ambiente multithread
• Arquitetura e implementação

Cap. 6 – Thread 27
Arquitetura e Implementação

• Threads em modo usuário

• Threads em modo kernel

• Threads em modo híbrido

Cap. 6 – Thread 28
Arquitetura e Implementação

• Conjunto de rotinas para um aplicação


utilizar as facilidades dos threads:
Pacote de threads

• Threads podem ser oferecidos por uma


biblioteca de rotinas:
– Fora do núcleo do SO (Modo usuário)
– Pelo núcleo (Modo kernel)
– Por uma combinação de ambos (Híbrido)

Cap. 6 – Thread 29
Arquitetura e Implementação
• Threads em modo usuário (TMU)
– Implementado pela aplicação
– Deve ter uma biblioteca de rotinas que
possibilite o uso de threads:
• Criação e eliminação
• Troca de mensagens
• Política de escalonamento
– O SO “não sabe” da existência dos threads
– Com múltiplos processadores, os threads
de um processo não podem ser
escalonados simultaneamente
Cap. 6 – Thread 30
Arquitetura e Implementação
• Threads em modo usuário

Thread 1

Thread 2
Thread 0

Thread 3

Thread 4
Modo
usuário

Biblioteca

Kernel Modo
kernel

Cap. 6 – Thread 31
Arquitetura e Implementação
• Threads em modo kernel (TMK)
– Implementados pelo SO

– O SO “sabe” da existência de cada thread e


faz o escalonamento individulamente

– Com múltiplos processadores, os threads de


um processo podem ser escalonados
simultaneamente

– Tem baixo desempenho por causa da


mudança de modo de acesso (usuário-
kernel-usuário)
Cap. 6 – Thread 32
Arquitetura e Implementação
• Threads em modo kernel

Thread 4
Thread 1

Thread 2
Thread 0

Thread 3
Modo
usuário

Modo
Kernel kernel

Cap. 6 – Thread 33
Arquitetura e Implementação
• Threads em modo híbrido

– Combina vantagens de TMU e TMK

– Um TMK pode estar ligado a vários TMU

Cap. 6 – Thread 34
Arquitetura e Implementação
• Threads em modo híbrido

TMU 1
TMU 0

TMU 2

TMU 3

TMU 4

TMU 5
Modo
usuário

Biblioteca

TMK 0 TMK 1 TMK 2 TMK 3


Modo
kernel
Kernel

Cap. 6 – Thread 35

Você também pode gostar