Mutex
Click here to load reader
-
Upload
paula-goncalves -
Category
Education
-
view
819 -
download
1
description
Transcript of Mutex
![Page 1: Mutex](https://reader038.fdocumentos.tips/reader038/viewer/2022100518/55996e511a28ab64368b46aa/html5/thumbnails/1.jpg)
MUTEXSistemas OperacionaisProf. Maurílio Alves
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAISCAMPUS TIMÓTEO
Paula Peçanha Gonçalves
![Page 2: Mutex](https://reader038.fdocumentos.tips/reader038/viewer/2022100518/55996e511a28ab64368b46aa/html5/thumbnails/2.jpg)
Características● Opção simplificada de Semáforo:
○ Não precisa de contar;
● Somente 1 bit é necessário para representar a variável mutex:○ Impedido;○ Desimpedido.
![Page 3: Mutex](https://reader038.fdocumentos.tips/reader038/viewer/2022100518/55996e511a28ab64368b46aa/html5/thumbnails/3.jpg)
Vantagens● Adequados apenas para gerenciar a
exclusão mútua de algum recurso ou parte de código compartilhada;
● Fáceis de implementar;
● Eficientes;
● Úteis em pacotes de threads implementados totalmente no espaço do usuário.
![Page 4: Mutex](https://reader038.fdocumentos.tips/reader038/viewer/2022100518/55996e511a28ab64368b46aa/html5/thumbnails/4.jpg)
Como funciona?● Quando um thread ou processo precisa ter
acesso a uma região crítica, ele chama mutex_lock.
● Se o mutex estiver desimpedido, o acesso à região crítica é liberado.
● Porém, se o mutex estiver impedido, a thread permanecerá bloqueada até que a região crítica seja liberada com um mutex_unlock.
![Page 5: Mutex](https://reader038.fdocumentos.tips/reader038/viewer/2022100518/55996e511a28ab64368b46aa/html5/thumbnails/5.jpg)
Como funciona?● Se múltiplos threads estiverem bloqueados
sobre o mutex, um deles será escolhido aleatoriamente e liberado para adquirir a trava.
● O código do mutex_lock é similar ao código do enter_region.
![Page 6: Mutex](https://reader038.fdocumentos.tips/reader038/viewer/2022100518/55996e511a28ab64368b46aa/html5/thumbnails/6.jpg)
Região Crítica● A diferença se dá quando o enter_region falha
ao entrar na região crítica, ele continua testando repetidamente a variável de trava (espera ociosa).
● Ao final, o tempo de CPU se esgota e algum outro processo é escalonado para executar.
![Page 7: Mutex](https://reader038.fdocumentos.tips/reader038/viewer/2022100518/55996e511a28ab64368b46aa/html5/thumbnails/7.jpg)
Thread_yield● Já o mutex_lock, quando falha em verificar a
variável de trava chama o thread_yield para que abra mão da CPU em favor de outro processo, ou seja, não há espera ocupada.
● O thread_yield é apenas uma chamada do escalonador de threads no espaço do usuário.
● Como consequência, nem o mutex_lock nem mutex_unlock requerem qualquer chamada ao núcleo.
![Page 8: Mutex](https://reader038.fdocumentos.tips/reader038/viewer/2022100518/55996e511a28ab64368b46aa/html5/thumbnails/8.jpg)
Implementação
![Page 9: Mutex](https://reader038.fdocumentos.tips/reader038/viewer/2022100518/55996e511a28ab64368b46aa/html5/thumbnails/9.jpg)
Referências● TANENBAUM, Andrew S. Sistemas
Operacionais Modernos. 3ª Edição.