Diferenças
Aqui você vê as diferenças entre duas revisões dessa página.
| Ambos lados da revisão anterior Revisão anterior Próxima revisão | Revisão anterior | ||
| so:uso_de_semaforos [2016/11/26 14:07] – maziero | so:uso_de_semaforos [2023/03/29 16:12] (atual) – maziero | ||
|---|---|---|---|
| Linha 1: | Linha 1: | ||
| + | ====== Uso de semáforos ====== | ||
| + | |||
| + | {{ : | ||
| + | |||
| + | Este projeto consiste em usar seu sistema, com as funções de semáforos implementadas no projeto anterior, para construir um sistema produtor/ | ||
| + | |||
| + | {{ : | ||
| + | |||
| + | O código básico de um sistema produtor/ | ||
| + | |||
| + | === Produtor === | ||
| + | |||
| + | < | ||
| + | produtor | ||
| + | { | ||
| + | while (true) | ||
| + | { | ||
| + | task_sleep (1000) | ||
| + | item = random (0..99) | ||
| + | |||
| + | down (s_vaga) | ||
| + | |||
| + | down (s_buffer) | ||
| + | insere item no buffer | ||
| + | up (s_buffer) | ||
| + | |||
| + | up (s_item) | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | === Consumidor === | ||
| + | |||
| + | < | ||
| + | consumidor | ||
| + | { | ||
| + | while (true) | ||
| + | { | ||
| + | down (s_item) | ||
| + | |||
| + | down (s_buffer) | ||
| + | retira item do buffer | ||
| + | up (s_buffer) | ||
| + | |||
| + | up (s_vaga) | ||
| + | |||
| + | print item | ||
| + | task_sleep (1000) | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ===== Observações ===== | ||
| + | |||
| + | * Deve ser escrito um arquivo '' | ||
| + | * As principais variáveis necessárias para implementar o projeto são: | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * O sistema implementado deve ter 3 produtores e 2 consumidores. Ele deve produzir na tela uma saída com formato similar a este: | ||
| + | |||
| + | < | ||
| + | p1 produziu 37 | ||
| + | p2 produziu 11 | ||
| + | c1 consumiu 37 | ||
| + | p3 produziu 64 | ||
| + | p1 produziu 21 | ||
| + | c2 consumiu 11 | ||
| + | p2 produziu 4 | ||
| + | c1 consumiu 64 | ||
| + | ... ... | ||
| + | </ | ||
| + | |||
| + | Observe que os números são consumidos na seqüência em que foram produzidos, o que caracteriza o comportamento | ||
| + | |||
| + | ===== Outras informações ===== | ||
| + | |||
| + | * Duração estimada: 3 horas. | ||
| + | * Dependências: | ||
| + | * [[Gestão de Tarefas]] | ||
| + | * [[Dispatcher]] | ||
| + | * [[Preempção por Tempo]] | ||
| + | * [[Tarefas suspensas]] | ||
| + | * [[Tarefas dormindo]] | ||
| + | * [[Semáforos]] | ||