Escolar Documentos
Profissional Documentos
Cultura Documentos
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)
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
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
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:
Cap. 6 – Thread 10
Ambiente Monothread
• Ambiente monothread
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
Cap. 6 – Thread 14
Ambiente Multithread
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
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
• 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
Cap. 6 – Thread 22
Ambiente Multithread
• Utiliza de forma concorrente:
– Processador
– Discos
– Outros periféricos
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
Cap. 6 – Thread 28
Arquitetura e Implementação
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
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
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
Cap. 6 – Thread 35