Baixe o app para aproveitar ainda mais
Prévia do material em texto
Sistemas Operacionais Jackson. F. Magnabosco | Teyson Lorenzon | Cristian Abramchuk | Bruno Beltrame Semáforo SEMÁFORO O que é ? • Variável utilizada para controlar o acesso a recursos compartilhados; • Sincroniza o uso de recursos em grande quantidade; • Conta o número de recursos disponíveis; SEMÁFORO Operação Down • Executada sempre que um processo deseja usar um recurso compartilhado; • Verifica se o valor é maior que 0, se for decrementa o semáforo; • Se for 0, coloca o processo que executou o down para dormir; SEMÁFORO Operação Up • Executada sempre que um processo libera um recurso compartilhado; • Incrementa +1 no semáforo; • Verifica se há processos dormindo; • Se houver processos, acorda o primeiro processo da lista e executa o down; SEMÁFORO Operações são Atômicas • Somente um processo pode acessar o semáforo por vez; • Geralmente implementadas como syscall; • S.O desabilita todas interrupções enquando roda o semáforo; SEMÁFORO Tipos de Semáforo • Semáforo geral • Controlar acesso de recurso compartilhados; • Não pode ter valor negativo. • Semáforo binário ou mutex • Usado para implementar exclusão mútua; • Valores 0 e 1. SEMÁFORO Semáforo Geral • Inicia com o número de recursos disponíveis; • Cada processo que vai utilizar um recurso executa o método down; • Quando um processo libera um recurso executa o método up; • Se não há recursos disponíveis o processo é posto para dormir. SEMÁFORO Semáforo Binário • Serve para conceder entrada à região crítica; • Quando uma thread ou processo precisa acessar uma região crítica, chama o método mutex_lock; • Quando termina, chama o método mutex_unlock. Desenvolvendo a parte prática da aplicação Resultado da aplicação
Compartilhar