Вы находитесь на странице: 1из 26

Excluso Mtua

UFRPE

a u t M o s u l c x E a r a p Solues

DEINFO/Licenciatura em Computao - Prof. Robson Fidalgo

Solues para Excluso Mtua


UFRPE

A excluso mtua pode ser implementada atravs de mecanismos de HW e SW


Solues de HW
Desabilitao de interrupes Instrues test-and-set (TAS)

Solues de SW
Diversos algoritmos foram propostos Dois dos principais algoritmos sero discutidos

DEINFO/Licenciatura em Computao - Prof. Robson Fidalgo

Solues para Excluso Mtua


UFRPE

Solues de HW

DEINFO/Licenciatura em Computao - Prof. Robson Fidalgo

Solues para Excluso Mtua


UFRPE

Solues de HW (Desabilitao de interrupes)


Faz com que o processo desabilite todas as interrupes antes de entrar em sua regio crtica, reabilitando-as aps deixar a regio crtica.

BEGIN . Desabilita_Interrupcoes; Regiao_Critica; Habilita_Interrupcoes; . END.


DEINFO/Licenciatura em Computao - Prof. Robson Fidalgo 4

Solues para Excluso Mtua


UFRPE

Solues de HW (Desabilitao de interrupes)


Vantagem
Soluo mais simples til para executar (sem interrupes) chamadas do kernel do SO

Desvantagem
A multiprogramao pode ficar seriamente comprometida, j que a concorrncia entre processos tem como base o uso de interrupes Ineficiente para sistemas multiprocessados. Pois um processador ir perder tempo sinalizando des/abilitao para os demais O clock do computador usa interrupes, devendo esta soluo ser usada com muito cuidado
DEINFO/Licenciatura em Computao - Prof. Robson Fidalgo 5

Solues para Excluso Mtua


UFRPE

Solues de HW (Instrues test-and-set - TAS)


Instruo de mquina que permite testar e modificar o contedo de uma varivel de forma atmica (sem interrupo) A atomicidade da transao garante que dois processos no iro manipular um recurso compartilhado ao mesmo tempo A instruo TAS possui o seguinte formato

Test-and-Set (X,Y);
Ao executar TAS o valor lgico de Y copiado para X, sendo atribudo a Y o valor verdadeiro
DEINFO/Licenciatura em Computao - Prof. Robson Fidalgo 6

Solues para Excluso Mtua


UFRPE

Solues de HW (Instrues test-and-set - TAS)


Para coordenar o acesso concorrente a um recurso, a instruo TAS utiliza uma varivel global (ex: bloqueio) inicializada com o valor falso Quando bloqueio = falso, qualquer processo pode usar TAS para fazer bloqueio = verdadeiro e acessar o recurso exclusivamente Ao terminar o acesso, o processo deve fazer bloqueio = falso, liberando o acesso ao recurso

DEINFO/Licenciatura em Computao - Prof. Robson Fidalgo

Solues para Excluso Mtua


UFRPE PROGRAM Exemplo_Test_and_set; VAR Bloqueio:BOOLEAN; PROCEDURE Processo_A; VAR Pode_A:BOOLEAN; BEGIN REPEAT Pode_A:=True; WHILE (Pode_A) DO Test_and_set(Pode_A, Bloqueio); Regiao_Critica_A; Bloqueio:=False; UNTIL False; END; PROCEDURE Processo_B; VAR Pode_B:BOOLEAN; BEGIN REPEAT Pode_B:=True; WHILE (Pode_B) DO Test_and_set(Pode_B, Bloqueio); Regiao_Critica_B; Bloqueio:=False; UNTIL False; END;
DEINFO/Licenciatura em Computao - Prof. Robson Fidalgo

{PROGRAMA PRINCIPAL} BEGIN Bloqueio:=False; PARBEGIN Processo_A; Processo_B; PAREND; END.

Solues para Excluso Mtua


UFRPE

Solues de HW (Instrues test-and-set - TAS)


Vantagem
Simplicidade de implementao em mltiplas regies crticas Pode ser aplicada em sistemas multiprocessados

Desvantagem
Possibilidade de starvation (espera indefinida), pois a seleo do processo para o acesso ao recurso arbitrria

DEINFO/Licenciatura em Computao - Prof. Robson Fidalgo

Solues para Excluso Mtua


UFRPE

Solues de SW

DEINFO/Licenciatura em Computao - Prof. Robson Fidalgo

10

Solues para Excluso Mtua


UFRPE

Diversos algoritmos foram proposto para implementar a excluso mtua


1as. solues tratavam a excluso mtua de dois processos As solues atuais tratam a excluso mtua de N processos

Principais Algoritmos:
1o. Algoritmo para excluso mtua (contextualizar) Algoritmo de Peterson

DEINFO/Licenciatura em Computao - Prof. Robson Fidalgo

11

Solues para Excluso Mtua


UFRPE

Primeiro Algoritmo
Soluciona a excluso mtua entre 2 processos Usa uma varivel de bloqueio (ex: Vez) para alternar a excluso mtua das regies crticas
PROGRAM Algoritmo1; VAR Vez:CHAR; PROCEDURE Processo_A; BEGIN REPEAT WHILE (Vez=B) DO (*nada*) Regiao_Critica_A; Vez := B; Processamento_A; UNITL False; END; PROCEDURE Processo_B; BEGIN REPEAT WHILE (Vez=A) DO (*nada*) Regiao_Critica_B; Vez := A; Processamento_B; UNITL False; END; BEGIN Vez:= A; PARBEGIN Processo_A; Processo_B; PAREND; END.
12

DEINFO/Licenciatura em Computao - Prof. Robson Fidalgo

Solues para Excluso Mtua


UFRPE

Primeiro Algoritmo - Comentrio


Implementa a excluso mtua, porm tem 2 limitaes:
1) O acesso ao recurso compartilhado s pode ser feito por dois processos e sempre de maneira alternada
Se um processo precisa usar mais vezes o recurso, este ficar grande parte do seu tempo bloqueado

2) Caso ocorra algum problema com a varivel de bloqueio de um dos processos, o outro processo permanecer indefinidamente bloqueado, aguardando o recurso

DEINFO/Licenciatura em Computao - Prof. Robson Fidalgo

13

Solues para Excluso Mtua


UFRPE

Algoritmo de Peterson
Apresenta uma soluo para a excluso mtua entre dois processos que pode ser generalizada para N-processos Alm de uma varivel de bloqueio (ex: Vez), usa variveis de condio (ex: CA e CB) que indicam o desejo de cada processo entrar na sua Regio Crtica

DEINFO/Licenciatura em Computao - Prof. Robson Fidalgo

14

Solues para Excluso Mtua


UFRPE

Algoritmo de Peterson
PROGRAM Peterson; PROCEDURE Processo_B; VAR Vez:CHAR; BEGIN CA,CB:BOOLEAN; REPEAT PROCEDURE Processo_A; CB:=true; BEGIN vez:=A REPEAT WHILE (CA and Vez=A) DO (*nada*) CA:=true; Regiao_Critica_B; Vez:=B; CB:=false; WHILE (CB and Vez=B) DO (*nada*) Processamento_B; Regiao_Critica_A; UNITL False; CA := false; END; Processamento_A; UNITL False; BEGIN CA:=false; END; CB:=false; PARBEGIN Processo_A; Processo_B; PAREND; END.
DEINFO/Licenciatura em Computao - Prof. Robson Fidalgo 15

Solues para Excluso Mtua


UFRPE

Algoritmo de Peterson Comentrio


Antes de acessar a Regio Crtica, o processo sinaliza sua varivel de condio (CA/CB) para True, porm cede o uso do recurso ao outro processo (Vez) Isto, alm de garantir a excluso mtua (CA/CB), impede o bloqueio indefinido de um dos processos (Vez)

DEINFO/Licenciatura em Computao - Prof. Robson Fidalgo

16

Solues para Excluso Mtua


UFRPE

As solues propostas apresentam o problema da espera ocupada. Ou seja, o processo fica em looping at que este acesse sua Regio crtica.
DEINFO/Licenciatura em Computao - Prof. Robson Fidalgo 17

Espera ocupada (busy wating)


UFRPE

A soluo do problema de espera ocupada usa mecanismos de sincronizao para permitir que um processo, quando no puder entrar na sua RG, seja colocado no estado de espera
DEINFO/Licenciatura em Computao - Prof. Robson Fidalgo 18

Espera ocupada (busy wating)


UFRPE

semrofos e monitores
e sero discutidos logo mais

Esses mecanismos so conhecidos como

DEINFO/Licenciatura em Computao - Prof. Robson Fidalgo

19

Solues para Excluso Mtua


UFRPE

Sincronizao Condicional
DEINFO/Licenciatura em Computao - Prof. Robson Fidalgo 20

Sincronizao Condicional
UFRPE

uma situao onde o acesso ao RC exige que a sincronizao de processos seja vinculada a uma condio de acesso
A disponibilidade do RC depende de uma condio

O processo que deseja acessar o RC dever ficar bloqueado at que o RC esteja disponvel

DEINFO/Licenciatura em Computao - Prof. Robson Fidalgo

21

Sincronizao Condicional
UFRPE

Exemplo clssico:
Dois processo preciso ler/gravar em um buffer, onde processos geram informaes (produtores) utilizadas por outros processos (consumidores) Nessa comunicao, enquanto um processo grava dados em um buffer, o outro l os dados concorrentemente
Os processos envolvidos devem estar sincronizados a uma varivel de condio, onde um processo no pode gravar em um buffer cheio e nem ler um buffer vazio
22

DEINFO/Licenciatura em Computao - Prof. Robson Fidalgo

Sincronizao Condicional
UFRPE

Exemplo clssico: PROGRAM Produtor_Consumidor


No pseudo-cdigo a seguir, o recurso compartilhado um buffer com tamanho (TamBuf) sendo controlado pela varivel Cont
Sempre que Cont = 0 buffer vazio! O processo Consumidor deve

esperar at que se grave um dado Sempre que Cont = TamBuf buffer cheio! O processo Produtor

deve esperar a leitura de um dado

DEINFO/Licenciatura em Computao - Prof. Robson Fidalgo

23

Sincronizao Condicional
Exemplo em pseudo cdigo
PROGRAM Produtor_Consumidor; CONST TamBuf = (* Tamanho qualquer *); TYPE Tipo_Dado = (* Tipo qualquer *); VAR Buffer : ARRAY [1..TamBuf] OF Tipo_Dado; Dado : Tipo_Dado; Cont : 0..TamBuf; PROCEDURE Produtor; PROCEDURE Consumidor; BEGIN Cont := 0; PARBEGIN Produtor; Consumidor; PAREND; END.
DEINFO/Licenciatura em Computao - Prof. Robson Fidalgo 24

UFRPE

Sincronizao Condicional
UFRPE

PROCEDURE Produtor; BEGIN REPEAT Produz_Dado (Dado); WHILE (Cont = TamBuf) DO (* Nao faz nada *); Grava_Buffer (Dado, Buffer); Cont:=cont+1; UNTIL False; END; PROCEDURE Consumidor; BEGIN REPEAT WHILE (Cont = 0) DO (* Nao faz nada *); Le_Buffer (Dado); Consome_Dado (Dado, Buffer); Cont:=cont-1 UNTIL False; END;
DEINFO/Licenciatura em Computao - Prof. Robson Fidalgo 25

Sincronizao Condicional
UFRPE

O algoritmo anterior resolve a sincronizao condicional, mas no resolve o problema de espera ocupada. Este problema s solucionado pelos mecanismo de sincronizao de

semforos e monitores
DEINFO/Licenciatura em Computao - Prof. Robson Fidalgo 26

Вам также может понравиться