Comunicação entre processos
Em um Sistema Operacional, frequentemente, os processos
podem precisar trocar informações entre eles ou podem solicitar a
utilização de um mesmo recurso simultaneamente, como arquivos,
registros, dispositivos de E/S e memória. O compartilhamento de
recursos entre vários processos pode causar situações indesejáveis
e, dependendo do caso, gerar o comprometimento da aplicação.
O Sistema Operacional tem a função de gerenciar e
sincronizar processos concorrentes, com o objetivo de manter o bom
funcionamento do sistema.
Uma situação que ocorre com freqüência em sistemas concorrentes é o problema
dos leitores/escritores, sendo um dos problemas clássicos que ocorrem quando há comunicação entre processos.
Neste caso, um conjunto de processos ou threads acessam de forma concorrente uma área
de memória comum (compartilhada), na qual podem fazer
leituras ou escritas de valores.
Leitor e Redator - O problema
No problema do leitor e redator as leituras podem ser
feitas simultaneamente, pois não interferem umas com as
outras, mas as escritas têm de ser feitas com acesso
exclusivo à área compartilhada, para evitar condições de disputa.
Se um processo de leitura chegar e outro estiver lendo, ele pode acessar a área compartilhada juntamente com o
outro processo leitor, mas se um escritor estiver acessando a seção ninguém mais pode acessá-la, muito menos outros escritores. Como podemos resolver esse problema? Uma solução
pode ser escontrada na guia código.