Diferenças

Aqui você vê as diferenças entre duas revisões dessa página.

Link para esta página de comparações

Ambos lados da revisão anterior Revisão anterior
so:semaforos_posix [2010/06/18 21:06] mazieroso:semaforos_posix [2011/09/26 19:32] (atual) – [A entregar] maziero
Linha 1: Linha 1:
 +====== Semáforos POSIX ======
  
 +Este projeto visa expor os problemas advindos do acesso concorrente de tarefas a estruturas de dados compartilhadas e compreender a coordenação dos acessos através de semáforos.
 +===== Problema =====
 +
 +Você deve criar um programa com duas threads POSIX, que manipulam uma fila de inteiros de forma concorrente. Cada thread retira o primeiro elemento da fila e coloca um novo elemento no fim da fila:
 +
 +<code>
 +while (1)
 +{
 +  velho = retira_primeiro_elemento_da_fila()
 +  novo = random() % 100
 +  poe_elemento_no_fim_da_fila (novo)
 +  imprime operação efetuada e estado da fila
 +}
 +</code>
 +
 +Como fila, deve ser usada a implementação de fila circular construída anteriormente.
 +
 +===== Observações =====
 +
 +  * A saída do programa deve seguir o formato abaixo (obviamente com valores aleatórios):
 +
 +<code>
 +thread 1: tira 34,  poe 81,  fila: 47  2 19 66 32 60  9 11 38 81
 +thread 4: tira 47,  poe 55,  fila:  2 19 66 32 60  9 11 38 81 55
 +thread 2: tira  2,  poe 31,  fila: 19 66 32 60  9 11 38 81 55 31
 +thread 3: tira 19,  poe 17,  fila: 66 32 60  9 11 38 81 55 31 17
 +...
 +</code>
 +
 +  * A fila tem capacidade para 10 inteiros, está inicialmente cheia (valores aleatórios) e tem comportamento FIFO.
 +
 +
 +===== Roteiro =====
 +
 +  - Implemente o programa usando **semáforos POSIX** e observe se a fila se comporta corretamente.
 +  - Proponha e implemente uma forma de medir o número de inserções de inteiros na fila por segundo.
 +  - Meça o desempenho de sua solução, compare com as soluções usando espera ocupada e justifique seus resultados.
 +
 +===== A entregar =====
 +
 +  - A implementação solicitada (arquivo ''semaforo.c'')
 +  - Um relatório sucinto (e no [[teaching:regras das atividades de laboratorio#relatórios|formato correto]]) descrevendo os resultados observados nas experiências.