DCC605: Sistemas Operacionais
2015/1

TP0: Calculadora interprocessos

Liberado: Quinta, 5 de março.
Entrega: Segunda, 16 de março.

Introdução

Neste trabalho iremos implementar uma calculadora que funciona através do mecanismo mais simples de comunicação interprocessos: passagem de sinais.

Especificação

No Linux, sinais podem ser enviados a processos usando o programa kill -SIGNAL PID, onde SIGNAL é um sinal disponível no sistema (ver man 7 signal). Programas podem informar ao sistema como cada sinal deve ser tratado usando a função sigaction. Neste trabalho iremos implementar uma calculadora que recebe comandos através de sinais. O "protocolo" de comunicação será o seguinte:

Usaremos SIGUSR1 para incrementar o operando atual. Operandos começam em 0 e só podem ter valores positivos. Para passar à calculadora um operando com valor 3, basta enviar o sinal SIGUSR1 três vezes.

Usaremos SIGUSR2 para confirmar entradas de parâmetros. Após enviar a quantidade desejada de sinais SIGUSR1, o usuário da calculadora deve enviar um SIGUSR2 para confirmar o valor do operando. Quando um operando é confirmado, o programa deve imprimir na tela o valor do operando.

Logo após a confirmação de um operando via SIGUSR2, podemos enviar um operando. Usaremos SIGHUP para soma, SIGINT para subtração, e SIGALRM para igual. Ao receber cada operador, a calculadora deve imprimí-lo na tela; quando receber o operador igual, a calculadora deve imprimir o resultado na tela.

A calculadora deve iniciar no modo de recepção de operador, e deve voltar ao modo de recepção de operador após tratar o operador igual.

O que deve ser entregue

Deve ser entregue o código do programa da calculadora. Documentação é opcional. Se entregue, deve ser em formato PDF e ter no máximo duas páginas.

Clarificações e dicas

A correção do trabalho será semi-automática através de um "usuário" simulador pelo professor. Teste seu programa sobre cargas de utilização pesadas (milhares de operações e alta frequência de recebimento de sinais).