Jonas O Grande
Pesquisas Acadêmicas: Jonas O Grande. Pesquise 861.000+ trabalhos acadêmicosPor: s1junior • 25/3/2015 • 277 Palavras (2 Páginas) • 189 Visualizações
Como vimos anteriormente, quando um processo estivesse ativo e executando tarefas na região crítica, então outros deveriam ficar “dormindo” até o término dessa tarefa. O semáforo é o conceito proposto por E. W. Dijkstra para um tipo de Vale destacar, nesse momento, que verificar o valor sem alterá-lo e possivelmente ir dormir são tarefas que devem ser obrigatoriamente executadas nessa ordem, além de não poderem ser divididas.
Para evitarmos a condição de corrida, deve ser garantido que, ao iniciar uma operação de semáforo, nenhum outro processo poderá ter acesso a este até que a operação tenha terminado ou sido bloqueada.
Já na operação up, é incrementado no semáforo um valor. Porém, se um ou mais processos estivessem dormindo ao ser iniciada a operação up (lembrando que na operação down os processos não chegam a terminar o ciclo completo, ficando em estado dormente – como foi destacado acima quando usei o termo “ainda”), e estivessem impossibilitados de terminar a operação down, então um deles seria escolhido pelo sistema e atribuído a permissão para término do down. Apesar de o semáforo permanecer em 0 nessa etapa up, em um semáforo que já continha um ou mais processos dormentes, e esperar para terminar o down, teremos um processo a menos dormindo.
55

Unidade III
Lembrete
Durante o up, apesar de o semáforo terminar com o valor em 0, ele terá liberado um dos processos que estavam impossibilitados de terminar o ciclo down.
Não podemos esquecer que a operação de incrementar o semáforo e acordar um processo que estava previamente dormente também é indivisível, como o processo no caso explicado anteriormente no down. Vale destacar também que um processo nunca deverá ser bloqueado a partir de um up.
...