Sugestão para quem usa Windows normalmente: virtualbox
Implementar o controle e a supervisão do sistema descrito aqui.
Simulador é usado para simular uma
unidade de caldeira e é chamado com:
java -jar aquecedor2008_1.jar <número-porta-escutada>
A caldeira possui instrumentação embutida e aceita os seguintes comandos:
"sta0" lê valor de Ta
"st-0" lê valor de T
"sti0" lê valor de Ti
"sno0" lê valor de No
"sh-0" lê valor de H
"ani123.4" define valor de Ni como 123.4
"aq-567.8" define valor de Q como 567.8
"ana123.4" define valor de Na como 123.4
"anf123.4" define valor de Nf como 123.4
Cuidado com a formatação dos valores em ponto flutuante.
Implementar em C no Linux o programa CONTROLADOR, o qual deve incluir as seguintes funcionalidades de controle:
- Laço de controle como tarefa periódica para a temperatura;
- Laço de controle como tarefa periódica para o nível;
- Uso do tanque auxiliar e da saída de água;
- Informações na tela sobre a situação corrente;
- Entrada através do teclado dos valores de referência para nível e
temperatura;
- Armazenagem periódica dos valores lidos de temperatura e armazenagem
desses dados
em arquivo, através de buffer duplo.
Outros requisitos:
- Não usar threads;
- Período do controlador de temperatura deve ser 90ms;
- Período do controlador de nível deve ser 70ms;
- Atualização da tela pode ser com sleep simples de 1 segundo.
Ao final do laço, mas antes de calcular o novo t de acordar, obtenha a
hora atual t1. Com "t1 - t" temos o tempo de resposta desta execução.
Cuidado com a divisão de segundos e nanosegundos.
Armazene esta informação em um array e depois de algum tempo apresente um
histograma destas medições. Principalmente, identifique o pior caso, isto
é, o maior tempo de resposta observado.
Faça a experiência com o computador com baixa atividade e também com o
computador fazendo downloads de servidores com grande capacidade. Compare
os histogramas obtidos para os dois casos de carga no computador.
Até que período seria possível levar o controlador nestas condições de
execução ?
Usar as funções clock_nanosleep e clock_gettime.
Implementar o controle e a supervisão do sistema descrito aqui.
Simulador
é usado para simular uma unidade de caldeira e é chamado com:
java -jar aquecedor2008_1.jar <número-porta-escutada>
A caldeira possui instrumentação embutida e aceita os seguintes comandos:
"sta0" lê valor de Ta
"st-0" lê valor de T
"sti0" lê valor de Ti
"sno0" lê valor de No
"sh-0" lê valor de H
"ani123.4" define valor de Ni como 123.4
"aq-567.8" define valor de Q como 567.8
"ana123.4" define valor de Na como 123.4
"anf123.4" define valor de Nf como 123.4
Cuidado com a formatação dos valores em ponto flutuante.
Implementar em C no Linux o programa CONTROLADOR, o qual deve incluir as seguintes funcionalidades de controle:
- Laço de controle como tarefa periódica para a temperatura;
- Laço de controle como tarefa periódica para o nível;
- Uso do tanque auxiliar e da saída de água;
- Informações na tela sobre a situação corrente;
- Entrada através do teclado dos valores de referência para nível e
temperatura;
- Armazenagem periódica dos valores lidos de temperatura e armazenagem
desses dados
em arquivo, através de buffer duplo.
Outros requisitos:
- Usar mutex para proteger as variáveis compartilhadas;
- Tarefas periódicas implementadas com precisão e não com sleep fixo;
- Período do controlador de temperatura deve ser 90ms;
- Período do controlador de nível deve ser 70ms;
- Atualização da tela pode ser com sleep simples de 1 segundo.
Implemente uma simulação usando programação concorrente, onde os elementos ativos (pessoas, carros, máquinas, etc) são representados por threads, e as contenções entre eles (elevador, cruzamento, peças, etc) são representados por monitores acessados pelas threads.
A simulação será construida como um programa concorrente em C usando a biblioteca das pthreads. Os elementos ativos são representados por threads, e a descrição do ambiente onde ocorre a interação entre eles deve ser feita através de variáveis globais compartilhadas, cujo acesso é regulado por monitores. A evolução do estado do sistema ocorre conforme a dinâmica do sistema simulado. Sleep pode ser usado para simular ações demoradas.
Exemplos de sistemas que podem ser simulados: tráfego urbano, tráfego aéreo, tráfego ferroviário, manufatura, bolsa de valores, sistemas militares, sistemas ecológicos, etc.
Cada grupo deve descrever sua proposta e obter aprovação para ela antes de implementar. Cada grupo deve implementar uma simulação diferente.
A simulação será realizada por um programa único composto por muitas threads. O uso de comunicação via UDP é opcional, não será cobrado. Mas pode ser usado caso o grupo julgue conveniente para a simulação em questão.