Академический Документы
Профессиональный Документы
Культура Документы
UFRPE
a u t M o s u l c x E a r a p Solues
Solues de SW
Diversos algoritmos foram propostos Dois dos principais algoritmos sero discutidos
Solues de HW
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
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
Desvantagem
Possibilidade de starvation (espera indefinida), pois a seleo do processo para o acesso ao recurso arbitrria
Solues de SW
10
Principais Algoritmos:
1o. Algoritmo para excluso mtua (contextualizar) Algoritmo de Peterson
11
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
2) Caso ocorra algum problema com a varivel de bloqueio de um dos processos, o outro processo permanecer indefinidamente bloqueado, aguardando o recurso
13
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
14
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
16
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
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
semrofos e monitores
e sero discutidos logo mais
19
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
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
Sincronizao Condicional
UFRPE
esperar at que se grave um dado Sempre que Cont = TamBuf buffer cheio! O processo Produtor
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