Mecanismos de Sincronização



O bom desempenho de variadíssimas aplicações depende do recurso a actividades independentes, os processos. No entanto, porque apresentam uma grande autonomia, é necessário garantir uma boa sincronização de forma a que se consiga conduzir as suas actividades ao fim pretendido.

São 2 as razões que podem conduzir à sincronização explicita de processos:

cooperação competição por um recurso






Cooperação

linha de montagem animada A cooperação existente entre processos revela-se quando, para que um processo realize execute um dado excerto de código, tenha de aguardar que um outro processo, termine alguma tarefa primeiro.

É o caso de uma linha de montagem num ambiente fabril: para que o segundo funcionário possa executar o seu trabalho tem de esperar que o seu colega faça a parte que lhe compete.

Um dos mecanismos disponibilizados pelos sistemas operativos são os signals.




Competição por um Recurso

Durante a execução de um programa, pode ser necessário, a mais do que um processo, aceder a um mesmo recurso. No entanto, se esse acesso for em simultâneo, tal concorrência, não sendo bem controlada, pode conduzir a inconsistências.
Por exemplo, consideremos um processo P1 que acede ao disco para leitura. Findo o seu tempo de CPU, ele suspende a sua actividade, dando lugar a um outro processo, P2, que necessita de ir escrever noutra posição. Quando a P1, volta a ser atribuído tempo de processador, este vai recomeçar a sua leitura no local onde se encontra a cabeça. Dado que esta tinha sido movimentada por P2, os dados que irão ser lidos, não serão os correctos. Este situação só poderia ser resolvida se o disco fosse reservado para cada processo até que este o libertasse finda a sua actuação.

Este cenário retrata um caso particular da Competição por um Recurso, Exclusão Mútua ou, simplesmente, Mutex, onde apenas se pode permitir o acesso individual ao recurso em causa.
Para que a Competição por um Recurso decorra sem qualquer problema são, normalmente, usados semáforos que permitem, ou não, o acesso de um ou mais processos à secção crítica.



Menu Enviar mail aos autores Signals


HomePage Menu Mecanismos de Sincronização Signals Semáforos Comunicação entre Processos Pipes Memória Partilhada Problemas de Programação Concorrente Glossário Links