Anda di halaman 1dari 72

Sistemas Operacionais

Threads

https://sites.google.com/site/thiagoaalves/
thiago.augusto2@anhanguera.com

6 Thread
Ambiente Monothread

o Concorrncia implementada apenas com o uso de


processos independentes e subprocessos
Permite dividir uma aplicao em partes que podem
trabalhar de forma concorrente
o Problemas:
Consumo maior de recursos do sistema

Espao de endereamento no compartilhado


o Comunicao entre processos mais difcil e lenta
o Compartilhamento de recursos mais
complicado (ex: arquivos abertos)

6 Thread
Ambiente Monothread

Subprocessos

Processos Independentes

6 Thread
Ambiente Monothread
o Processos monothread possuem, cada um, seu
prprio contexto de hardware, de software e espao de
endereamento
o Exemplos de SOs monothread:

MS-DOS, primeiras verses do MS-Windows


Primeiros sistemas UNIX

Thread

Thread

Thread

6 Thread
Ambiente Multithread

Contexto
de hardware

Contexto
de hardware

Thread 1

Thread 2

Thread 3

Contexto de
software

Contexto
de hardware

Espao de
endereamento

6 Thread
Ambiente Multithread
o Programas so associados a threads, no a procesos
Cada programa tem pelo menos uma thread de execuo
Pode compartilhar espao de endereamento com outras
threads criadas pelo programa
o Thread corresponde a uma sub-rotina que pode ser executada
de forma assncrona (paralela) das demais
Sub-rotinas concorrentes dentro de um mesmo processo
Threads criadas dinamicamente, sob demanda

6 Thread
Aplicao Multithread
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

6 Thread
Aplicao Multithread

o Minimiza a alocao de recursos do sistema


o Mais rpidos p/ criao, trmino e troca de contexto
o Compartilham processador da mesma forma que processos
independentes
Mudana de estados entre wait, ready e running
Cada thread com contexto prprio de hardware
o Threads de um mesmo processo compartilham contexto de
software e espao de endereamento (comunicao mais rpida
e eficiente)

o Implementadas por estrutura chamada Thread Control Block


(TCB)

6 Thread
Aplicao Multithread

oTCB armazena contexto de hardware e informaes


exclusivas da thread (prioridade, estado)
o Unidade de alocao de recursos o processo
Threads criadas compartilham recursos do processo
o Unidade de escalonamento a thread
SO no escalona o processo para execuo, mas sim
uma de suas threads
o Compartilhamento de espao de endereamento inibe
mecanismos de proteo no acesso a este espao
(aplicao deve cuidar disto)

6 Thread
Aplicao Multithread
o Threads de um mesmo processo pode facilmente
compartilhar recursos como descritores de arquivos,
sinais, temporizadores, etc
o Uso de perifricos pode ser realizado de forma
concorrente entre as threads

o Melhora desempenho de algumas aplicaes onde


tarefas podem ser executadas em background
durantes operaes de E/S
Exs: editores de texto, planilhas, aplicaes
grficas, processamento de imagens

6 Thread
Aplicao Multithread

o Thread principal solicita


operaes de E/S

Th r e a d d e
e n tr a d a

o Threads especficas
executam as operaes de
E/S

Bu f f e r

Th r e a d d e
e xi b i o

Th r e a d d e
g r a v a o

6 Thread
Aplicao Multithread
o Essenciais para arquiteturas cliente-servidor
Thread no cliente p/ solicitar e aguardar o servio enquanto
thread principal continua executando em background
o Evita que processo cliente pare aguardando servio
pedido
Processo servidor dispara threads para atender cada
solicitao que chega de maneira simultnea
o Evita que uma solicitao precise aguardar o trmino
do atendimento das solicitaes anteriores
o teis para ncleo de arquiteturas microkernel

6 Thread
Aplicao Multithread
Processo servidor

Solicitaes

Thread

Thread

Thread

Processo cliente

Processo cliente

Processo cliente

6 Thread
Arquitetura e Implementao
o Sistemas Operacionais disponibilizam pacotes de threads
para serem usados pelas aplicaes
o Abordagem usada no pacote influenciar o desempenho, a
concorrncia e a modularidade das aplicaes multithread
o Podem ser oferecidas de quatro formas:
Biblioteca de rotinas em modo usurio (fora do ncleo
do SO)
Rotinas em modo kernel (do ncleo do SO)
Modo hbrido (modos kernel + usurio)
Modelo de Scheduler Activations

6 Thread
Arquitetura e Implementao

o Ex. de SOs de acordo com a arquitetura de thread:


Modo usurio
o Open VMS verso 6

Modo kernel
o Windows 2000, Open VMS verso 7, Compaq UNIX
Modo hbrido
o Sun Solaris verso 2
Modelo de Scheduler Activations
o FastThreads (University of Washington)

6 Thread
Threads em Modo Usurio
o Threads em modo usurio (TMU) so implementadas pela
aplicao, e no pelo SO, atravs de uma biblioteca de rotinas
Criao, eliminao, troca de mensagens, poltica de
escalonamento

o SO no gerencia nem sincroniza as mltiplas thread,


responsabilidade da aplicao
o Vantagem poder implementar aplicaes multithreads em
SOs que no suportam threads
o TMUs so mais rpidas por dispensarem acessos ao kernel
do SO, porm mais limitadas

6 Thread
Threads em Modo Usurio
o SO gerencia TMUs como se fosse uma nica thread
Caso uma thread entre em estado de espera, todo o
processo fica em estado espera
Biblioteca deve possuir rotinas que substituam as rotinas
bloqueantes por outras no-bloqueantes
o Sinais so enviados para o processo, no para a thread
Processo deve reconhecer os sinais e encaminh-los
para as threads de direito
O mesmo para interrupes de clock objetivando timesharing

6 Thread
Threads em Modo Usurio
o Caso hajam mltiplos processadores, TMUs no
podero rodar nos diferentes processadores
Como o SO s enxerga o processo, todas as
TMUs rodaro no mesmo processador

Thread 4

Thread 3

Thread 2

Thread 1

Thread 0

Limitao extrema para o paralelismo da


aplicao

Modo
usurio

Biblioteca

Kernel

Modo
kernel

6 Thread
Threads em Modo Kernel

o Threads em modo kernel (TMK) so implementadas


diretamente pelo ncleo do SO atravs de system calls que
fazem o gerenciamento e a sincronizao
SO escalona as threads individualmente
Utiliza capacidade de mltiplos processadores

Kernel

Thread 4

Thread 3

Thread 2

Thread 1

Thread 0

o Baixo desempenho devido s mudanas de modo de acesso


usurio-kernel-usurio (10 a 30x, +/-)

Modo
usurio

Modo
kernel

6 Thread
Threads em Modo Hbrido

o Threads em modo hbrido (TMH) combinam vantagens das


TMUs e das TMKs
Processo pode ter vrias TMKs e as TMKs podem ter
vrias TMUs
TMKs escalonadas individualmente pelo SO
Uma TMU pode ser executada por qualquer TMK
o Apesar da flexibilidade, apresenta desvantagens
Quando TMK faz uma operao bloquante, todas as
TMUs associadas TMK ficam bloqueadas
TMUs que precisem rodar em diferentes processadores
precisam estar em TMKs distintas

6 Thread

TMU 5

TMU 4

TMU 3

TMU 2

TMU 1

TMU 0

Threads em Modo Hbrido

Modo
usurio

Biblioteca

TMK 0

TMK 1

TMK 2

TMK 3
Modo
kernel

Kernel

6 Thread
Threads no Modelo Scheduler Activations

o Problemas das TMHs em muito se devem falta de


comunicao entre TMUs e TMKs
o O ideal combinar o que h de melhor nas TMUs e nas TMKs
sem precisar repetir os modelos
o Modelo de scheduler activations
Introduzido na dcada de 1990 na Universidade de
Washington
Ncleo do SO troca informaes com biblioteca de threads
atravs de estrutura chamada scheduler activations
Evita mudanas desnecessrias de modos de acesso

6 Thread
Threads no Modelo Scheduler Activations
o Caso uma thread faa uma chamada bloqueante, biblioteca
em modo usurio escalona outra thread em cooperao com
modo kernel

Thread 4

Thread 3

Thread 2

Thread 1

Thread 0

Cada camada implementa seu escalonamento de forma


independente, trocando informaes quando necessrio

Modo
usurio

Biblioteca

Kernel

Modo
kernel

6 Thread
Modelos de Programao
o Desenvolvimento de aplicaes multithread exige
sincronismo na comunicao e compartilhamento de recursos
entre as threads
Deve-se evitar problemas de inconsistncia e deadlocks

o Procedimento de depurao torna-se mais complicado


o Fator importante para desempenho do programa sua
poltica de criao e eliminao de threads, o que implicar no
nmero total de threads coexistindo
o Uma boa estratgia de modularizao do programa e
conseqente diviso em threads fundamental

6/4

Exerccios Threads
1) Como uma aplicao pode implementar concorrncia em um ambiente
monothread?
2) Quais os problemas de aplicaes concorrentes desenvolvidas em
ambientes monothread?
3) O que um ambiente multithread e quais as vantagens de sua utilizao?
4) Explique a diferena entre unidade de alocao de recursos e unidade de
escalonamento.
5) Quais as vantagens e desvantagens do compartilhamento do espao de
endereamento entre threads de um mesmo processo?
6) Qual a vantagem do scheduler activations comparado ao pacote hbrido?
7) D exemplos do uso de threads no desenvolvimento de aplicativos, como
editores de textos e planilhas eletrnicas.
8) Como o uso de threads pode melhorar o desempenho de aplicaes
paralelas em ambientes com mltiplos processadores?
9) Quais os benefcios do uso de threads em ambientes cliente-servidor?

7 Sincronizao e Comunicao entre Processos


Sincronizao e Comunicao
o Numa aplicao concorrente, natural que processos
precisem comunicar entre si

Implementao atravs de mecanismos como variveis


compartilhadas ou trocas de mensagens
Processos precisam ter sua execuo sincronizada
atravs de mecanismos do SO
o Exemplo com buffer de comunicao:
Processo s poder gravar os dados se buffer estiver
liberado
Processo s poder ler os dados quando estes
estiverem disponveis no buffer

7 Sincronizao e Comunicao entre Processos

Sincronizao e Comunicao

Sincronizao

gr

Processo
gravador

av
a
o

r
tu
i
le

dado
Buffer

Processo
leitor

7 Sincronizao e Comunicao entre Processos

Sincronizao e Comunicao
o Mecanismos de sincronizao:

Garantem a comunicao entre processos


concorrentes
Garantem o acesso a recursos
compartilhados
Garantem a integridade e a confiabilidade na
execuo de aplicaes concorrentes

7 Sincronizao e Comunicao entre Processos

Concorrncia em Programas
o Cada linguagem tem sua notao para especificar as
partes do programa que devem ser executadas
concorrentemente
Fork e Join (Conway, Dennis e Van Horn, 1963/66)
o Fork <X> dispara o processo X

o Join <X> interrompe execuo at que


processo X termine (sincroniza processos)
ParBegin/CoBegin e ParEnd/CoEnd (Dijkstra, 1965)
o Cada comando executado concorrentemente
com um processo para cada

7 Sincronizao e Comunicao entre Processos

Concorrncia em Programas
Processo
principal

PARBEGIN
Comando_1;
Comando_2;
.
.
Comando_n;
PAREND

Processo 1

Processo 2

Processo
principal

Processo n

7 Sincronizao e Comunicao entre Processos

Compartilhamento de Recursos
o Arquivos compartilhados
Ex: atualizaes em um mesmo saldo bancrio
Caso o processo no trave o arquivo com
saldo, poder haver inconsistncia
o Variveis compartilhadas
Um processo s poder operar com a varivel
aps processo anterior completar sua operao
Anlogo ao caso de arquivos compartilhados
o Estes problemas so chamados de race conditions

7 Sincronizao e Comunicao entre Processos

Compartilhamento de Recursos
PROGRAM Conta_Corrente;
.
.
READ (Arq_Contas, Reg_Cliente);

READLN (Valor_Dep_Ret);
Reg_Cliente.Saldo := Reg_Cliente.Saldo + Valor_Dep_Ret;
WRITE (Arq_Contas, Reg_Cliente);
.
.

END.

7 Sincronizao e Comunicao entre Processos

Excluso Mtua
o Soluo mais simples

o Impede que dois ou mais processos acessem


simultaneamente um mesmo recurso
Quando um processo estiver acessando o
recurso, demais processos que desejam
acess-los devem ficar em espera
Parte do cdigo que faz acesso ao recurso
denominada regio crtica
o Uma vez garantida a execuo mutuamente
exclusiva das regies crticas, resolve-se
problemas de compartilhamento

7 Sincronizao e Comunicao entre Processos

Excluso Mtua
o Mecanismos que implementam excluso mtua se
valem de protocolos de acesso regio crtica

Sempre que um processo desejar executar


instrues de uma regio crtica, ele dever
executar um protocolo de entrada nesta regio
Sempre que o processo desejar sair da regio
crtica, ele dever executar um protocolo de sada
desta regio
o Protocolo de entrada indica que h processo
executando instrues na regio crtica
o Protocolo de sada sinaliza a liberao da regio
crtica para outros processos

7 Sincronizao e Comunicao entre Processos

Excluso Mtua
o Duas situaes indesejadas devem ser evitadas:
Starvation ou espera indefinida
o Processo nunca consegue entrar na regio
crtica, ficando eternamente em espera
o Pode ocorrer devido a critrios do SO para
seleo do processo que vai entrar numa RC
que tenha sido liberada
Critrios baseados em prioridade ou em
aleatoriedade
Sistema FIFO, por exemplo, resolve o
problema

7 Sincronizao e Comunicao entre Processos

Excluso Mtua
o Outra situao indesejada que deve ser evitada:

Processo fora da RC impede que outros


processos entrem na RC
o Recurso est livre, mas alocado a um
determinado processo
o Reduz grau de compartilhamento
o Para implementar a excluso mtua, so usadas
solues de hardware e de software

7 Sincronizao e Comunicao entre Processos

Excluso Mtua
o Solues de hardware:
Desabilitar de interrupes
o Processo desabilita todas as interrupes
antes de entrar na RC, reabilitando-as aps
deix-la

o No h mudana de contexto enquanto na RC


o Soluo simples mas com limitaes:
Multiprogramao fica comprometida
Ineficiente com mltiplos processadores
Interessante para o kernel do SO

7 Sincronizao e Comunicao entre Processos

Excluso Mtua
o Solues de hardware:

Instruo Test-and-Set
o Instruo de mquina que permite ler
uma varivel, armazen-la em outra rea e
atribuir novo valor varivel
o Indivisvel, executada sem interrupo
o Garante que dois ou mais processos no
manipulem uma varivel compartilhada
simultaneamente
o Usa varivel lgica global chamada
Bloqueio

7 Sincronizao e Comunicao entre Processos

7 Sincronizao e Comunicao entre Processos

Excluso Mtua
o Solues de software:
Diversos algoritmos para implementar excluso
mtua atravs de software
Primeiras solues abrangiam apenas dois
processos e apresentavam problemas,
posteriormente sanados
o Algoritmo de Peterson, inicialmente aplicado
a dois processos, evoludo para N processos

Problema da soluo por software:


o Espera ocupada! (busy wait)
o Resolvido c/ Semforos e Monitores

7 Sincronizao e Comunicao entre Processos

Excluso Mtua
o Solues de software:

Primeiro algoritmo
o Usa varivel global para sincronizar
processos

o S funciona para dois processos


o Processos so sempre alternados

Um processo fica bloqueado se o outro


no entrar na RC
o Se um processo travar, o outro fica
bloqueado aguardando entrar na RC

7 Sincronizao e Comunicao entre Processos


Excluso Mtua
o Solues de software:
Segundo algoritmo
o Funciona somente com dois processos

o Usa varivel de condio para cada


processo, informando se processo est ou no
na RC
o Processos no necessitam ser alternados
o Se um processo travar antes de alterar
varivel, o outro fica bloqueado aguardando
entrar na RC
o No garante excluso mtua!

7 Sincronizao e Comunicao entre Processos

Excluso Mtua
o Solues de software:

Terceiro algoritmo
o Funciona somente com dois processos
o Atribuio da varivel de condio feita
antes do loop de teste
o Processos no necessitam ser alternados

o Se um processo travar antes de alterar


varivel, o outro fica bloqueado
o Garante excluso mtua, mas ambos
processos podem ficar bloqueados

7 Sincronizao e Comunicao entre Processos

Excluso Mtua
o Solues de software:
Quarto algoritmo
o Funciona somente com dois processos
o Como o terceiro, mas introduz tempo aleatrio
para setar vrivel de condio
o Processos no necessitam ser alternados
o Se um processo travar antes de alterar
varivel, o outro fica bloqueado
o Garante excluso mtua, mas ambos
processos podem ficar bloqueados durante
algum tempo

7 Sincronizao e Comunicao entre Processos

Excluso Mtua
o Solues de software:
Algoritmo de Peterson
o Soluo para problemas anteriores, foi
generalizado para N processos (Hofri, 1990)
o Alm das variveis de condio, usa varivel
Vez para resolver conflitos
Antes de acessar a RC, sinaliza este desejo
mas cede a vez para outro processo, depois
fica em loop aguardando sua vez
Para N processos, tambm h o algoritmo do
Padeiro (Lamport, 1974)

7 Sincronizao e Comunicao entre Processos

Sincronizao Condicional
o Situao onde o acesso RC exige sincronizao
vinculada a uma condio de acesso

Recurso disponvel se condio satisfeita,


processos bloqueados enquanto isso
Ex: comunicao via leitura/escrita em buffer

o Conhecido como problema produtor/consumidor ou


buffer limitado
o Mantm-se o problema da espera ocupada
o Obs: algoritmo apresentado no considera
necessidade de excluso mtua da varivel Cont

7 Sincronizao e Comunicao entre Processos

Semforos
o Proposto por Dijkstra em 1965
Mecanismo de sincronizao para implementar
excluso mtua e sincronizao condicional
Principal mecanismo usado em aplicaes
concorrentes

o Composto por uma varivel inteira no negativa


manipulada somente pelas instrues UP e DOWN
UP incrementa de 1, DOWN decrementa de 1
UP e DOWN so instrues indivisveis
o Executar DOWN num semforo com valor 0 coloca o
processo na fila de espera

7 Sincronizao e Comunicao entre Processos

Semforos
o Classificados como binrios ou contadores

Semforos binrios (MUTEX, de MUTual


EXclusion) s podem assumir 0 ou 1
Semforos contadores podem assumir
qualquer valor inteiro no negativo
o Excluso mtua implementada por um MUTEX
associado ao recurso compartilhado

Vantagem: ausncia de espera ocupada


DOWN e UP funcionam como protocolos de
entrada e sada na RC, respectivamente

MUTEX em 1 indica recurso disponvel

7 Sincronizao e Comunicao entre Processos

Utilizao do Semforo Binrio na Excluso


Mtua
Processo deseja entrar
na regio crtica

0)

DO
N
=
(S
0)

O
D

N
W

>
(S

UP (S) - processo sai


da regio crtica
Libera processo
da fila de espera
Processo acessa
a regio crtica

MUTEX iniciado com valor 1

Fila de espera
de processos

7 Sincronizao e Comunicao entre Processos

Semforos
o Sincronizao condicional para operao de E/S

Semforo iniciado com 0


Pedido de operao via DOWN
Completada a operao, rotina faz UP
o Para o problema produtor/consumidor
Usa 3 semforos:

o Um MUTEX, para fazer excluso mtua,


iniciado com 1
o Dois contadores, para sincronizao
condicional

7 Sincronizao e Comunicao entre Processos

Semforos
o Problema produtor/consumidor:
Mutex usado para a RC que permite gravao e
leitura (logo, mutuamente exclusivas)
Semforos contadores representam posies
livres (Vazio) para serem gravadas, e posies
ocupadas (Cheio) para serem lidas
o Vazio = 0, processo produtor em espera
o Cheio = 0, processo consumidor em espera
Vazio iniciado com tamanho do buffer
Cheio iniciado com 0

7 Sincronizao e Comunicao entre Processos

Semforos
o Semforos contadores so teis para
problemas de sincronizao condicional com
processos concorrentes disputando pool de
recursos
Semforo iniciado com nmero total de
recursos do pool
Processo que deseja alocar recurso faz
DOWN
Processo que libera recurso faz UP
Semforo em 0 indica que no h mais
recursos disponveis no pool e coloca
processos que fizeram DOWN em espera

7 Sincronizao e Comunicao entre Processos

Problema do Barbeiro
o Na barbearia h um barbeiro, uma cadeira de
barbeiro e 5 para espera
o Se um cliente chega e o barbeiro est
trabalhando, ele senta se houver cadeira vaga,
seno vai embora
o Se no h nenhum cliente para atender, barbeiro
senta na cadeira e dorme at novo cliente chegar

7 Sincronizao e Comunicao entre Processos

Problema dos Filsofos


o Exemplo clssico de sincronizao de
processos
o Tambm chamado de Dining Philosophers
Mesa com 5 pratos e 5 garfos

Filsofos podem sentar, comer e pensar


Quando filsofo para de pensar e deseja
comer, precisa usar dois garfos, direita e
esquerda
Se todos os filsofos estiverem segurando
um garfo cada, nenhum deles come
(Deadlock!)

7 Sincronizao e Comunicao entre Processos

Problema dos Filsofos


o Existem vrias solues, dentre elas:

Permitir que apenas 4 filsofos sentem


mesa simultaneamente
Permitir que um filsofo um garfo apenas
quando o outro estiver disponvel
Permitir que um filsofo mpar pegue
primeiro o seu garfo da esquerda e depois o
da direita, enquanto um filsofo par pegue
primeiro o garfo da direita e depois o da
esquerda

7 Sincronizao e Comunicao entre Processos

Monitores
o Mecanismos de sincronizao de alto nvel

o Formado por procedimentos e variveis


encapsuladas dentro de um mdulo
o Diferenas entre monitores e semforos:

Semforos so mecanismos no
estruturados implementados pelo
desenvolvedor
Monitores so mecanismos estruturados
implementados pelo compilador

7 Sincronizao e Comunicao entre Processos

Monitores
o Um monitor definido especificando-se um
nome, declarando-se variveis locais, um
conjunto de procedimentos e um cdigo de
inicializao
o Um processo que deseje acessar determinada
RC atravs de um monitor far chamada a um
dos procedimentos do monitor
Caso outro processo j esteja executando
qualquer um dos procedimentos, ele
aguarda sua vez na fila

7 Sincronizao e Comunicao entre Processos

Estrutura do Monitor
Declarao de
variveis globais
Procedimentos

Monitor

Proc. 1
Proc. 2

Fila de entrada
Proc. n
Inicializao
de variveis

7 Sincronizao e Comunicao entre Processos

Monitores
o O uso de monitores facilita o desenvolvimento de
aplicaes concorrentes

Excluso mtua implementada de forma


automtica
o Somente um processo pode estar
executando qualquer um dos procedimentos
do monitor
Variveis globais do monitor so visveis apenas
aos procedimentos de sua estrutura, inacessveis
externamente
Inicializao das variveis por cdigo no
monitor, apenas na ativao do programa principal

7 Sincronizao e Comunicao entre Processos

Excluso Mtua com Monitores


o Regies crticas definidas como
procedimentos no monitor, excluso mtua entre
eles por conta do compilador
o Comunicao com o monitor unicamente
atravs da chamada de seus procedimentos e
dos parmetros passados

7 Sincronizao e Comunicao entre Processos

Sincronizao Condicional com Monitores


o Se vale de variveis especiais de condio para
associar a execuo dos procedimentos do monitor

o Variveis de condio so manipuladas por


intermdio das funes WAIT e SIGNAL
Instruo WAIT faz com que o processo seja
colocado na respectiva fila de espera e aguarde
que a condio seja satisfeita
Processo sai da fila de espera quando outro
processo usar a instruo SIGNAL para sinalizar
que a condio de espera foi satisfeita
Se SIGNAL for executado e no houver processo
em wait, nada ocorrer

7 Sincronizao e Comunicao entre Processos

Estrutura do Monitor com Variveis de


Condio
Declaraode
variveisglobais
P
rocedimentos

CondioC1

Monitor

P
roc. 1
P
roc. 2

CondioC2

P
roc. n

CondioCn

Filadeentrada

Filasdeespera
Inicializao
devariveis

7 Sincronizao e Comunicao entre Processos

Transmisso de Mensagem

Processo
transmissor

Processo
receptor

Canal de comunicao

SEND

RECEIVE

7 Sincronizao e Comunicao entre Processos

Comunicao Direta e Indireta


Processo A

Processo B

Processo A

Processo B

Mailbox
ou Port

7 Sincronizao e Comunicao entre Processos

Troca de Mensagens
o Forma sncrona:

Processo transmissor fica esperando que o


processo receptor leia a mensagem
Processo receptor fica aguardando que
processo transmissor mande a mensagem
o Forma assncrona:
Processos no ficam bloqueados espera
de mensagem
o Uso de buffers

7 Sincronizao e Comunicao entre Processos

Deadlock
o Situao onde um processo aguarda
indefinidamente por um recurso que nunca estar
disponvel ou aguarda por um evento que nunca
ir ocorrer
o Pode ser representado por ciclos num diagrama
de grafo
Ns simbolizam processos e recursos
Aresta que sai do processo X e chega ao
recurso Y indica que X solicita Y
Aresta que sai do recurso Y e chega no
processo X indica que Y est alocado a X

7 Sincronizao e Comunicao entre Processos

Deadlock Espera Circular


Processo A
Processo A
solicita o
Recurso 2

Recurso 1
alocado ao
Processo A

Recurso 2

Recurso 1

Processo B

Recurso 2
alocado ao
Processo B

Processo B
solicita o
Recurso 1

7 Sincronizao e Comunicao entre Processos

Deadlock
o Condies simultneas para ocorrer deadlock:
Excluso mutua: Cada recurso s pode estar
alocado a um nico processo por vez
Espera por recurso: Um processo, apesar dos
recursos alocados, pode estar esperando por novo
recurso
No-preempo: recurso no liberado de um
processo devido solicitao do mesmo por outro
processo
Espera circular: processo pode ter que esperar
por um recurso alocado a outro processo e viceversa

7 Sincronizao e Comunicao entre Processos

Deadlock
o Preveno de deadlock:

Evitar que as condies para deadlock


ocorram simultaneamente
Evitar que pelo menos uma das condies
para deadlock ocorra
o Forar o processo a ter apenas um
recurso por vez (evita a espera circular)

o Permitir preempo
o Processos que possuem recurso no
podem solicitar outro recurso

o Compartilhamento de recursos (!)

7 Sincronizao e Comunicao entre Processos

Deadlock
o Deteco de deadlock:

Se d atravs da verificao de espera


circular
o Correo de deadlocks:

Eliminao de todos os processos envolvidos


no deadlock
Eliminao de apenas um dos processos
envolvidos no deadlock
Liberao de apenas alguns recursos
alocados aos processos em deadlock

Exerccios
1)

Defina o que uma aplicao concorrente e d um exemplo de sua utilizao.

2)

Considere uma aplicao que utilize uma matriz na memria principal para a
comunicao entre vrios processos concorrentes. Que tipo de problema pode
ocorrer quando dois ou mais processos acessam uma mesma posio da
matriz?

3)
4)

5)
6)

O que excluso mtua e como implementada?


Como seria possvel resolver os problemas decorrentes do compartilhamento
da matriz, apresentado anteriormente, utilizando o conceito de excluso
mtua?

O que starvation e como podemos solucionar esse problema?


Qual o problema com a soluo que desabilita as interrupes para
implementar a excluso mtua?

7)

O que espera ocupada e qual o seu problema?

8)

Explique o que sincronizao condicional e d um exemplo de sua utilizao.

9)

Explique o que so semforos e d dois exemplos de sua utilizao: um para a


soluo da excluso mtua e outro para a sincronizao condicional.

MACHADO, Francis Berenger e MAIA, Luiz Paulo. Arquitetura de Sistemas Operacionais,


4a. edio. Ed. LTC, 2013.

Anda mungkin juga menyukai