Você está na página 1de 21

Processos e

Threads
Sistemas Operacionais (SOP-
BCC)
De: Andrew S. Tanenbaum
Tradução: Ronaldo A.L. Gonçalves
Luís A. Consulado

Responsável pela disciplina:


Prof. Dr. Maurício Aronne Pillon
Curso de Ciência da Computação

1
Pearson Education                                                                         Sistemas Operacionais Modernos – 2ª Edição
Threads (conceitos)
• Mais de um fluxo de controle em um mesmo
espaço de endereçamento (compartilhado);
• Agrupamento de recursos e execução.
– Recursos (código, dados do programa, etc)
compartilhados;
– Execução com mais de um contador de
programa - controle de qual instrução será
executada a seguir (pilha e variáveis atuais);

15
Pearson Education                                                                         Sistemas Operacionais Modernos – 2ª Edição
Threads (conceito)

• Processos X Threads
– Processos usados para agrupar recursos;
– Threads são as entidades escalonadas
para execução sobre a CPU.
• Permite múltiplas execuções no mesmo
ambiente do processo com um grande
grau de independência uma da outra.

16
Pearson Education                                                                         Sistemas Operacionais Modernos – 2ª Edição
Threads
O Modelo de Thread (1)

(a) Três processos cada um com um thread
(b) Um processo com três threads
17
Pearson Education                                                                         Sistemas Operacionais Modernos – 2ª Edição
O Modelo de Thread (2)

• Itens compartilhados por todos os threads em um 
processo
• Itens privativos de cada thread

18
Pearson Education                                                                         Sistemas Operacionais Modernos – 2ª Edição
O Modelo de Thread (3)

Cada thread tem sua própria pilha
19
Pearson Education                                                                         Sistemas Operacionais Modernos – 2ª Edição
Uso de Thread (1)

Um processador de texto com três threads
20
Pearson Education                                                                         Sistemas Operacionais Modernos – 2ª Edição
Uso de Thread (2)

Um servidor web com múltiplos threads
21
Pearson Education                                                                         Sistemas Operacionais Modernos – 2ª Edição
Uso de Thread (3)

• Código simplificado do slide anterior
(a) Thread despachante
(b) Thread operário

22
Pearson Education                                                                         Sistemas Operacionais Modernos – 2ª Edição
Uso de Thread (4)

Três maneiras de construir um servidor

23
Pearson Education                                                                         Sistemas Operacionais Modernos – 2ª Edição
Implementação de
 Threads de Usuário

Um pacote de threads de usuário 24
Pearson Education                                                                         Sistemas Operacionais Modernos – 2ª Edição
Implementação de
 Threads de Usuário
• Vantagens
– Não necessita de privilégios especiais;

• Desvantagens
– Não explora o paralelismo em máquinas
multiprocessadas;
– Dificuldade de gerência preemptiva do
processador
– Se um thread estiver bloqueado em E/S
todo o processo pára.

Pearson Education                                                                         Sistemas Operacionais Modernos – 2ª Edição
Implementação de
 Threads de Núcleo

Um pacote de threads gerenciado pelo núcleo
26
Pearson Education                                                                         Sistemas Operacionais Modernos – 2ª Edição
Implementação de
 Threads de Núcleo
• Vantagens
– Facilita o recobrimento de E/S
– Explora o paralelismo SMP
• Desvantagens
– Implementação mais “pesada”
• “Reciclagem” de threads

Pearson Education                                                                         Sistemas Operacionais Modernos – 2ª Edição
Implementações Híbridas

Multiplexação de threads de usuário sobre 
threads de núcleo 28
Pearson Education                                                                         Sistemas Operacionais Modernos – 2ª Edição
Implementações Híbridas
• Características:
– Dispões de dois níveis de escalonamento
– Multiplexação dos threads de núcleo
• Vantagens
– Recobrimento das E/S
• Desvantagens
– Difícil parametrização da multiplexação.

Pearson Education                                                                         Sistemas Operacionais Modernos – 2ª Edição
Ativações do Escalonador
• Objetivo – imitar a funcionalidade dos threads de 
núcleo
– ganha desempenho de threads de usuário
• Evita transições usuário/núcleo desnecessárias 
• Núcleo atribui processadores virtuais para cada 
processo
– deixa o sistema supervisor alocar threads para 
processadores
• Problema: Baseia­se fundamentalmente nos upcalls ­ 
o núcleo (camada inferior) chamando procedimentos 
no espaço do usuário (camada superior) 

30
Pearson Education                                                                         Sistemas Operacionais Modernos – 2ª Edição
Threads Pop­Up

• Criação de um novo thread quando chega 
uma mensagem
(a) antes da mensagem chegar
(b) depois da mensagem chegar 31
Pearson Education                                                                         Sistemas Operacionais Modernos – 2ª Edição
Convertendo Código Monothread
 em Código Multithread (1)
• Conflito no uso de variáveis globais;
– Proibir o uso de variáveis globais
– Atribuir variáveis globais privadas (a
cada thread)
• create_global(“bufptr”);
• set_global(“bufprt”,&buf)
• Bufptr = read_global(“bufptr”);

• Bibliotecas não reentrantes;


• Tratamento de sinais;
• Gerenciamento de pilhas 32
Pearson Education                                                                         Sistemas Operacionais Modernos – 2ª Edição
Convertendo Código Monothread
 em Código Multithread (2)

• Conflitos entre threads sobre o uso de uma variável global
• Código de erro de th1 é sobre escrito pelo da th2.
33
Pearson Education                                                                         Sistemas Operacionais Modernos – 2ª Edição
Convertendo Código Monothread
em Código Multithread (3)

Threads podem ter variáveis globais privadas
34
Pearson Education                                                                         Sistemas Operacionais Modernos – 2ª Edição