TRABALHO - Fundamentos de Sistemas Operacionais - FSO - 2019/1

Bruno César Ribas

Prólogo

Para o trabalho de sistemas operacionais deste semestre, iremos implementar um CHAT. O CHAT será dividido em 3 checkpoints, a saber:

  1. Troca de mensagens local por meio de FILAS POSIX e THREAD;
  2. Troca de mensagens local por meio de FILAS POSIX,THREAD e CHAT GLOBAL (ou assinatura de mensagens);

O primeiro checkpoint vale 30 pontos e o segundo checkpoint vale 70 pontos.

O primeiro Checkpoint

Neste checkpoint o CHAT deverá funcionar localmente por meio de FILAS POSIX.

FILA POSIX

A FILA POSIX é um arquivo especial controlado pelo kernel para troca de mensagens entre processos.

Cada usuário deverá criar uma FILA (veja mq_overview(7) ) no no padrão, chat-usuario, onde usuario deverá ser substituído por um nome ou apelido.

Exemplo: Usuário 'Leonardo' deverá criar a FILA no seguinte caminho:

  /chat-Leonardo

Se esta fila já existir e tiver um dono (owner) diferente do usuário que está criando a fila, uma mensagem deve ser jogada na tela e o programa deve sair.

A permissão da FILA deverá ser de leitura e escrita para o dono e apenas escrita para outros usuários.

Para enviar uma mensagem a um usuário o programa CHAT deverá abrir a FILA do usuário de destino e escrever em texto plano uma mensagem no seguinte formato:

  DE:PARA:MENSAGEM

Exemplo: Usuário 'Leonardo' mandando para o usuário 'Marcelo' a mensagem "Ola amigo", deverá possuir o seguinte formato:

  Leonardo:Marcelo:Ola amigo

E para este exemplo, o CHAT de Leonardo deverá escrever esta mensagem em:

  /chat-Marcelo

As mensagens deverão, obrigatoriamente, encerrar com a quebra de linha.

O problema desta abordagem acontece quando ninguém manda mensagem para o usuário e já que a função de verificar se há mensagens na FILA é do tipo blocante, ou seja, o processo fica bloqueado até que receba alguma mensagem.

Padrões

Fluxo de mensagens

Exemplo de fluxo de mensagens e sinais para o envio de uma mensagem do usuário A para o usuário B.

Neste exemplo a:

  /----------------\ 3)T1B está preparado para rece-   /----------------\
  |U     _______   |  ber conteúdo na     ,->---------------, _______   |
  |S     |     |   |  tela, processa a   /             |S    \>     |   |
  |U     | T1A |   |  informação e      /              |U     | T1B |   |
  |A     |     |   | apresenta na tela./               |A     |     |   |
  |R     ------- _.---------->--------'                |R     -------   |
  |I     _______/  |                                   |I     _______   |
  |O     |     |   |2)T2A consome a fila de mensagens  |O     |     |   |
  |      | T2A |   | a enviar e faz o procedimento de  |      | T2B |   |
  |A     |     |<-\| envio de mensagem, escrevendo     |B     |     |   |
  |      -------  ^| na FILA do destinatário           |      -------   |
  |      _______  ^|                                   |      _______   |
  |      |     |  ||                                   |      |     |   |
  |      |MainA|  ||                                   |      |MainB|   |
  |      |     |-/ |                                   |      |     |   |
  |      -------   |1)Usuário A digita a mensagem e    |      -------   |
  |                |  pressiona enter para enviar.     |                |
  \----------------/  Esta mensagem é enviada para T2A \----------------/
  

Entrega e apresentação

Este checkpoint deverá ser apresentado na data limite por no máximo 10 minutos.

A apresentação deverá conter uma explicação do processo implementado, das principais dificuldades e o que foram feitas para contorná-las.

Além da apresentação os alunos deverão mostrar ao professor o CHAT em funcionamento.

O CHAT funcionar com o CHAT de outra equipe agrega 10 pontos ao checkpoint.

O segundo Checkpoint

Para o segundo checkpoint os trabalhos devem implementar o suporte a:

Entrega e apresentação

Este checkpoint deverá ser apresentado na data limite por no máximo 10 minutos.

A apresentação deverá conter uma explicação do processo implementado, das principais dificuldades e o que foram feitas para contorná-las.

Além da apresentação os alunos deverão mostrar ao professor o CHAT em funcionamento.

Os alunos deverão demonstrar o domínio da solução implementada.

---
Last Modified: Wed Jun 12 15:13:48 2019.