Vous êtes sur la page 1sur 10

Sincronizao e Comunicao entre Processos

Comunicao entre Processos


Processos Independentes.
No afetam nem so afetados por outros processos.

Processos Cooperados.
Compartilham:
Memria; Arquivos; Dispositivos de E/S; Etc.

Sistemas Operacionais Abertos

Mltiplos Processos
A filosofia atual dos SOs est focada na gerncia de mltiplos processos:
Multiprogramao; Multiprocessamento; Processamento Distribudo.

Processos Cooperados
Compartilhamento de dados.
Processo produtor de dados. Processo consumidor de dados,

Buffer:
Limitado: Produtor e Consumidor. Ilimitado: Somente Consumidor.

A questo : como controlar a Concorrncia?


Gerenciando a interao de todos os processos

Implementao.
Via memria compartilhada; Via IPC (Interprocess Comunication - SO)

Buffer Circular
Implementao como um buffer circular.

Condies de Corrida
Mecanismo de Sincronizao.
prxima sada

Garante o compartilhamento de recursos e a comunicao entre os processos; Garante a integridade e a confiabilidade dos dados compartilhados.

prxima entrada

4 8 7 6 5
Contador 5

Condies de Corrida (ou race conditions):


Situaes onde dois ou mais processos esto acessando dados compartilhados; O resultado final pode variar de acordo com a ordem de execuo.

Introduo de um contador de quantidade. Produtor e Consumidor manipulam o contador.

Race Conditions
Condies de Corrida (ou race conditions) ocorrem quando:
Diversos processos ou threads esto efetuando a leitura e/ou a escrita de dados; Esse I/O ocorre de forma que o resultado final depende da ordem de execuo dos processos.

Condies de Corrida
Exemplo 1:
1 2

Processo A 3 7+1

Processo B 4 7-1

A sada ir depender de quem terminar a corrida em ltimo.

Resultado Final: Contador = 6 (ERRO!)

Condies de Corrida
Exemplo 2:
10

Condies de Corrida
2 8

Processo A

suspenso recebe CPU

Regio Crtica: Parte do cdigo fonte onde feito acesso a recursos compartilhados, e que podem levar a condies de corrida. Ex: Processo A. Cdigo normal Incio da Seo Crtica (Protocolo de Entrada) Seo Crtica Trmino da Seo Crtica (Protocolo de Sada) Cdigo normal

Y 5 4 3
6

7
prxima entrada 7

X Valor armazenado pelo processo B perdido.

7
Processo B

8
3 7

recebe CPU suspenso

Seo Crtica
Num programa multithreaded, algumas regies que acessam recursos compartilhados no podem ser executadas ao mesmo tempo; Por exemplo, se a thread A estiver executando a1, o SO no poder iniciar a execuo de b1,b2 at que a1,a2 sejam completados; Denomina-se tal regio de seo critica.

Concorrncia em programas
Enquanto um processo estiver usando um recurso, os outros devem aguardar at que o recurso esteja liberado. Excluso Mtua.

top 3 buffer a b
Thread A

Exclusividade no acesso a um determinado recurso.


c ? ?
Thread B

a1 buffer[top]=x; a2 top++; ...

b1 buffer[top]=y; b2 top++;

Seo Critica: a1-a2 e b1-b2

A excluso mtua deve afetar os processos concorrentes, quando um deles estiver em uma regio crtica.

Excluso Mutua
Os cdigo sendo executados nas sees criticas devem manter a excluso mtua Somente uma thread/processo pode estar na seo critica. Ou seja, se uma thread estiver dentro de sua seo crtica, ento as demais threads no devem entrar nas suas respectivas sees crticas.

Delimitando uma Seo Critica


O programador delimita as sees crticas do programa por meio de algumas instrues inseridas estrategicamente no cdigo fonte; Denominaremos este cdigo genericamente como EntraSC() e AbandonaSC(). Este cdigo deve assegurar que no mximo um processo/thread pode estar rodando dentro da sua seo crtica. top 3 buffer a b

top

3 b c ? ?
Thread B

?
Thread B

buffer a
Thread A

Thread A

a1 buffer[top]=x; a2 top++; ...

b1 buffer[top]=y; b2 top++;

A Thread B no pode entrar na sua seo crtica, enquanto que a thread A estiver dentro da sua seo crtica.

... EntraSC(); buffer[top]=x; top++; AbandonaSC();

... EntraSC(); buffer[top]=y; top++; AbandonaSC();

Sero vistas diferentes formas de se implementar EntraSC e AbandonaSC.

Aguardando a Seo Critica


O que a thread 2 pode fazer se ela precisar entrar na seo crtica enquanto a thread 1 estiver na sua seo crtica? Busy waiting ou espera ativa; Bloquear
top 3 buffer a b
Thread A

Zonas Crticas
N processos competem para acessar variveis compartilhadas; cada processo tem uma parte do cdigo, zona crtica, na qual acessa a memria compartilhada; Problema: assegurar que quando um processo est executando a sua zona crtica, nenhum outro processo pode executar esta mesma zona crtica; Se permitirmos apenas um processo de cada vez na zona crtica, evita-se competio entre processos.

?
Thread B

... EntraSC(); buffer[top]=x; top++; AbandonaSC();

... EntraSC(); buffer[top]=y; top++; AbandonaSC();

Este similar aos diferentes mtodos de I/O. O SO pode utilizar busy waiting para aguardar a finalizao do I/O, ou pode bloquear o processo/thread at que o I/O seja finalizado.

Regio Crtica

Como evitar competio entre processos em zonas crticas?


1. Excluso Mtua: nas zonas crticas no podero estar nunca 2 processos em simultneo (atomicidade). 2. Nenhum processo dever ter de esperar eternamente para entrar na sua zona crtica (devemos evitar starvation). 3. Nenhum processo que esteja fora da sua zona crtica, poder bloquear outros processos (devemos evitar deadlocks). 4. No se pode presumir nada sobre a velocidade ou nmero de CPUs.

Deadlock
Situao onde nenhum dos processos pode prosseguir, pois est aguardando alguma condio que somente pode ser atingida pela execuo do outro.

Deadlock

Problemas de Sincronizao
Velocidades muito diferentes dos processos:
Podem causar problema de soluo de sincronizao entre processos. Ex: Problema produtor / consumidor.

Solues por Hardware


Desabilitar as interrupes:
desligar_interrupes zona crtica ligar_interrupes Soluo mais simples para a excluso mtua; Falha de Proteo:
O processo precisa voltar a habilitar as interrupes

Starvation ou inanio:
Um processo nunca consegue executar sua regio crtica, e acessar o recurso compartilhado.
Outros processos so sempre prioritrios.

com as interrupes desligadas, a CPU no poder ser comutada para outro processo. mtodo til a nvel do kernel, o scheduler o utiliza, mas no apropriado como mecanismo geral para garantir excluso mtua entre processos. se um processo pudesse desligar interrupes, poderia acontecer o travamento do SO. Por que?

Solues por Hardware


Instruo Test-and-Set. Utilizao de uma varivel para testar a possibilidade de executar a regio crtica. O processo impedido de executar sua regio crtica executa um loop de espera.
Gasto de CPU.

Variveis de Comporta ou Travamento


Utiliza uma varivel auxiliar, denominada varivel de comporta (lock variable), que:
Quando =0 indica que a regio crtica est livre, Quando =1 indica que a mesma est ocupada.

Cada processo, antes de entrar, teste o valor da comporta: se for 0 (aberta), coloca em 1 e prossegue o processamento, colocando em 0 quando terminar, e se for 1 (fechada) aguarda at se tornar 0. Problema a disputa apenas se transferiu da regio crtica para a varivel de comporta.

Alternncia Estrita
Esta uma soluo a qual obriga que a regio crtica seja dada a um dos processos por vez, em uma estrita alternncia; Para isso usa uma varivel, que indica de qual processo a vez de entrar na regio crtica; O teste contnuo desta varivel na espera de um certo valor chamado de espera ocupada desperdcio de CPU; Problema: requer que os dois processos se alternem precisamente, o que significa que o nmero de acessos de cada processo deve ser exatamente igual ao do outro.

Solues por Software


Estrita Alternncia.
Pode levar condio de Starvation ou inanio!

Em geral, as solues por software resolvem a excluso mtua, mas geram a espera ocupada (ou Busy Wait):
Teste contnuo de uma varivel at que ocorra uma mudana no seu valor; O processo impedido de executar sua regio crtica executa um loop de espera.
Gasto de CPU.

Solues por Software


Implementaes de uso das regies crticas sem a espera ocupada:
Semforos Contadores (Counting Semaphores); Semforos Binrios (Mutual Exclusion Semaphores); Mutex; Monitores.

Semforos
Ferramenta de sincronizao criada por Dijkstra (1965); Caractersticas:
Varivel inteira; No negativa.

Manipulados por duas operaes atmicas:


DOWN ou Wait (P - Proberen - Testar) UP ou Signal (V - Verhogen - Incrementar)

Implementados como funes proporcionadas pelo SO.

Semforos
Semforos (Counting Semaphores); Sincronizao entre processos. Full / Empty.

Semforos
Um semforo fica associado a um recurso compartilhado, indicando se ele est sendo usado; Se o valor do semforo maior do que zero, ento existe recurso compartilhado disponvel; Se o valor do semforo zero, ento o recurso est sendo usado.
Down(S) if (S == 0) bloqueia processo else S = S - 1; Up(S) if (tem processo na fila) libera processo else S = S + 1;

Associado a um recurso compartilhado.


Indica quando o recurso j est alocado a algum processo.

Semforos
Semforos Binrios (Mutual Exclusion Semaphores); Controle da excluso mtua.
Down / Wait: Antes da regio crtica. Up / Signal : Aps a regio crtica.

Mutex
Estrutura de sincronizao bastante simples que pode estar em dois estados:
Locked ou bloqueado; Unlocked ou desbloqueado.

Duas operaes so definidas sobre um mutex:


Lock; Unlock.

Processo 1 lock unlock lock unlock

Chamados MUTEX ou BINRIOS, por s assumirem valores 0 e 1.

Mutex

Processo 2

Um Alocador de Recursos
Semforos contadores (S > 1) podem ser usados para implementar um controlador para um recurso formado por N unidades; O controlador formado por dois procedimentos, request e release. Para request, o argumento U de sada e para release o argumento U de entrada; A varivel T o contador de unidades disponveis e indica a posio do array R que contm a prxima unidade a ser alocada; O semforo counter tranca as requisies quando T=0. Mutex garante acesso exclusivo T e R.

R: array[5] of integer; /* Supe-se R iniciado com [5,4,3,2,1] */ T: integer initial 5; /* Sintaxe: linguagem V4 */ counter: semaphore initial 5; mutex: semaphore initial 1;

procedure request(U:integer) { P(counter) P(mutex) U := R[T]; T := T - 1; V(mutex) };

P(S): SE S > 0 ENTO S := S 1 SENO bloqueia processo

procedure release(U:integer) { P(mutex) T := T + 1; R[T] := U; V(mutex); V(counter) };

V(S): SE algum processo dorme na fila de S ENTO acorda processo SENO S := S + 1

Deficincia dos Semforos (1)


Exemplo: suponha que os dois down do cdigo do produtor estivessem invertidos. Neste caso, mutex seria diminudo antes de empty. Se o buffer estivesse completamente cheio, o produtor bloquearia com mutex = 0. Portanto, da prxima vez que o consumidor tentasse acessar o buffer ele faria um down em mutex, agora zero, e tambm bloquearia. Os dois processos ficariam bloqueados eternamente. Concluso: erros de programao com semforos podem levar a resultados imprevisveis.

Deficincia dos Semforos (2)


Embora semforos forneam uma abstrao flexvel o bastante para tratar diferentes tipos de problemas de sincronizao, ele inadequado em algumas situaes; Semforos so uma abstrao de alto nvel baseada em primitivas de baixo nvel, que proveem atomicidade e mecanismo de bloqueio, com manipulao de filas de espera e de escalonamento; Tudo isso contribui para que a operao seja lenta. Para alguns recursos, isso pode ser tolerado; para outros esse tempo mais longo inaceitvel.
Ex: (Unix) Se o bloco desejado achado no buffer cache, getblk() tenta reserv-lo com P(). Se o buffer j estiver reservado, no h nenhuma garantia que ele conter o mesmo bloco que ele tinha originalmente.

Excluso mtua - resumo


Utiliza-se um mutex: semforo binrio (0 ou 1). O travamento usando o mutex deve ser feito antes do uso o recurso; Destravamento realizado aps esse uso; Enquanto o recurso estiver em uso, qualquer outro processo que o utilize deve esperar a sua liberao. Pode causar a espera infinita por recursos, isto , deadlock.

Monitores
Mecanismo de sincronizao de alto nvel proposto por Hoare (1974) e Brinch Hansen (1975); Conjunto de procedimentos, variveis e estruturas de dados agrupados em um mdulo especial; Caracterstica mais importante a implementao automtica da excluso mtua:
Somente um processo pode estar ativo em um monitor em um determinado instante de tempo.

Monitores
A implementao da excluso mltipla passa a ser de responsabilidade do compilador; Utilizao de variveis de condio associadas a uma fila de processos; Um processo em uma fila (bloqueado) s poder prosseguir quando outro processo executar um SIGNAL sobre a respectiva varivel de condio.

Monitores
A comunicao do processo com o monitor feita unicamente atravs de chamadas a seus procedimentos e dos parmetros passados para eles; Podem ser chamadas duas operaes:
Wait (varivel) Signal (varivel)

Monitores
Exemplo de implementao de um Monitor:
Inicializao Procedimento A
Teste de Unicidade Corpo do procedimento Signal (A)

Troca de Mensagens
Mecanismo de comunicao e sincronizao entre processos. implementada pelo Sistema Operacional atravs das rotinas SEND e RECEIVE. SEND responsvel pelo envio de mensagem para o processo receptor:
SEND (Receptor, Mensagem).

Procedimento B
Teste de unicidade Corpo do procedimento Signal (B)

RECEIVE responsvel pelo recebimento da mensagem de um processo transmissor:


RECEIVE (Transmissor, Mensagem).

Etc... FIM

Troca de Mensagens
Para garantir que uma mensagem no se perca, o receptor deve enviar uma mensagem de recebimento. Duas formas de endereamento:
Direto
Apenas dois processos trocam mensagens.

Endereamento Indireto
Duas formas de comunicao entre os processos:
Comunicao Sncrona.
Comunicao 1 a 1 (limitada ao tempo de processamento da mensagem).

Comunicao Assncrona.
Necessidade de buffer para as mensagens. Necessidade de mecanismos de sincronizao. Maior paralelismo na execuo dos processos.

Indireto
Mailbox.

Responda: Verdadeiro ou Falso: Um sistema operacional pode prover mecanismos para comunicaes entre

Exerccios de fixao

processos por trocas de mensagens ou por memrias compartilhadas. Ambos exigem que as aplicaes se sincronizem via semforos.

O algoritmo de controle de concorrncia mais comum em SO conhecido por: a) time stamps; b) deadlock; c) Escalonamento round-robin; d) semforos; e) starvation.

Em sistemas operacionais, um processo pode conter um conjunto de linhas de execuo, que compartilham o seu espao de execuo. Dentre as alternativas abaixo, assinale aquela que identifica o mecanismo usado pelo sistema operacional para impedir a interferncia entre as linhas de execuo sobre os dados que elas compartilham.
A) Execuo multi-linha. B) Despachante. C) Semforo. D) Tabela de processo. E) Linha em nvel de usurio.

Um processo pode ser definido como: a) a memria disponvel para execuo de um programa. b) a memria utilizada durante a execuo de um programa. c) a memria compartilhada entre dois ou mais programas. d) um programa em execuo. e) as chamadas ao sistema.

Starvation ocorre quando: a) Pelo menos um processo continuamente postergado e no executa. b) A prioridade de um processo ajustada de acordo com o tempo total de execuo do mesmo. c) Pelo menos um evento espera por um evento que no vai ocorrer. d) Dois ou mais processos so forados a acessar dados crticos alternando estritamente entre eles. e) O processo tenta, mas no consegue acessar uma varivel compartilhada, pois est bloqueado.

O que caracteriza os algoritmos de escalonamento de processos chamados de preemptivos : a) permitir que cada processo execute at o final; b) suspender temporariamente processos em execuo para que outros possam ser executados; c) suspender definitivamente o sistema operacional para que os processos usurios possam ser executados at o final. d) suspender temporariamente as operaes de entrada de sada, para que as operaes de clculo sejam executadas: e) suspender temporariamente as rotinas de calculo para que as operaes de entrada e sada possam ser executadas.

Assinale a opo correta com relao aos mecanismos e s tcnicas de sincronizao de processos e suas implementaes.
A) Condies de corrida normalmente ocorrem apenas em sistemas com kernel no preemptivos. B) O kernel do Linux 2.6 no preemptivo. C) Um semforo implementado com varivel inteira normalmente denominado mutex. D) Semforos so vistos como uma evoluo dos monitores, uma vez que minimizam vrios problemas encontrados na implementao dos monitores. E) As solues para resolver o problema de seo crtica devem satisfazer, entre outros, os requisitos de excluso mtua.

Quando dois processos A e B no concluem as suas execues porque o processo A depende do trmino do processo B que, por sua vez, depende da concluso do processo A, tem-se uma situao denominada: a) deadlock. b) compartilhamento de recursos. c) pipeline. d) starvation e) interrupo de CPU.

Considere um gerenciador de bancos de dados sendo executado num ambiente operacional Unix. Durante a execuo desse ambiente Unix, em parte do tempo um processo est ocupado, realizando um processamento que no resultar em condio de corrida, por no estar manipulando dados ou arquivos compartilhados. No entanto, em outros momentos, o processo pode estar acessando uma parte da memria ou arquivo compartilhado com outros processos. Essa parte do programa, cujo processamento pode levar ocorrncia de condies de corrida, denominada:
A) regio crtica. B) trashing. C) threshold. D) wakeup.

Analise as seguintes afirmaes, levando em conta as chamadas de sistemas usadas com semforos, e assinale a opo verdadeira.
I. A chamada de sistema UP adiciona uma unidade ao valor corrente de um semforo. II. Se o valor do semforo zero, uma chamada de sistema DOWN no ser completada e o processo ser suspenso. III. Quando um processo inicia a execuo de uma chamada de sistema UP ou DOWN, nenhum outro processo ter acesso ao semforo at que o processo complete a execuo ou seja suspenso. a) Apenas I e II so verdadeiras. b) Apenas I e III so verdadeiras. c) Apenas II e III so verdadeiras. d) I, II e III so verdadeiras. e) I, II e III so falsas.

Em um sistema operacional sendo executado em um determinado computador, o processo A obteve acesso exclusivo ao recurso X e o processo B obteve acesso exclusivo ao recurso Y. Momentos depois, A, est aguardando a liberao de Y antes de ele prprio liberar X, enquanto B est aguardando a liberao de X antes de ele prprio liberar Y. Esta situao recebe o nome de: (a) mutex. (C) multi-thread. (E) inanio ou starvation. (B) deadend. (D) deadlock

10

Vous aimerez peut-être aussi