You are on page 1of 39

Programao Concorrente

Processos e Threads
Prof. Eduardo Alchieri

Processos

O conceito mais central em qualquer sistema operacional o


processo

Uma abstrao de um programa em execuo

Um programa por si s no um processo. Um


programa uma entidade passiva, enquanto o
processo uma entidade ativa
Processos so programas em execuo, constituidos
por: cdigo executvel, pilha de execuo, estado do
processo, prioridade do processo, valor do contador de
programa (registrador PC), valor do apontador de pilha
(registrador SP), valores de demais registradores

Processos

Processo x Programa

Exemplo: preparao de bolo de aniversrio

A receita programa (algoritmo)

Os ingredientes dados de entrada

O cozinheiro processador

Atividade de preparar o bolo (processo)

Caso o filho do cozinheiro for picado por uma abelha


interrupo e chaveamento para um novo processo

Processo de fornecer cuidados mdicos: livro de primeiros


socorros (programa), remdios (dados de entrada), o
cozinheiro (processador) e atividade de cuidar da picada
(processo)
Quando terminar, volta para o processo de preparar o bolo

Processos
(modelo de processos)

Atravs de processos possvel ter ''operaes concorrentes''

Transformam um nica CPU em vrias CPUs virtuais


Pseudoparalelismo: rpida alternncia entre os processos na CPU
(multiprogramao)

Processos
(modelo de processos)

Recursos utilizados por um processo

Memria: um processo precisa de memria para armazenar


suas instrues e seus dados
CPU: um processo precisa estar de posse da CPU para
executar suas instrues
Dispositivos: via de regra, um processo precisa realizar
alguma tarefa de entrada e sada, em algum dispositivo,
como por exemplo receber o valor de uma varivel via
teclado, ler um disco, etc.
Arquivos: um processo, geralmente, precisa gravar ou
recuperar alguma informao armazenada em determinado
arquivo

Processos
(modelo de processos)

Um processo formado por trs elementos bsicos:

Contexto de hardware

Contexto de software

Espao de endereamento

C o n te x t o d e
S o f tw a r e

C o n te x to d e
H a rd w a re

Pro g ra m a
E sp a o d e
E n d e r e a m e n to

Processos
(modelo de processos)

Contexto de hardware

O contexto de hardware constitu-se, basicamente, do


contedo de registradores (PC, SP, etc.)
Quando um processo est em execuo, o seu contexto de
hardware est armazenado nos registradores do
processador
O contexto de hardware fundamental para a
implementao dos sistema de tempo compartilhado
(multiprogramados), no qual os processos se revezam na
utilizao do processador
A troca de um processo por outro na CPU, realizado pelo
SO, denominada Troca de Contexto

Processos
(modelo de processos)

S is te m a O p e r a c io n a l

Contexto de hardware

Na troca de contexto, o
SO armazena o contedo

P ro ce sso A

P ro ce sso B

e x e c u ta n d o

S a lv a r e g is tr a d o r e s d o
P ro ce sso A

dos registradores da CPU

C a r r e g a r e g is tr a d o r e s d o
P ro ce sso B

e x e c u ta n d o

S a lv a r e g is tr a d o r e s d o
P ro ce sso B

C a r r e g a r e g is tr a d o r e s d o
P ro ce sso A

e x e c u ta n d o

Processos
(modelo de processos)

Contexto de software

O contexto de software especifica caractersticas do processo


que influnciam na execuo de um programa
Composto por 3 grupos de informaes:

Identificao

Quotas

PID (Process Identification) cada processo criado pelo


sistema recebe uma identificao nica. As informaes
sobre um processo esto armazenadas na tabela de
processos, indexada pelo PID
UID (User Identification) cada processo deve possuir
tambm uma identificao do usurio
So os limites de cada recurso do sistema (arquivos,
memria, etc) que um processo pode alocar

Privilgios

Definem o que o processo pode ou no fazer em relao ao


sistema e aos outros processos

Processos
(modelo de processos)

Espao de endereamento

rea de memria onde o programa ser armazenado, alm


do espao para os dados utilizados por ele
Cada processo possui seu prprio espao de
endereamento, que deve ser protegido do acesso dos
demais processos

Pilha de execuo

Dados
Cdigo

Processos
(criao de processos)

Principais eventos que causam a criao de um processo

Inicializao do sistema

Na inicializao vrios processos so criados

Exemplo: processo para receber requisies de pginas Web

Execuo de uma chamada de sistema de criao de


processo por um processo em execuo

Exemplo: no UNIX a chamada fork

Uma requisio do usurio para criar um novo processo

Processos pais criam processos filhos, que podem criar seus


prprios processos filhos e assim por diante

Em sistemas interativos, digitando um comando ou clicando em um


cone

Incio de uma tarefa em lote

Em computadores de grande porte, quando o mesmo possui


recursos suficientes para executar a tarefa

Processos
(trmino de processos)

Condies que terminam um processo

Sada Normal (voluntria)

Quando terminaram seu trabalho

Sada por erro (voluntria)

Processo descobre um erro fatal

Exemplo: compilar um arquivo que no existe

Erro fatal (involuntria)

Erro causado pelo processo, normalmente erro de programao

Exemplo: diviso por zero, referncia para memria inexistente

Cancelamento por um outro processo (involuntria)

Um processo executa uma chamada de sistema dizendo ao SO


para cancelar algum outro processo
Exemplo: no UNIX a chamada kill

Processos
(tipos de processos)

Os processos so classificados de acordo com o tipo de


processamento que realizam
Existem dois tipos de processos:
CPU-bound: um processo dito CPU-bound quando passa
a maior parte do tempo utilizando o processador

I/O-bound:um processo dito I/O-bound quando passa a


maior parte do tempo realizando operaes de I/O (E/S)

Perodos de uso de CPU alternados com perodos de espera por operaes de E/S

a) Processo CPU-bound
b) Processo I/O bound

Processos
(estados de processos)

Consiste da atividade atual do processo


H vrias formas de representar os estados de um processo,
variando o detalhamento dos estados possveis
Segundo Tanembaum

Estados

Em execuo: o processo
tem o controle da CPU
(processador)

Pronto: aguarda sua vez de


usar a CPU

Bloqueado: est ocioso e


aguarda o ocorrncia de
algum evento externo

Processos
(implementao de processos)

Todas as informaes sobre um processo so mantidas na


tabela de processos
A tabela de processos tem campos que dizem respeito:
gerncia do processo

gerncia da memria

gerncia de arquivos
A tabela de processos possui uma entrada por processo e os
campos nela contidos variam de sistema operacional para
sistema operacional

Processos
(implementao de processos)

Alguns campos tpicos de um processo na tabela

Processos
(modelando a multiprogramao)

Usando multiprogramao, a utilizao da CPU pode ser


aumentada

Com a multiprogramao mais de um processo compete


pela CPU, de forma que quando um processo estiver
aguardando por algum evento (ex.: E/S) outro processo
pode utilizar a CPU

Processos

Escalonamento de Processos

Processos
(escalonamento)

Em computadores multiprogramados, muitas vezes mltiplos


processos (ou threads) competem pelo uso da CPU ao mesmo
tempo

Isso ocorre sempre que dois ou mais processos esto


simultaneamente no estado pronto

Nestes casos, quando o CPU se encontrar disponvel, dever


ser feita uma escolha sobre qual processo executar

A parte do sistema operacional que faz esta escolha o


escalonador e o algoritmo que ele usa o algoritmo de
escalonamento
tarefa do escalonador tambm determinar quanto tempo o
processo poder utilizar a CPU
O algoritmo de escalonamento define, assim, a poltica de
utilizao do processador pelos processos

Processos
(escalonamento)

Quando um processo solicita operaes bloqueantes (E/S, por


exemplo), sua execuo fica suspensa at que o evento
solicitado ocorra

Se outro processo estiver pronto para execuo, o mesmo


poder passar a utilizar a CPU, maximizando a utilizao da
mesma, melhorando o desempenho percebido do sistema

Execuo de 2 processos sem concorrncia


exec

idle

exec idle

exec

idle

P1
exec

idle

exec

P2

Execuo de 2 processos com concorrncia


exec
idle

idle
exec

exec idle
idle

exec

exec

P2

P1

Threads

Threads

Threads

O modelo de processos estudado supe o uso de apenas uma


thread por processo
Cada processo tem o seu espao de endereamento e um
nico thread de controle
Contudo, frequentemente h situaes em que desejvel ter
mltiplos threads de controle no mesmo espao de
endereamento executando em pseudo paralelo, como se
fossem processos separados

Exceto pelo espao de endereamento compartilhado


Intuitivamente, threads so como processos dentro de outo
processo (so linhas/fluxo de execuo)

Mas, quando desejvel utilizar mais de uma thread?

Threads

Exemplo 1: Processador de textos

Threads

Exemplo 2: Servidor Web

Threads
(modelo clssico)

O modelo de processos baseado em dois conceitos


independentes:

Agrupamento de recursos: espao de endereamento,


arquivos abertos, etc. (todos os recursos necessrios para
realizar alguma tarefa). Aglutinar estes recursos na forma de
um processo facilita o gerenciamento destes recursos.
Execuo: representa o thread de execuo do processo, o
qual contm:

Um contador de programa que aponta para a prxima instruo a ser


executada
Registradores, que contm as variveis de trabalho atuais
A pilha que traz a histria da execuo, com uma estrutura para
cada rotina chamada mas ainda no terminada

Apesar de threads serem executadas em processos, ambos


so conceitos diferentes e podem ser tratados separadamente

Processos so usados para agrupar recursos


Threads so as entidades escalonadas para usar a CPU

Threads
(modelo clssico)

O modelo de threads permite que mltiplas execues ocorram


no mesmo ambiente de processo, com um grande grau de
independncia uma da outra
Threads (tambm chamadas de processos leves) so linhas de
execuo, e compreendem:

Id: identificador da thread

Endereo da prxima instruo a ser executada

Conjunto de registradores em uso

Uma pilha de execuo

Threads compartilham com outras threads recursos, como:

Trecho de cdigo

Dados

Arquivos abertos

Multithread o termo usado para descrever a situao em que


permitido a existncia de mltiplos threads em um processo

Threads
(modelo clssico)

Uma thread uma maneira de um programa dividir a si mesmo


em duas ou mais tarefas simultneas
Processo simples vs. Multithreads

Threads
(modelo clssico)

Processo simples vs. Multithreads

Threads
(modelo clssico)

Itens por processo vs. Itens por thread

Threads
(vantagens)

Tempo de resposta

Compartilhamento de recursos

Por padro as threads compartilham: memria e qualquer


recurso alocado pelo processo ao qual so subordinadas
No necessria a alocao de mais recursos no sistema

Economia

Uma aplicao interativa pode continuar sendo executada


se parte dela est bloqueada, ou executando uma operao
lenta

mais econmico criar e trocar o contexto das threads

Utilizao de arquiteturas multiprocessadas

Cada thread pode ser executada de forma paralela, em


processadores distintos

Threads
(gerenciamento)

Existem dois modos principais de implementar threads

Threads no espao de usurio

So admitidas no nvel do usurio e gerenciadas sem


o suporte do ncleo (kernel)

Threads
(gerenciamento)

Existem dois modos principais de implementar threads

Threads no ncleo (kernel)

So admitidas e gerenciadas diretamente pelo sistema


operacional
Quase todos os sistemas operacionais admitem threads de kernel

Exemplos: Windows XP, Linux, Mac OS X, Solaris

Threads
(gerenciamento)

Implementao hbridas

Tenta combinar as vantagens dois dois modos anteriores

Modo usurio: rpida criao e chaveamento entre threads


Modo ncleo: o processo todo no bloqueado pelo bloqueio de uma
thread

A idia utilizar algumas threads de ncleo e multiplexar


threads de usurios sobre elas

O usurio decide quantas threads utilizar, tendo uma maior flexibilidade

Threads
(modelos de multithreading)

Modelo N para 1

N threads de usurios para 1 thread do ncleo (thread de sistema)


O gerenciamento das threads realizado pela biblioteca de threads no
nvel de usurio
Se um thread fizer uma chamada ao sistema que bloqueia o
processamento, todo o processo ser bloqueado

Utilizado em sistemas que no suportam threads em nvel de sistema

Alguns sistemas operacionais que suportam este modelo: Solaris e Linux

Threads
(modelos de multithreading)

Modelo 1 para 1

Associa cada thread de usurio para 1 thread do ncleo


Prov maior concorrncia do que o modelo anterior, permitindo que outra
thread seja executada quando uma thread faz uma chamada bloqueante
Permite que vrias threads sejam executadas em paralelo em
multiprocessadores
Desvantagem: a criao de um thread de usurio mais rpida do que a
criao de uma thread de ncleo
Alguns sistemas operacionais que suportam este modelo: verses atuais
do Linux, Windows 95/98/NT/2000.

Threads
(modelos de multithreading)

Modelo N para M

N threads de usurio para M threads do ncleo


O nmero de threads de ncleo pode ser especfico a determinada
aplicao ou a determinada mquina
Quando um thread realiza uma chamada de sistema bloqueante, o
escalonador do sistema operacional pode escolher outra thread do mesmo
processo
Alguns sistemas operacionais que suportam este modelo: Solaris 2,
Windows NT/2000 (com o Pacote ThreadFiber)

Threads
(bibliotecas de threads)

Uma biblioteca de thread fornece ao programador uma API


(application programming interface) para a criao e
gerenciamento de threads
Existem duas maneiras de implementar bibliotecas

Fornecer uma biblioteca no espao do usurio, sem suporte


do ncleo
Fornecer uma biblioteca no nvel do ncleo, com suporte
direto do sistema operacional

As trs bibliotecas de threads mais comuns so:

POSIX Pthreads (nvel de usurio ou de ncleo)

Win32 (nvel de ncleo)

Java (no nvel de usurio, mas usa sempre a biblioteca do


sistema operacional hospedeiro)

Threads
(escalonamento de threads)

Em sistemas operacionais que admitem a criao de threads


no nvel do ncleo, so as threads que so escalonadas, e no
os processos
As threads em nvel de usurio no so conhecidas pelo
sistema operacional
Nas implementaes dos modelos N para 1 ou N para M, a
biblioteca de suporte a threads (sistema supervior do processo)
escalona as threads em nvel de usurio

Esse esquema conhecido como Escopo de Disputa do


Processo (Process Contention Scope PCS)
Pois a disputa pela CPU ocorre entre as threads
pertencentes ao mesmo processo

Threads
(escalonamento de threads)

As threads no nvel do ncleo so escalonadas para o uso da


CPU
Esse esquema conhecido como Escopo de Disputa do
Sistema (System Contention Scope SCS)

A disputa pela CPU com escalonamento SCS ocorre entre


todas as threads no sistema
Os sistemas operacionais que utilizam o modelo 1 para 1
(Windows XP, Solaris 9 e Linux) escalonam as threads usando
apenas o SCS

Normalmente, o PCS realizado de acordo com a prioridade, o


escalonador seleciona a thread executvel com a maior
prioridade para execuo

As prioridades das threads do usurio so definidas pelo


programador

You might also like