Anda di halaman 1dari 26

UESB

Sistemas de Informao
Comunicao entre Processos

Prof. VANILDO MEIRA
Prof. Vanildo Meira
Threads Questes para Reviso





1. Diferencie Processo Foreground de Background.
2. Diferencie Processo CPU-Bound de I/O-Bound.
3. Fale resumidamente sobre o PCB (Process Control Block).
4. Diferencie Sinais e Interrupes.
5. O que contexto e quais so os contextos dos Processos?
6. Como definido o Contexto de Hardware?
7. O que vem a ser Contexto de Software?
8. O que significa espao de Endereamento?
9. Defina Thread? Diferencie de Processo.
10. De que formas podem ser implementadas os threads?
11. Explique porque vantagem um programa usar threads?
12. O que uma thread pop-up?
Prof. Vanildo Meira
Comunicao entre (ou inter) Processos
(IPC InterProcess Comunication)
Com o surgimento dos SO multiprogramveis,
tornou-se possvel estruturar aplicaes de
maneira que partes diferentes do cdigo do
programa pudessem ser executadas em paralelo.
Este tipo de aplicao foi denominada de
aplicao concorrente.
Em sistemas com um nico processador, na
prtica, os processos alternam sua execuo
segundo escalonamento estabelecido pelo SO e
mesmo assim aplicaes concorrentes obtm
melhoras em seu desempenho.
Prof. Vanildo Meira
Comunicao entre Processos
Em sistemas com mltiplos processadores, estas
vantagens estendem-se com a possibilidade do
paralelismo na execuo de instrues.
Os processos podem compartilhar arquivos,
registros, dispositivos E/S e reas de memria.
Contudo, este compartilhamento pode gerar
situaes indesejveis, capazes de comprometer
a execuo das aplicaes.
Para evitar este tipo de problema, os processos
devem ter suas aes sincronizadas, atravs de
mecanismos oferecidos pelo SO.
Prof. Vanildo Meira
Aplicaes Concorrentes
Processo
gravador
Processo
leitor
dado
Sincronizao
l
e
i
t
u
r
a
g
r
a
v
a

o
Buffer
Aqui, um processo s poder gravar dados no buffer se ele
estiver vazio, e o outro s poder ler um dado do buffer
caso haja um dado a ser lido.
Prof. Vanildo Meira
Tpicos em IPC
1. Como um processo passa informao para outro?
2. Como garantir que no haja conflito na execuo
das tarefas? Ex. - Sistema de Reserva Passagens:
terminais tentando conseguir a ltima vaga...
3. Dependncia entre processos. Um processo A, s
poder continuar aps a concluso do B.
* importante mencionar que os dois primeiros
tpicos de IPC so igualmente vlidos para
threads.
Prof. Vanildo Meira
Condies de Corrida (disputa)





Dois ou mais processos acessam um dado
compartilhado e o resultado final depende da
sequencia de acessos realizados.

Regies crticas
Parte do programa (cdigo) no qual h acesso
memria compartilhada.

Prof. Vanildo Meira
Condies de Corrida





Consideremos agora um exemplo bem simples:
dois processos (A e B) executam um comando
de atribuio. O processo A soma 1 varivel X
e o processo B subtrai 1 da mesma varivel.
Suponha que inicialmente a varivel X possua o
valor 2.

Processo A Processo B
X: = X + 1 ; X: = X 1;

Prof. Vanildo Meira
Condies de Corrida





Seria razovel pensar que no final das
operaes a varivel continuasse valendo 2,
porm nem sempre isso ser verdade.
Decompondo em operaes mais elementares,
usando uma linguagem de alto nvel, temos:

Processo A Processo B
Load x, Ra Load x, Rb
Add 1,Ra Sub 1,Rb
Store Ra,x Store Rb,x

Prof. Vanildo Meira
Condies de Corrida





Processo Comando X Ra Rb
A Load X,Ra 2 2 *
A Add 1,Ra 2 3 *
B Load X,Rb 2 * 2
B Sub 1,Rb 2 * 1
A Store Ra,X 3 3 *
B Store Rb,X 1 * 1
Conclui-se que quando dois ou mais processos
compartilham um mesmo recurso, alguns mecanismos
devem evitar que este tipo de problema ocorra
Prof. Vanildo Meira
Condies para Soluo





a) Nunca dois processos podem estar
simultaneamente em suas regies crticas
excluso mtua de regio crtica.
b) Nenhum processo executando fora de sua
regio crtica pode bloquear outros
processos.
c) Nenhum processo deve esperar eternamente
para entrar em sua regio crtica.
Prof. Vanildo Meira
1. Excluso Mtua





Ela dever agir apenas sobre processos que
esto concorrendo a um determinado recurso.
Quando um processo quiser entrar na sua
regio crtica, devera executar um protocolo.
Da mesma forma, ao sair da regio crtica
dever executar outro protocolo.
Os processos envolvidos devem fazer acesso
aos recursos de forma sincronizada.
Diversas solues foram criadas com este
propsito; porm, ainda existem duas situaes
que devem ser evitadas.

Prof. Vanildo Meira
A) Starvation (ou espera indefinida)





Quem determina a ordem de execuo dos
processos o SO. Neste caso, existem duas
formas para determinar de quem ser a vez:
Escolha aleatria (*existir a probabilidade
de um processo nunca ser escolhido).
Prioridades (*neste caso, um processo de
menor prioridade poder nunca entrar no
recurso, ou seja, nunca ser executado).
Uma soluo bem simples o esquema FIFO
(First In First Out). Quando o recurso liberado,
o sistema seleciona o primeiro processo da fila.
Prof. Vanildo Meira
B) Sincronizao condicional





uma situao onde o acesso a um recurso
compartilhado exige a sincronizao de
processos vinculada a uma condio de
acesso.
Um exemplo disto o caso do uso de
Buffers para leitura e gravao de dados
feita pelos processos.
Se acontecer uma falha na memria que
impea o acesso aos buffers, isto provocar
uma parada de todo o sistema.
Prof. Vanildo Meira
Desabilitando interrupes





Quando um processo entra na regio crtica ele
desabilita todas as interrupes externas e a
reabilite aps deixar a regio critica.
Como a mudana de contexto de processos s
pode ser realizada atravs de interrupes, o
processo que as desabilitou ter acesso
exclusivo garantido.
uma soluo simples e boa para pequenos
SO. Ela compromete a multiprogramao. Num
caso prolongado o funcionamento de todo
sistema.
Prof. Vanildo Meira
Desabilitao de interrupes
Prof. Vanildo Meira
Variveis tipo trava (lock) ou
Instruo test-and-set





Lock varivel binria, compartilhada,
utilizada para controlar o acesso regio
crtica.
Lock = 0 regio crtica disponvel;
Lock = 1 regio crtica bloqueada.

Obs.: No prove excluso mtua de regio
crtica.
Prof. Vanildo Meira
Alternncia Obrigatria (turn)





A varivel turn utilizada dentro de um lao de
controle para alternar os processos na regio
crtica. turn = 0 -> regio crtica liberada.
Enquanto est no lao turn = 1, quando sai,
muda para 0. e assim sucessivamente os
processos vo alternando a execuo das suas
regies crticas.
Outros processos ficam testando a varivel turn
at que esteja liberada => espera ociosa (busy
waiting).
Prof. Vanildo Meira

Soluo de Peterson





Combina alternncia (turn) com variveis de
impedimento (lock).
Apresentado por G. L. Peterson em 1981.
O acesso regio crtica controlado pela
execuo dos procedimento enter_region e
leave_region.
Prof. Vanildo Meira

Outras solues





TSL (test and set lock) altera registrador RX;
Dormir e acordar. Sleep chamada ao sistema
processo que executou sleep bloqueado.
wakeup chamada ao sistema indica por
parmetro um processo a ser desbloqueado.
Problema sinal acordar perdido se o
processo no estiver bloqueado!



Prof. Vanildo Meira
Semforos





Soluo do problema do produtor-consumidor
utilizando semforos:
Semforo mutex utilizado para prover
excluso mtua de regio crtica.
Semforos empty e full utilizados para
sincronizar os processos Produtor s insere
itens se existe espao no buffer;
Consumidor s retira itens do buffer se existe
algum item.
Prof. Vanildo Meira
Monitores





Proposto por Hoare (1974) e B. Hansen (1975).
Unidade de sincronizao de alto nvel coleo
de procedimentos, variveis e estruturas de
dados agrupados em um mdulo.
Apenas os procedimentos do monitor acessam
as variveis e estruturas do monitor.
Apenas um processo pode estar ativo em um
monitor a cada momento.
Construo da linguagem de programao.
Compilador implementa a excluso mtua do
monitor utilizando semforos.
Prof. Vanildo Meira
Discusso: Jantar dos filsofos





Prof. Vanildo Meira
Primeira soluo





Prof. Vanildo Meira
Uma soluo





Prof. Vanildo Meira
Uma soluo

Anda mungkin juga menyukai