Escreva uma ``solução completa'' usando memória compartilhada
entre os processos, isto é, com os vários processos
operador mantendo seus contadores de chamadas numa área
que pode ser lida pelo processo supervisor. A área de
memória compartilhada deve ser implementada através das primitivas
de shared memory disponíveis no Unix. O material sobre
shared memory também está na pasta 31 do xerox do CAMAT. Um
exemplo de uso (dois processos que compartilham um buffer
-- um escreve e outro lê) está disponível juntamente com a
``solução incompleta''.
Sua solução deve ser escrita em C. Escreva-a de modo que o acesso
à memória compartilhada (onde estão os vetores cujos elementos
guardam os números de chamadas em atendimento ou já completadas
pelos vários operadores, ou alguma outra estrutura de dados que
você achar conveniente) seja uma região crítica que é executada
com exclusão mútua, através do algoritmo ``Tie Breaker'' ou do
``Bakery Algorithm''. (Escolha um deles e documente bem sua
escolha.)