Ementa:
Noções básicas do processo de automação: medição,
atuação e controle. Estabilidade e desempenho de sistemas
realimentados. Controle
de sistemas a eventos discretos. Hierarquia em
sistemas automatizados. Requisitos dos sistemas informáticos para
automação.
Programação concorrente e sistemas operacionais.
Sistemas computacionais embutidos. Programação em tempo real,
abordagem
síncrona. Estudo de caso.
2006/I 2005/I 2004/I 2003/I 2002/I 2001/I
Conceitos Básicos e Técnicas de
Implementação de Sistemas Automatizados - 2006/I
Plano da disciplina (segunda parte)
Notas
Simulador de cruzamento, versão 2.04, zipado, atualizado 19/04/2004
Artigo sobre o problema do cruzamento automático
Livro sobre Pthreads
Capítulo de livro sobre pthreads
Trabalhando com o Tempo Real em Aplicações Sobre o Linux
Conjunto de Experiências Sobre Sincronização de Relógios
Organização de Sistemas Operacionais - JAI 2002
Exemplos de provas
Sistemas operacionais de tempo real
Trabalho com programação concorrente:
Implementar na forma de monitor, usando variáveis mutex e variáveis
condição, um esquema de buffer duplo. O monitor possui duas rotinas de
acesso, uma para inserção de um número tipo double, e outra para a leitura
de um array com 100 doubles previamente escritos. Internamente ao monitor
existem 2 buffers, cada um deles comporta 100 doubles. A cada momento
existe 1 buffer em uso, enquanto o outro está ou completamente vazio ou
completamente cheio.
Implementar o buffer duplo na forma de um módulo (arquivo .c separado), o
qual exporta as funções de acesso apenas. Este módulo deve ser
implementado seguindo a filosofia dos monitores, ou seja, deve usar
variáveis mutex para garantir exclusão mútua entre diferentes threads que
chamam estas rotinas simultaneamente. Além disto, quando uma thread fica
bloqueada até o buffer encher, usar para isto uma variável condição.
void escreve_double( double d);
A escrita do double sempre ocorre no buffer em uso. Quando o buffer em uso
fica cheio, o outro buffer passa a ser o buffer em uso, e assim por
diante. No caso dos dois buffers estarem cheios, a thread que deseja
escrever fica bloqueada até que uma leitura aconteça, e libere um buffer.
void le_array( double *pd);
A leitura somente acontece se um buffer estiver cheio, o buffer é lido por
inteiro de uma só vez, e fica liberado para novas escritas. Caso a thread
tente ler, mas nenhum dos dois buffers está cheio no momento, ela fica
bloqueada até que o buffer em uso fique cheio.
----
Implementar um segundo módulo (outro arquivo .c), onde são criadas várias
threads recorrentes, as quais fazem inserções e remoções variadas. Usar
"sleep" para testar se uma remoção antes do buffer ficar cheio
efetivamente bloqueia a thread.
Esqueleto do código das threads:
void thread_coloca(void)
{
...
escreve_double(dado);
...
}
void thread_tira(void)
{
...
le_array(array);
...
}
Todo o trabalho deve ser feito em C, no Linux, usando a biblioteca das
pthreads.
Conceitos Básicos e Técnicas de Implementação de Sistemas Automatizados - 2005/I
Plano da disciplina (segunda parte)
Notas
Simulador de cruzamento, versão 2.04, zipado, atualizado 19/04/2004
Artigo sobre o problema do cruzamento automático
Livro sobre Pthreads
Trabalho com programação concorrente:
Implementar um programa concorrente em C no Linux usando a biblioteca das pthreads,
que faça o controle do sistema descrito aqui
Entrega consiste de texto simples descrevendo as threads e os mecanismos de sincronização
utilizados, apresentação do programa e explicação do mesmo (perguntas serão feitas!).
aquecedor2004_2.jar é chamado com:
java -jar aquecimento.jar
escuta a porta 4545.
Aceita os 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
Implementar um programa em C no Linux usando a biblioteca de pthreads que inclua
as seguintes funcionalidades:
- Laço de controle com tarefa periódica;
- Alarme associado com valores das variáveis amostradas;
- Armazenagem em arquivo de leitura periódicas;
- Informações periódicas na tela;
- Leitura de comandos e/ou valores a partir do teclado.
O programa em si deve ficar no arquivo "controle.c" e deve ser composto por várias threads
que colaboram entre si através de variáveis compartilhadas.
Material adicional na página de ../cad-ii2/cad-ii2.html.
A planta será simulada por um outro programa, cujo código executável será
fornecido. A comunicação entre o controle e o simulador será através
de sockets UDP/IP.
Avaliação composta por:
- Código fonte
- Texto explicando qual a função de cada thread e quais variáveis compartilhadas cada uma acessa
- Apresentação individual do trabalho
Outros requisitos:
- Cada variável compartilhada deve ter seu próprio mutex.
- Variáveis condição devem ser usadas para liberar as threads de alarme.
- Tarefas periódicas implementadas com precisão e não com sleep fixo.
Alguns aspectos para a composição da nota do trabalho do controlador:
- Fez no Linux, em C, usando a biblioteca das pthreads ?
- A aplicação apresenta valores na tela ?
- A aplicação grava leituras em arquivo ?
- A aplicação acessa teclado durante a execução do controlador ?
- A aplicação possui alarme disparado via variável condição ?
- A aplicação possui laço de controle ?
- Foi usado um mutex para cada estrutura compartilhada ?
- As tarefas são realmente periódicas, como feito em aula ?
- Elegância do design da solução.
- Legibilidade do código.
Entrega dos dois Trabalhos até dia 20 de maio.
Capítulo de livro sobre pthreads
Trabalhando com o Tempo Real em Aplicações Sobre o Linux
Conjunto de Experiências Sobre Sincronização de Relógios
Organização de Sistemas Operacionais - JAI 2002
Exemplos de provas
Sistemas operacionais de tempo real
Conceitos Básicos e Técnicas de
Implementação de Sistemas Automatizados - 2004/I
Plano da disciplina (segunda parte)
Notas
Simulador de cruzamento, versão 2.04, zipado, atualizado 19/04/2004
Artigo sobre o problema do cruzamento automático
Trabalho com programação concorrente:
Implementar um programa concorrente em C no Linux usando a biblioteca das pthreads,
ou em Java, que realize um cenário incluindo exclusão mútua e espera por condição.
Cada grupo deve implementar um cenário diferente, aprovado pelo professor. Entrega
consiste de descrição do cenário implementado, apresentação do programa e
explicação do mesmo (perguntas serão feitas!).
Entrega dos dois Trabalhos até dia 28 de maio.
Capítulo de livro sobre pthreads
Trabalhando com o Tempo Real em Aplicações Sobre o Linux
Conjunto de Experiências Sobre Sincronização de Relógios
Organização de Sistemas Operacionais - JAI 2002
Exemplos de provas
Sistemas operacionais de tempo real
Conceitos Básicos e Técnicas de
Implementação de Sistemas Automatizados - 2003/I
Plano da disciplina (segunda parte)
Notas
Simulador de cruzamento, versão 2.0 BETA, zipado, atualizado 02/06/2003
Informações extras sobre a versão 2x
(em caso de problemas sérios, usar a versão 1.4, do ano passado)
Artigo sobre o problema do cruzamento automático
Trabalho com programação concorrente:
Implementar um programa concorrente em C no Linux usando a biblioteca das pthreads,
ou em Java, que realize um cenário incluindo exclusão mútua e espera por condição.
Cada grupo deve implementar um cenário diferente, aprovado pelo professor. Entrega
consiste de descrição do cenário implementado, apresentação do programa e
explicação do mesmo (perguntas serão feitas!).
Entrega dos dois Trabalhos até dia 13 de junho.
Exemplos de provas
Sistemas operacionais de tempo real
Conceitos Básicos e Técnicas de Implementação de Sistemas Automatizados - 2002/I
Plano da disciplina (segunda parte)
Notas
Simulador de cruzamento, versão 1.4, zipado, 47 Kbytes
API para o controlador
Artigo sobre o problema do cruzamento automático
Trabalho com programação concorrente:
Implementar um programa concorrente em C no Linux usando a biblioteca das pthreads,
que realize um dos cenários de processos produtores e consumidores sugeridos, sendo que
cada grupo deve implementar um cenário diferente, conforme o número do grupo. Entrega
consiste da apresentação do programa e explicação do mesmo (perguntas serão feitas!).
Lista de exercícios para a prova - Livro de Sistemas Operacionais:
Capítulo 2: 1 2 3 4 5 6 7 8 9 10 11
Capítulo 3: 1 2 3 4 5
Capítulo 4: 1 2 3 4 5 6
Capítulo 6: 1 2 3 4 5 6 7 8 9
Capítulo 7: 1 2
Capítulo 8: 2 3 4
www.das.ufsc.br/gtr/livro/exercicios.htm: 2.1 2.2 2.3 2.4 2.5 2.6 2.8
Versão para word
Conceitos Básicos e Técnicas de
Implementação de Sistemas Automatizados - 2001/I
Notas
Simulador de cruzamento, versão 1.1.1,
zipado, 24 Kbytes
cruzamento-11.zip
Simulador de cruzamento, versão 1.0,
zipado, 20 Kbytes
Trabalho sobre programação concorrente
Código fonte dos exemplos do livro
Transparências sobre tempo real
escola-1.pdf escola-2.pdf
escola-3.pdf escola-4.pdf
escola-5.pdf
Lista de exercícios para a prova - Livro de Sistemas Operacionais:
Capítulo 2: 1 2 3 4 5 6 11
Capítulo 3: 1 2 4 5
Capítulo 4: 1 2 3 4 5 6
Capítulo 5: 1 4 5
Capítulo 6: 1 2 3 4 5 6 8 9 10
Capítulo 7: 1 2
www.das.ufsc.br/gtr/livro/exercicios.htm: 2.1 2.2 2.4 2.5 2.6 2.8