O metodo de comunicacao entre processos, chamado de troca demensagens, utiliza duas primitivas, sende receive (enviar e receber) [1]. O sistema FESO possui chamadas ao sistema parapossibilitar o uso dessas primitivas, e consequentemente permitir que osprocessos e threads troqueminformacoes e tambem possam ser sincronizados.PortasO sistema FESO utiliza o conceito de portas. As portas possuemum numero e funcionam de forma analoga a uma caixa postal. Um thread pode alocar uma porta e destamaneira, sempre que uma mensagem for enviada para a porta alocada, seraredirecionada para o thread que aalocou. Com isso, um thread de um processo servidor podealocar sempre as mesmas portas, que sao previamente conhecidas pelos seusclientes, e que sempre enviao suas solicitacoes para ela.Os threads tambemutilizam portas para serem sinalizados no caso da ocorrencia de algum evento nosistema. Por exemplo, as 20 primeiras portas estao relacionadas as IRQs (interrupt request), ou seja, aos sinaisenviados ao processador pelo hardware para relatar o acontecimento de eventos.Sempre que uma IRQ ocorre, o sistema operacional verifica se a porta referenteaquele IRQ esta alocada a algum thread.Se uma IRQ ocorrer, uma mensagem e enviada ao thread informando a ocorrencia da interrupcao. Esta e a maneira queos processos servidores para drivers de dispositivos tem de serem sinalizadossempre que uma interrupcao for disparada.As portas tambem sao utilizadas para que os processos possam seravisados de eventos que ocorrem dentro do nucleodo sistema. Algumas portas sao reservadas exclusivamente para esses eventos, esempre que eles ocorrem, uma mensagem e encaminhada para avisar os threads. A tabela mostra uma lista deportas, e seus eventos correspondentes. Em um dado instante de tempo, apenas um thread pode ter uma determinada porta alocada. A unica excecao saoas portas de eventos do kernel, quepermitem que diversos threads aaloquem ao mesmo tempo. As primeiras 1000 portas estao reservadas para drivers de dispositivo, e threads de processos de usuario naopodem utiliza-las. Uma vez que um threadaloca uma porta, esta fica alocada por ele, ate que o thread termine sua execucao. Porta Evento 20 Processo Criado 21 Processo Finalizado 22 Porta Alocada 23 Porta Desalocada 24 Evento do Sistema de Arquivos Virtual 25 Excecao Envio e Recebimento de MensagensO sistema de troca de mensagens fornece algumas chamadas basicaspara a comunicacao. Uma para alocacao de portas, uma para o recebimento, e duaspara o envio. A chamada para alocacao permite que um thread especifique qual porta ele pretende alocar.A chamada para o recebimento e simples. Os processos especificamse existe alguma restricao de destinatario na hora da chamada de recebimento, eentram em estado de espera por uma mensagem. Caso exista uma restricao deporta, o thread so voltara a executarquando uma mensagem vinda de uma determinada porta for recebida (no caso declientes esperando respostas de servidores) ou quando uma mensagem recebidativer sido destinada a uma determinada porta (no caso de servidores esperandopor clientes). Quando nao ha restricoes o threadretoma sua execucao quando mensagem chega, independente de sua origem. Asmensagens tem um limite de 100 bytes,e cabe ao processo especificar um bufferpara o armazenamento do conteudo da mensagem durante seu recebimento.Para o envio de mensagens, existem duas opcoes. Uma mensagempode ser enviada para uma