Você está na página 1de 70

Captulo 2 Processos e Threads

2.1 Processos 2.2 Threads 2.3 Comunicao interprocesso 2.4 Problemas clssicos de IPC 2.5 Escalonamento
1

Processos
O Modelo de Processo

Multiprogramao de quatro programas Modelo conceitual de 4 processos sequenciais, independentes Somente um programa est ativo a cada momento
2

Criao de Processos
Principais eventos que levam criao de processos
- Incio do sistema - Execuo de chamada ao sistema de criao de processos - Solicitao do usurio para criar um novo processo - Incio de um job em lote
3

Trmino de Processos
Condies que levam ao trmino de processos
Sada normal (voluntria) Sada por erro (voluntria) Erro fatal (involuntrio) Cancelamento por um outro processo (involuntrio)
4

Hierarquias de Processos
Pai cria um processo filho, processo filho pode criar seu prprio processo Formam uma hierarquia
UNIX chama isso de grupo de processos

Windows no possui o conceito de hierarquia de processos


Todos os processos so criados iguais
5

Estados de Processos (1)


Transies entre os estados de um processo

Possveis estados de processos


em execuo bloqueado pronto para executar

Fila dos Prontos

CPU

E/S

Fila de E/S

Solicitao de E/S

Quantum Expirado

Filho executa

Cria processo filho

Interrupo ocorre

Espera interrupo

Filas de Escalonamento de Processos


7

Estados de Processos (2)

Camada mais inferior de um SO estruturado por processos


trata interrupes, escalonamento

Acima daquela camada esto os processos sequenciais


8

Implementao de Processos (1)

Campos da entrada de uma tabela de processos


9

Implementao de Processos (2)

O que faz o nvel mais baixo do SO quando ocorre uma interrupo


10

Threads O Modelo de Thread (1)


Processo ? um espao de endereo e uma nica linha de controle Threads ? um espao de endereo e mltiplas linhas de controle
O Modelo do Processo
Agrupamento de recursos (espao de endereo com texto e dados do programa; arquivos abertos, processos filhos, tratadores de sinais, alarmes pendentes etc) Execuo

O Modelo da Thread
Recursos particulares (PC, registradores, pilha) Recursos compartilhados (espao de endereo variveis globais, arquivos etc) Mltiplas execues no mesmo ambiente do processo com certa independncia entre as execues

Analogia
Execuo de mltiplos threads em paralelo em um processo (multithreading) e Execuo de mltiplos processos em paralelo em um computador
11

O Modelo de Thread (2)

(a) Trs processos cada um com um thread (b) Um processo com trs threads
12

O Modelo de Thread (3)

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

13

O Modelo de Thread (4)

Cada thread tem sua prpria pilha


14

O Modelo de Thread (5)

Onde: PC ? Contador de Programa Ti ? Thread i


15

O Modelo de Thread (6)


Exemplos de chamadas de biblioteca
create_thread thread_exit thread_destroy
destri o thread inclui o desligamento do segmento de pilha

thread_wait (thread2)
thread 1 bloqueia at que thread 2 termine

thread yield
Renuncia CPU em prol de outro thread

thread_status
Retorna o estado atual do thread
16

O Modelo de Thread (7)


Threads voluntariamente renunciam CPU com thread_yield
Thread ping Thread pong

Qual o resultado da execuo desses dois threads?


17

O Modelo de Thread (8)


Como funciona o thread_yield( )?
Semntica: thread-yield abre mo da CPU em favor de outro thread Em outras palavras: chaveia o contexto para outro thread

O que significa retornar de uma chamada thread_yield?


Significa que outro thread chamou thread_yield

Resultado da execuo de ping/pong


printf(ping\n); thread_yield(); printf(pong\n); thread_yield();
18

Uso de Thread (1)


Porqu threads?
Simplificar o modelo de programao (aplicao com mltiplas atividades => decomposio da aplicao em mltiplas threads) Gerenciamento mais simples que o processo (no h recursos atachados criao de thread 100 vezes mais rpida que processo) Melhoria do desempenho da aplicao (especialmente quando thread orientada a E/S) til em sistemas com mltiplas CPUs

Exemplo do uso de threads Aplicao: Processador de texto Uso de 3 threads


Interao com o usurio Formatao de texto Cpia de documento

Soluo com 3 processos versus soluo com 3 threads


19

Uso de Thread (2)

Um processador de texto com trs threads


20

Uso de Thread (3)

Um servidor web com mltiplos threads


21

Uso de Thread (4)

Cdigo simplificado do slide anterior


(a) Thread despachante (b) Thread operrio
22

Uso de Thread (5)

Trs maneiras de construir um servidor

23

Uso de Thread (6)


Threads no preemptivos tm que abrir mo da CPU voluntariamente Um thread com execuo longa controlar a CPU (pode rodar para sempre) Chaveamento de contexto ocorre apenas quando so emitidas chamadas voluntrias para thread_yield(), thread_stop(), ou thread_exit() Escalonamento preemptivo causa chaveamento de contexto involuntrio Necessrio retomar controle do processador assncronamente
Usar interrupo de clock Tratador de interrupo de clock fora thread atual a chamar thread_yield

24

Implementao de Threads de Usurio(1)

Um pacote de threads de usurio


25

Threads podem ser implementados em S.O. que no suporta thread Cada processo precisa ter sua tabela de threads So gerenciados pelo sistema de gerenciamento de threads (runtime system) atravs de coleo de procedimentos de biblioteca Criao de thread novo, chaveamento entre threads e sincronizao de threads => feitos via chamada de procedimento Aes de uma chamada de procedimento:
Verifica se thread muda para estado bloqueado Salva PC, pilha, registradores Busca na tabela de threads prontos para rodar Carrega PC e ponteiro de pilha => novo thread comea a rodar

Implementao de Threads de Usurio(2)

Chaveamento de thread uma ordem de magnitude mais rpido que mudar para o modo ncleo (grande vantagem sobre implementao no ncleo) Cada processo pode ter seu prprio algoritmo de escalonamento de threads personalizado

26

Implementao de Threads de Usurio(3)


Thread faz chamada de sistema que bloqueia
thread que bloqueia afeta os outros processo que roda todos os threads interrompido

Solues Possveis:
Alterar todas as chamadas do sistema para no bloqueantes
Requer alterao do sistema operacional Requer alteraes em vrios programas do usurio (alterao da semntica da chamada)

Envelopar as chamadas do sistema com procedimento que verifica se a chamada vai bloquear ou no
Ex.: select do Unix read substitudo por outro read que primeiro faz a chamada select se a chamada vai bloquear, adiada => roda outro thread
27

Implementao de Threads de Usurio(4)


Desvantagens
No so bem integrados com o S.O. => S.O. pode tomar decises ruins
Escalonar um processo com threads ociosos Bloquear um processo cujo thread iniciou uma E/S mesmo que o processo tenha outros threads que podem executar Retirar a CPU de um processo com um thread que retm uma varivel de trancamento (lock)

Soluo: comunicao entre o ncleo e o sistema de gerenciamento de threads no espao do usurio


28

Implementao de Threads de Ncleo(1)

Um pacote de threads gerenciado pelo ncleo


29

Implementao de Threads de Ncleo(2)


No precisa de sistema de gerenciamento de threads (run-time)
o ncleo sabe sobre os threads

Gerenciamento de threads atravs de chamadas para o ncleo (tabela de threads) reciclagem de threads Chamadas que podem bloquear um thread
implementadas como chamadas ao sistema

O que faz o ncleo quando um thread bloqueia? No requer modificaes nas chamadas ao sistema

Desvantagem
Custo alto => chamadas ao sistema
30

Implementaes Hbridas(1)

Multiplexao de threads de usurio sobre threads de ncleo


31

Implementaes Hbridas(2)
Threads no usurio no usam truques como chamadas especiais no bloqueantes
Se tiver que bloquear => deve ser possvel rodar outros threads do mesmo processo (se prontos)

Thread espera por outro thread => no envolve o ncleo (sistema de execuo runtime system trata isso) Uso de upcall
ncleo sabe que thread bloqueou ncleo notifica sistema de execuo (passa ID do thread e descrio do evento ocorrido) ncleo ativa sistema de execuo (num endereo conhecido) Sistema de execuo re-escala seus threads (pega da lista de prontos, seta registradores e inicializa)

Volta do evento bloqueado


- ncleo sabe que pgina foi trazida para memria ou dados foram lidos - ncleo notifica sistema de execuo (upcall) - Sistema de execuo decide se volta a rodar thread ou coloca na fila de prontos

Tratamento de interrupo de hardware


- Thread em execuo interrompido e salvo (pode ou no voltar a rodar depois da interrupo ser tratada)

Desvantagem: Viola o princpio do modelo em camadas

32

Ativaes do Escalonador
Objetivo imitar a funcionalidade dos threads de ncleo
ganha desempenho de threads de usurio

Evita transies usurio/ncleo desnecessrias Ncleo atribui processadores virtuais para cada processo
deixa o sistema supervisor alocar threads para processadores

Problema: Baseia-se fundamentalmente nos upcalls - o ncleo (camada inferior) chamando procedimentos no espao do usurio (camada superior)
33

Threads Pop-Up

Criao de um novo thread quando chega uma mensagem


(a) antes da mensagem chegar (b) depois da mensagem chegar
34

Convertendo Cdigo Monothread em Cdigo Multithread (1)

Conflitos entre threads sobre o uso de uma varivel global


35

Convertendo Cdigo Monothread em Cdigo Multithread (2)


Um thread tem suas prprias variveis locais e globais e parmetros de procedimentos Varivel global para um thread mas no global para multithreads => inconsistncias (ex.: errno) Resoluo de inconsistncias em multithreads
Proibir variveis globais Atribui para cada thread suas prprias variveis globais privadas (cpia do errno para cada thread) Como acessar variveis globais atribudas para cada thread? Alocar espao de memria e passar para o thread como parmetro extra Novas bibliotecas (create_global)

Cdigo de procedimentos de biblioteca no so reentrantes (segunda chamada para procedimento no feita enquanto primeira no foi finalizada)
Reescrever a bilbioteca Flag que indica que biblioteca est em uso elimina paralelismo Reprojetar o sistema (no mnimo redefinir semntica das chamadas, reescrever bibliotecas) mantendo compatibilidade com programas e aplicaes atuais.
36

Convertendo Cdigo Monothread em Cdigo Multithread (3)

Threads podem ter variveis globais privadas


37

Comunicao Interprocesso
Condies de Disputa

Dois processos querem ter acesso simultaneamente memria compartilhada


38

Regies Crticas (1)


Quatro condies necessrias para prover excluso mtua:
1. Nunca dois processos simultaneamente em uma regio crtica 2. Nenhuma afirmao sobre velocidades ou nmeros de CPUs 3. Nenhum processo executando fora de sua regio crtica pode bloquear outros processos 4. Nenhum processo deve esperar eternamente para entrar em sua regio crtica
39

Regies Crticas (2)

Excluso mtua usando regies crticas


40

Excluso Mtua com Espera Ociosa (1)

Soluo proposta para o problema da regio crtica


(a) Processo 0 (b) Processo 1
41

Excluso Mtua com Espera Ociosa (2)

Soluo de Peterson para implementar excluso mtua

42

Excluso Mtua com Espera Ociosa (3)

Entrando e saindo de uma regio crtica usando a instruo TSL


43

Dormir e Acordar

Problema do produtor-consumidor com uma condio de disputa fatal

44

Semforos

O problema do produtor-consumidor usando semforos

45

Mutexes

Implementao de mutex_lock e mutex_unlock


46

Monitores (1)

Exemplo de um monitor
47

Monitores (2)

Delineamento do problema do produtor-consumidor com monitores


somente um procedimento est ativo por vez no monitor o buffer tem N lugares
48

Monitores (3)
Soluo para o problema do produtorconsumidor em Java

49

Monitores (4)

Soluo para o problema do produtor-consumidor em Java (parte 2)

50

Troca de Mensagens

O problema do produtor-consumidor com N mensagens

51

Barreiras

Uso de uma barreira


a) processos se aproximando de uma barreira b) todos os processos, exceto um, bloqueados pela barreira c) ltimo processo chega, todos passam

52

Jantar dos Filsofos (1)


Filsofos comem/pensam Cada um precisa de 2 garfos para comer Pega um garfo por vez Como prevenir deadlock

53

Jantar dos Filsofos (2)

Uma soluo errada para o problema do jantar dos filsofos

54

Jantar dos Filsofos (3)

Uma soluo para o problema do jantar dos filsofos (parte 1)


55

Jantar dos Filsofos (4)

Uma soluo para o problema do jantar dos filsofos (parte 2)

56

O Problema dos Leitores e Escritores

Uma soluo para o problema dos leitores e escritores

57

O Problema do Barbeiro Sonolento (1)

58

O Problema do Barbeiro Sonolento (2)

Soluo para o problema do barbeiro sonolento

59

Escalonamento
Introduo ao Escalonamento (1)

Surtos de uso da CPU alternam-se com perodos de espera por E/S


a) um processo orientado CPU b) um processo orientado E/S
60

Introduo ao Escalonamento (2)

Objetivos do algoritmo de escalonamento


61

Escalonamento em Sistemas em Lote (1)

Tempo de retorno
(a) 8 para A 12 para B 16 para C 56 4 14 20 para D (b) 4 para B 8 para C 12 para D 20 para A 44 4 11

Um exemplo de escalonamento job mais curto primeiro


62

Escalonamento em Sistemas em Lote (2)


Job mais curto primeiro
(timo s quando todos os jobs esto disponveis ao mesmo tempo)
2 T cheg A 0 4 B 0 1 1 1 C D E 3 3 3 4 B 0 1 1 1 C D E 3 3 3 2 A 0

(a) Tempo de retorno (b) (a)


2 para A 6 para B 4 para C 5 para D 6 para E 4 para B 2 para C 3 para D 4 para E 9 para A
1

(b)

1 1

C D E

1 + 2 + 3 + 5 + 9 = 20

5 4

23

5 4.6

22

5 4.4

63

Escalonamento em Sistemas em Lote (3)

Escalonamento em trs nveis


64

Escalonamento em Sistemas Interativos (1)

Escalonamento por alternncia circular (round-robin)


a) lista de processos executveis b) lista de processos executveis depois que B usou todo o seu quantum
65

Escalonamento em Sistemas Interativos (2)

Um algoritmo de escalonamento com quatro classes de prioridade


66

Escalonamento em Sistemas de Tempo-Real Sistema de tempo-real escalonvel


Dados
m eventos peridicos evento i ocorre dentro do perodo Pi e requer C i segundos

Ento a carga poder ser tratada somente se

i?1

Ci ?1 Pi
67

Poltica versus Mecanismo


Separa o que permitido ser feito do como feito
um processo sabe quais de seus threads filhos so importantes e precisam de prioridade

Algoritmo de escalonamento parametrizado


mecanismo no ncleo

Parmetros preenchidos pelos processos do usurio


poltica estabelecida pelo processo do usurio
68

Escalonamento de Threads (1)

Possvel escalonamento de threads de usurio


processo com quantum de 50-mseg threads executam 5 mseg por surto de CPU
69

Escalonamento de Threads (2)

Possvel escalonamento de threads de ncleo


processo com quantum de 50mseg threads executam 5 mseg por surto de CPU
70

Você também pode gostar