You are on page 1of 4

SOLUO PARA MTUA EXCLUSO PARA ESPERA OCUPADA 1) DESABILITAR INTERRUPES: quando se esta entrando em uma RC, a funo

mais simples o mtodo de desabilitar todas as interrupes e quando terminar, reabilitar. Esta proposta no atrativa pois da ao processo do usurio a capacidade de desabilitar as interrupes inclusive aquelas que permite o ncleo reassumir o controle da CPU. Se o processo tiver algum problema o S.O no recebe a controle novamente. 2) variveis LOCK: essa opo implementada atravs do software, onde uma varivel compartilhada chamada LOCK tem o seu valor inicial em 0, a partir da execuo se tem um processo tentando entrar na RC ocorre um teste no valor de LOCK com as seguintes regras. a) se LOCK for = a 0; o processo muda o valor da varivel para 1 e executa na RC. b) se o valor de LOCK for 1; o processo espera at que o valor seja 0; Uma deficincia desse mtodo se por acaso dois processos executarem o teste ao mesmo tempo e conseguirem o mesmo resultado, podendo acarretar conflitos.
P1 P3 p2 P4

ALTERNNCIA ESTRITA. Esse um outro mtodo que utilizado, onde TURN comea com valor inicial 0. Essa varivel indica quem deve esperar e quem deve entrar na RC. Atravs da seguinte regra. c) se TURN = 0; o processo 0 pode entrar na RC e quando sair o valor de TURN passa para 1. d) se TURN 1; o processo 1 pode entrar na RC e quando esse processo sair o valor de TURN passa para 0; Esse algoritmo s permite a alternncia e caso o numero de processo seja maior que 2 o 1 processo tem que esperar at chegar sua vez novamente. INSTRUO TSL (teste and set lock)

Esse mtodo tem a participao do hardware utilizando a TSL presente em muitos computadores passando a controlar a varivel LOCK. Instruo especial que permite ler uma varivel, armazenar seu contedo em uma outra rea e atribuir um novo valor a esta varivel (HARDWARE). Soluo de hardware em ambiente de mltiplos processadores Soluo atmica O processador executando TSL bloqueia o barramento A instruo TSL L e compara o contedo de uma varivel e escreve um valor diferente de zero caso esteja zerada Instruo TSL boolean testset (int lock) { if (loock == 0) { loock =1; return true; } else { return false; } } SOLUES DE SOFTWARE COM BLOQUEIO Neste mtodo quando ocorrer SLEEP, o sistema muda o processo em execuo para bloqueado. Um processo bloqueado torna-se ativo quando outro processo o desbloqueia atravs de WAKEUP. Neste mtodo o mesmo que emprega variveis LOCK controlada por instrues TSL, sendo diferente, somente quando a varivel apresentar valor 1 o processo executa SLEEP. Quando um processo alterar o valor de LOCK para 0 ele responsvel, por ativar um processo bloqueado atravs do WAKEUP. Deve-se levar em conta que utilizando SLEEP e WAKEUP ocorre a possibilidade de bloqueio permanente de processo que conhecido como DEADLOCK. Dormir e Acordar (Sleep e Wakeup) A ideia evitar a espera ocupado que causa desperdcio de CPU. Os processos so bloqueados quando no podem entrar na regio crtica Os processos usam as primitivas sleep e wakeup Sleep(): bloqueia o processo e o coloca a espera de um sinal de wakeup. Wakeup(): sinaliza (acorda) o processo anteriormente bloqueado por Sleep()

EXERCICIOS DE REGIO CRTICA 1. Utilizando varivel LOCK, execute o seguinte processamento: o processo p1 est executando a partir de 0s e no inicio de 3s ele acessa a RC. quando o tempo esta em 2s um processo p2 comea a executar e no inicio de 5s tenta acessar a RC. quando chega ao final de 7s o processo p1 sai da RC. e em nove segundo ele finalizado. a) Em que momento o processo p2 vai conseguir acessar a RC? Sabe-se que ele leva 2s para sair da RC e mais 3s para finalizar o seu processo. Tempo 0 P1 P2 lock 0 0 X 1 x 2 x x 0 3 rc x 1 4 rc x 1 5 rc Rc/ 1 6 rc Rc/ 1 7 rc Rc/ 1 8 x rc 1 9 x rc 1 X 0 x 0 x 0 10 11 12

P2 consegue acessar em 8 segundos.

SOLUES DE SOFTWARE COM BLOQUEIO SEMFAROS Utilizam o conceito de variveis com nmeros inteiros utilizados para contar o n de vezes que a operao WAKEUP foi realizada. Utiliza-se ento as operaes up/Down seguindo essas regras: Semforos Uma varivel inteira (o SEMFORO) usada para o nmero de sinais de acordar salvos (pendentes) O valor zero indica que nenhum sinal de acordar est pendente Um valor positivo N indica o nmero de sinais pendentes As operaes Down e Up so executadas de forma atmica sobre o semforo

Down(semforo): testa se o valor do semforo maior que zero Se for, o semforo decrementado e o processo continua Caso contrrio o processo posto para dormir.

MONITORES Diferentemente de outros mtodos de proteo, os monitores so uma coleo de procedimentos, variveis e estrutura de dados agrupados em um bloco. A partir deles os processos acessam os procedimentos do monitor, mas no suas estruturas internas, sendo sua principal caracterstica que somente 1 processo pode estar ativo em um dado momento. PROPOSTA As sees crticas devem ser codificadas como procedimentos do monitor e no dentro de cada processo Quando um processo referencia dados compartilhados, ele chama um procedimento do monitor. Monitor uma construo da linguagem, cabe ao compilador garantir a excluso mtua.

You might also like