Simulador de corridas
- Arranque do servidor, leitura do ficheiro de configurações, validação dos dados e aplicação das configurações lidas (META 1)
- Criação do processo Gestor de Corrida e Gestor de Avarias (META 1)
- Criação da memória partilhada (META 1)
- Criação do named pipe
- Escrever a informação estatística no ecrã como resposta ao sinal SIGTSTP
- Captura o sinal SIGINT, termina a corrida e liberta os recursos
- Criação dos processos Gestores de Equipa (META 1)
- Criação dos unnamed pipes
- Ler e validar comandos lidos do named pipe
- Começar e terminar uma corrida
- Tratar SIGUSR1 para interromper a corrida
- Atualizar SHM com as suas informações
- Gerir os vários estados de cada carro (corrida, segurança, box, desistência e terminado)
- Lerem as avarias da MSQ e responderem adequadamente
- Notificar o Gestor de Corrida através dos unnamed pipes
- Criar threads carro (META 1 - preliminar)
- Gerir box
- Gerir abastecimento dos carros
- Gerar avarias para os vários carros, baseado na fiabilidade de cada um
- Envio sincronizado do output para o ficheiro de log e ecrã (META 1)
- Criar um makefile
- Diagrama com a arquitetura e mecanismos de sincronização (META 1 - preliminar)
- Suporte de concorrência no tratamento de pedidos
- Deteção e tratamento de erros
- Sincronização com mecanismos adequados (semáforos, mutexes ou variáveis de condição) (META 1 - preliminar)
- Prevenção de interrupções indesejadas por sinais e fornecer a resposta adequada aos vários sinais
- Após receção de SIGINT, terminação controlada de todos os processos e threads, e libertação de todos os recursos