Vous êtes sur la page 1sur 12

Semforos e Mutexes

Carlos Gustavo A. da Rocha

Programao para ambiente de redes


carlos.rocha@ifrn.edu.br
Semforos e Mutexes
Introduo
Uma srie de problemas podem ocorrer quando um
ou mais processos tem acesso a um nico recurso
compartilhado pelo SO
Como exemplo temos a fila de impresso
Um processo A requisita a prxima vaga da fila, recebe
a informao de que a prxima vaga a 7, e neste
exato momento escalonado;
Outro processo B requisita a prxima vaga, tambm
recebe como resposta 7, copia o arquivo a ser
impresso para esta posio, e neste exato momento
escalonado
Programao para ambiente de redes
carlos.rocha@ifrn.edu.br
Semforos e Mutexes

Quando o processo A volta a executar ele tambm


copia o arquivo para a posio 7, e atualiza a
informao de que a prxima vaga disponvel a 8
Nesta situao o arquivo enviado pelo processo B no
ser impresso

Este tipo de problema conhecido


como condio de corrida;
Tema bastante importante para

os sistemas operacionais

Programao para ambiente de redes


carlos.rocha@ifrn.edu.br
Semforos e Mutexes
Regies crticas
Para evitar condies de corrida so necessrios
mecanismos que evitem que mais de um processo
leia ou escreva em memria, arquivos, ou qualquer
outro recurso compartilhado
Conhecidos como mecanismos de excluso mtua
Se um processo est de posse de um recurso
compartilhado, os outros sero excludos de obte-lo
O problema anterior s ocorreu porque os processos A
e B obtiveram acesso simultneo a uma mesma
varivel compartilhada

Programao para ambiente de redes


carlos.rocha@ifrn.edu.br
Semforos e Mutexes
Regies crticas
Os mecanismos de excluso mtua so um ponto
central de design em qualquer SO
E essenciais para seu funcionamento
Todos os trechos de cdigo de um programa que
podem levar a uma condio de corrida devem ser
protegidos por mecanismos de excluso mtua
Conhecidas como regies crticas

Programao para ambiente de redes


carlos.rocha@ifrn.edu.br
Semforos e Mutexes
Regies crticas

Programao para ambiente de redes


carlos.rocha@ifrn.edu.br
Semforos e Mutexes
Regies crticas
Existem diversos mecanismos para possibilitar a
excluso mtua, dentre eles, alguns histricos /
conceituais
Desabilitar interrupes, variveis de bloqueio,
alternncia estrita, soluo de Peterson, instruo TSL
Outras mais utilizadas atualmente na prtica
Semforos, mutexes etc

Programao para ambiente de redes


carlos.rocha@ifrn.edu.br
Semforos e Mutexes
Semforos
So um tipo especial de varivel disponvel nas
linguagens de programao
Nelas, podem ser aplicadas duas operaes: uma que
incrementa e outra que decrementa o seu valor
Durante a verificao ou alterao do valor de um
semforo um processo no pode ser escalonado
Normalmente, quando o semforo criado, possui

valor igual a 1

Programao para ambiente de redes


carlos.rocha@ifrn.edu.br
Semforos e Mutexes
Semforos funcionamento
Antes de entrar em uma regio crtica o processo
verifica o valor do semforo
Se > 0, decrementa o seu valor e continua a executar
Se = 0, o processo posto para dormir at que o valor
do semforo seja incrementado
Ao sair da regio crtica o processo incrementa o
valor do semforo

Programao para ambiente de redes


carlos.rocha@ifrn.edu.br
Semforos e Mutexes
Semforos uso
Semforos so amplamente utilizados nos sistemas
operacionais atuais, sendo fundamentais para o
funcionamento de muitos dos programas que
utilizamos diariamente
Alm de implementar excluso mtua, com os semforos
podemos controlar o nmero mximo de acessos
simultneos a um recurso

Programao para ambiente de redes


carlos.rocha@ifrn.edu.br
Semforos e Mutexes
Mutexes
So uma verso simplificada dos semforos, com
apenas dois valores possveis (0 e 1)
Implementam apenas excluso mtua
So mais simples e leves que semforos
Muito utilizados por threads
Podem estar em dois estados (unlocked ou locked)

Programao para ambiente de redes


carlos.rocha@ifrn.edu.br
Semforos e Mutexes
Mutexes funcionamento
A forma genrica de funcionamento de um mutex
bastante simples
Antes de entrar em uma regio crtica, o processo ou
thread executa uma chamada mutex_lock(...)
Se outros processos ou threads tentarem acessar a

mesma regio crtica eles sero bloqueados


Ao sair de uma regio crtica, o processo ou thread
executa uma chamada mutex_unlock(...)
Se houver um ou mais processos ou threads

bloqueados neste mutex, um deles ser liberado

Programao para ambiente de redes


carlos.rocha@ifrn.edu.br

Vous aimerez peut-être aussi