Você está na página 1de 22

Programao Concorrente

Processos e Threads
Prof. Mariana Massimino Feres

Processos e Threads

Definio de Processo

um programa em execuo, incluindo os valores


correntes do contador de programa, registradores, e
variveis. O conceito de processo dinmico, em
contraposio ao conceito de programa (cdigo fonte),
que esttico

Processos e Threads
nome
PID
owner (UID)

registradores
gerais

prioridade de
execuo
data/ hora
de criao

registrador PC

Contexto de
Software

Contexto de
Hardware

registrador SP

tempo de
processador
quotas
Programa

privilgios
Espao de
Endereamento

endereos de memria
principal alocados

registrador
de status

Processos e Threads

Processos representados resumidamente

Bloco de Controle de Processo (BCP), tambm


conhecido por Bloco de Controle de Programa ou
Descritor de Processo.

Estrutura de dados contendo informaes importantes


sobre o processo

Processos e Threads

Estados do processo

Indefinido
Bloqueado ou em espera
Pronto para execuo
Em execuo

Os processos podem ser classificados como

CPU-bound: ligado a CPU. Passa a maior parte do tempo no


estado em execuo utilizando ao processador. So processos
que executam poucas operaes de E/S Ex: clculos
cientficos
I/O-bound: ligado a E/S. Passa a maior parte do tempo no
estado bloqueado. Realizam grande quantidade de operaes
de E/S. Ex: programa editor

Processos e Threads

E/ S

E/ S

UCP

UCP

tempo
(a) CPU-bound

tempo
(b) I/ O-bound

Processos e Threads

Processos Foreground

Tem comunicao com o usurio durante o


processamento

Processo Background

No existe comunicao com o usurio durante o


processamento

Processos e Threads

Como implementar concorrncia em uma


aplicao??
Programador pode separar partes do programa em
processos diferentes

Processos e Threads

Processos independentes

No existe vnculo do processo criado com o processo


criador
Tem contexto de HW, SW e espao de endereamento
prprio

Processos e Threads

Subprocesso

Criado dentro de uma


estrutura hierrquica
Nesse caso existe
dependncia entre o
processo criador e o
processo filho. Se o criador
deixar de existir, os filhos
so automaticamente
eliminados
Como o pai, os processos
filhos possuem seu prprio
BCP

Processos e Threads

Os dois mecanismos apresentados (processos


independentes e subprocessos) demandam
alocao de recursos do sistema sempre que um
novo processo e criada

Consome tempo de processamento na criao e na


eliminao (liberar recursos alocados)
Sincronizao e comunicao entre os processos mais
complicada, pois possuem espao de endereamento
diferentes

Processos e Threads
Nesse conceito surgiu o conceito de threads

Tentar reduzir tempo de criao, eliminaao e troca de


contesto de processos da aplicao e ainda economizar
recursos do sistema.
Compartilham o processador como os processos

Contexto
de hardware

Contexto
de hardware

Contexto
de hardware

Thread 1

Thread 2

Thread 3

Contexto de
software

Espao de
endereamento

Processos e Threads

Ambiente monothread
Possui apenas uma thread no processo
Para implementar concorrncia na aplicao precisa
usar processos independentes ou subprocessos

Processos e Threads

Ambiente multithread
Os programas so associados a threads e no a
processos
Processo pode compartilhar seu espao de
endereamento com inmeras threads
Assim, podemos definir thread como sendo uma
subrotina de um programa que pode ser executada
de forma assncrona, concorrentemente ao
programa chamador
Programador deve especificar quais partes sero
associada a threads

Processos e Threads
Processo

Variveis

Programa Principal

Thread_1
PC
SP

Contexto de
Hardware

...

Espao de
endereamento

Call Sub_1

Thread_2

Sub_1

Ret

PC
SP

Thread_3

Sub_2

...

Ret

PC
SP

Contexto de
Hardware

Fim

Contexto de
Hardware

Call Sub_2

Processos e Threads

As threads compartilham o processador com os


processos e passam pelos mesmos estados

Enquanto uma espera por E/S outra pode ser executada

Para permitir essa troca, cada thread possui seu prprio


contexto de HW com o contedo dos registradores

TCB thread control block ou BCT bloco de controle de


thread

O sistema escalona uma thread do processo para


execuo e no o prprio processo

Processos e Threads

Vantagens do uso de threads

Enquanto uma est esperando operaes de E/S, outra


est rodando em background
Muito utilizado em sistemas cliente-servidor
Pode ser utilizado para implementar o ncleo do sistema
operacional

Arquitetura microkernel

Processos e Threads

Se o programador quem define as threads, como


feito?

Existe rotinas para criao de threads


No um desenvolvimento trivial
Muitas threads pode sobrecarregar o sistema
O compartilhamento de recursos deve ser realizado de
maneira sincronizada
E sempre ter em mente que:

Para se beneficiar da tcnica, uma aplicao deve permitir


que partes diferentes do cdigo sejam executados
concorrentemente de forma independente

Processos e Threads

Vantagem:

Desvantagem:
tratamento individual de
sinais

Thread 4

pode ser utilizado em um S.O. que no implementa


threads
Dispensa mudana de modo de acesso, pois no usa
rotinas no ncleo
Thread 3

Thread 2

S.O. no sabe da existncia de mltiplas threads


Aplicao que gerencia

Thread 1

Arquitetura e implementao
Em modo usurio

Thread 0

Modo
usurio

Biblioteca

Kernel

Modo
kernel

Processos e Threads
Em modo Kernel

Baixo desempenho
Utiliza muitas mudanas de modos de acesso

Kernel

Thread 4

Thread 3

Thread 2

As threads so criadas e gerenciadas por meio de


chamadas a rotinas do sistema
S.O. sabe da existncia de cada thread e pode escalonlas
Problema:

Thread 1

Thread 0

Modo
usurio

Modo
kernel

Processos e Threads
Modo hbrido

TMU 5

TMU 4

TMU 3

TMU 2

Tenta combinar as vantagens dos modos usurio e kernel


Herda os problemas de ambos

TMU 1

TMU 0

Modo
usurio

Biblioteca

TMK 0

TMK 1

TMK 2

TMK 3
Modo
kernel

Kernel

Processos e Threads

Thread 4

Ex: se a thread for para o estado de espera, o ncleo no


precisa tomar conhecimento, basta que a prpria
biblioteca em modo usurio escalone outra
Thread 3

Thread 2

Thread 1

Scheduler Activation
O ncleo do S.O. troca mensagens com a biblioteca
de threads
Evita mudanas de modo de acesso desnecessrias

Thread 0

Modo
usurio

Biblioteca

Kernel

Modo
kernel