Sei sulla pagina 1di 27

Disciplina: Sistemas Operacionais - CAFW-UFSM Professor: Roberto Franciscatto

Introduo
Processo cooperativo aquele que

pode afetar outros processos em execuo no sistema

A primeira opo alcanada atravs do uso de processos ou threads O acesso concorrente a dados compartilhados pode resultar em incosistncia de dados

Ou ser por eles afetado


Processos cooperativos tanto

podem:

Compartilhar

diretamente um espao de endereamento lgico


como compartilhar

dados somente atravs de arquivos

Introduo
Sabendo-se destes problemas

existe um mtodo eficaz para manter a consistncia dos dados?


Quais so os mecanismos para

assegurar a execuo ordenada de processos cooperativos que compartilham um espao de endereamento lgico?

Relembrando processos cooperativos


A execuo concorrente de

processos cooperativos requer mecanimos que permitam aos processos

Para processos cooperativos usa-se o problema do

produtor-consumidor
Um processo produtor gera

comunicarem-se uns

com os outros e
sincronizarem suas

informao que consumida por um processo consumidor


Exemplo: um programa de

aes

impresso produz caracteres que so consumidos pelo driver da impressora

Relembrando processos cooperativos

Relembrando processos cooperativos


Em sntese os processos

cooperativos podem comunicar-se em um ambiente de memria compartilhada

O esquema exige que

estes processos compartilhem


Uma cadeia de buffers comum cdigo para implementao do buffer seja escrito pelo programador da aplicao

O SO pode fornecer meios para que os processos cooperativos se comuniquem uns com os outros por intermdio de uma facilidade de comunicao interprocessos IPC

Relembrando processos cooperativos


A IPC oferece um mecanismo que

permite aos processos

A IPC particularmente til em um ambiente distribuido


Onde os processos em

Se comunicarem e

sincronizarem suas aes sem compartilharem o mesmo espao de endereamento

comunicao podem residir em computadores diferentes conectados a uma rede

Problemas de Gesto de Recursos


INANIO (starvation):
Em consequncia da poltica de

escalonamento da CPU

um recurso passa

alternadamente de um processo P1 para outro processo P2, deixando um terceiro processo P3, bloqueado sem acesso ao recurso.

Problemas de Gesto de Recursos


BLOQUEIO MTUO (deadlock): Quando 2 processos se bloqueiam mutuamente. Exemplo: o processo P1 acede ao recurso R1, e o processo P2 acede ao recurso R2; a uma dada altura P1 necessita de R2 e P2 de R1. INCONSISTNCIA DE DADOS: Dois processos que tem acesso a uma mesma estrutura de dados no devem poder atualiz-la sem que haja algum processo de sincronizao. Exemplo: a interrupo de um processo durante a atualizao de uma estrutura de dados pode deix-la num estado de inconsistncia.

O por qu da Sincronizao
O acesso concorrente a dados

compartilhados pode criar uma situao de inconsistncia nestes dados.


Condio de corrida (race

A manuteno da consistncia de dados requer mecanismos que assegurem a execuo ordenada e correta dos processos cooperantes. Os processos tm, pois, de ser sincronizados para impedir qualquer condio de corrida.

condition):
Situao em que vrios

processos acessam e manipulam dados compartilhados de uma forma simultnea, deixando os dados em um estado de (possvel) inconsistncia.

Exemplo
Considere o cdigo seguinte:
P1 Produtor .. Execute a

instruo counter ++
P2 Consumidor - Execute a

instruo counter - O valor inicial de counter 5 Os dois processo executem

concorrentemente.
Qual o valor final ?

Inconsistncia da Atualizao de Dados


As seguintes instrues devem ser

executadas atomicamente: counter++; counter--;


Uma operao atmica instruo

A instruo counter++ pode ser implementada em linguagem assembly do seguinte modo: register1 = counter register1 = register1 + 1 counter = register1 A instruo counter-- pode ser implementada como: register2 = counter register2 = register2 1 counter = register2

executada na totalidade sem interrupo.

Inconsistncia da Atualizao de Dados


Se os dois processos tentam

atualizar a varivel concorrentemente, as suas instrues em linguagem assembly podem entrelaar-se.


Assuma que counter tem

inicialmente o valor 5.
Um possvel entrelaamento de

instrues dos dois processos :

producer: register1 = counter (register1 = 5) producer: register1 = register1 + 1 (register1 = 6) consumer: register2 = counter (register2 = 5) consumer: register2 = register2 1 (register2 = 4) producer: counter = register1 (counter = 6) consumer: counter = register2 (counter = 4)

O valor de count pode ser 4 ou 6, mas o valor correto devia ser 5.

Problemas clssicos de sincronizao


1 - Produtor-Consumidor (bounded-buffer)
O processo produtor produz itens e

2 - Readers/Writers Problem

Dados compartilhados entre

vrios processos.

os insere numa fila, outro processo, o consumidor, retire os itens da fila.


A fila uma estrutura de dados

Existem processos que

apenas lem os dados e outros que apenas escrevem modificando os dados. para que dados a serem lidos no estejam disponveis para serem alterados

manipulada e compartilhada pelos dois processos.

Sincronizao necessria

Problemas clssicos de sincronizao


3 Jantar dos Filsofos
Compartilha de um nmero finito

de recursos entre um nmero de processo maior do que o nmero de recursos


P4

P0 1

4 3 2

P3

P1 P2

Requisitos da manuteno da consistncia de dados compartilhados


No compartilhamento de dados

por vrios processos, cada processo tem um segmento de cdigo, chamado de SEO CRTICA, no qual os dados compartilhados so acessados.
Problema assegurar que,

enquanto um processo est a executar na seo crtica, nenhum outro processo permitido executar na sua seo crtica.

Requisitos da manuteno da consistncia de dados compartilhados


1. Excluso mtua. S um 3. Espera limitada. Um

processo de cada vez pode entrar e executar na seco crtica. 2. Progresso. Um processo a executar numa seco no-crtica no pode impedir outros processos de entrar na seco crtica.

processo que queira entrar numa seco crtica no deve ficar espera indefinidamente.
Neste ponto no podemos presumir nada sobre velocidade, prioridade ou nmero de processos

Solues para o problema de inconsistncia dos dados


A consistncia de dados

pode ser garantida atravs de vrios mecanismos de sincronizao:


Software:

Hardware:

Mecanismos disponibilizados pelo hardware Ex.: desabilitando interrupes

Mecanismos genricos de uma linguagem de programao Algoritmos de Dekker e Lamport

Recursos do SO

Semforos, troca de mensagens, etc.

Monitores

Soluo Alternncia Estrita


Processo 1 while vez == 2; <secao critica> vez = 2; <resto do algoritmo> Processo 2 while vez == 1; <secao critica> vez = 1; <resto do algoritmo> {testa acesso} {autoriza acesso ao outro processo}

{testa acesso} {autoriza acesso ao outro processo}

Soluo Alternncia Estrita


Anlise do algoritmo:

No garante a espera limitada.

Garante a excluso mtua, mas s aplicvel a 2 processos. No garante a progresso. Se um dos processos quiser entrar 2 vezes consecutivas na SC, no pode.

Se um processo falha o outro ficar permanentemente bloqueado (deadlock).

S h a garantia da alternncia dos processos na execuo da seco crtica.

S funciona se os dois processos forem absolutamente alternativos: 1 2 1 2...

Algoritmo de Decker 2 processos


Processo 1
P1QuerEntrar = true; while P2QuerEntrar do if vez == 2 then { P1QuerEntrar = false; while vez == 2 ; P1QuerEntrar = true; }; <executa seccao critica> vez = 2; P1QuerEntrar = false; <executa resto do algoritmo> {P1 est pronto a entrar na SC} {mas d a vez a P0, se ele precisar} {testa acesso}

{autoriza acesso ao outro processo}

Processo 2

P2QuerEntrar = true; while P1QuerEntrar do if vez == 1 then { P2QuerEntrar = false; while vez == 1 ; {testa acesso} P2QuerEntrar = true; }; <executa seccao critica> vez = 1; {autoriza acesso ao outro processo} P2QuerEntrar = false; <executa resto do algoritmo>

Anlise do algoritmo: Garante excluso mtua, mas obriga a que o nmero de processos seja 2. Garante a progresso. No obriga alternncia estrita.

Algoritmo de Lamport n processos


A cada processo atribuda Depois de atribuda a

uma senha de entrada na seo crtica.


Antes de acessar seo

senha, o processo efetua um ciclo para determinar se o seu nmero de ordem o menor de todos.
Quando o nmero de

crtica, o processo executa a funo max que lhe atribui uma senha superior a todas as outras.

ordem (senha) for inferior ao de todos os outros, o processo entra na seo crtica.

Algoritmo de Lamport n processos


var senha : array[0..N] of integer; escolha : array[0..N] of boolean; function compara(a, b:integer): boolean; begin if (senha[a]<senha[b]) or (senha[a]=senha[b] and a<b) then compara := true else compara := false; end; function max: integer; var maximo, i:integer; begin maximo := 0; for i:=1 to N do if senha[i]>maximo then maximo := senha[i]; max := maximo; end; procedure PROC(i:integer); var j:integer; begin while true do begin {atribuicao da senha} escolha[i]:=true; senha[i]:=max + 1; escolha[i]:=false; for j:=1 to N do {espera ate senha menor} begin while escolha[i] do; while (senha[j]<>0) and compara(j,i) do; end; <executa seccao critica> senha[i]:=0; <executa resto do algoritmo> end end;

Inibio de Interrupes
Permitir a um processo desligar

interrupes (Inibio de interrupes) antes de entrar em uma seo crtica e ligar as interrupes quando sair da seo crtica
Assim CPU no pode trocar processos Garante que um processo pode utilizar uma varivel compartilhada sem a interferncia de nenhum outro processo

Mas desligando interrupes vai dar muito trabalho Assim o computador no vai poder atender interrupes durante muito tempo. Pode ser que um processo mal escrito ou com erro implica que o computador nunca mais conseguir tratar de uma interrupo .. Crash Desvantagens e perigos so maiores que as vantagens

Semforos
Semforo: mecanismo de

sincronizao sem espera ativa.


Para evitar a espera ativa,

Um semforo consiste numa varivel e numa fila de espera associada a um recurso. Esta fila contm todos os descritores dos processos bloqueados no semforo

um processo que espera a liberao de um recurso deve ser bloqueado, devendo a razo que o levou a bloquear ficar memorizada.

Semforos
Bloquear um processo num

semforo significa retir-lo do estado de execuo (running state) e mov-lo para a fila de processos bloqueados (waiting state) do respectivo semforo.
Desbloquear um processo o

mesmo que retir-lo da fila de processos bloqueados (waiting state) e inseri-lo na fila de processos executveis (ready state).

Gesto da fila de processos bloqueados de um semforo: normalmente, FCFS ou prioridades.

Exerccios
Site da disciplina... Enviar por e-mail:
roberto.franciscatto@gmail.com

Potrebbero piacerti anche