Computação8º ano⏱ 20 min

Cozinha Paralela

Um restaurante em 3D com 1, 2 ou 4 cozinheiros-robôs. Distribua os pedidos, veja quanto o paralelismo ganha, ache o gargalo e provoque um impasse quando dois robôs querem a mesma panela.

Como usar

O restaurante: chegaram 8 pedidos. Cada robô cozinha os pedidos que você der a ele, um depois do outro. Cortar, picar e espremer cada robô faz na própria tábua, mas a cozinha tem uma panela e uma frigideira só, e cada robô leva 1 minuto para ir buscar cada utensílio.

Experimente: escolha 1, 2 ou 4 robôs, distribua os pedidos (ou use “Distribuir automaticamente”) e aperte “Cozinhar”. Compare o tempo do turno e veja, na linha do tempo, quem trabalhou, quem esperou e quem ficou parado. O macarrão precisa da panela e da frigideira ao mesmo tempo, e o risoto também. O que acontece se cada um pegar primeiro um utensílio diferente?

Arraste o fundo da cena para girar; use a roda do mouse ou dois dedos para aproximar. Pelo teclado: Tab até a cena, setas giram e as teclas + e − aproximam. Todos os comandos também estão nos botões e no painel, e a linha do tempo mostra o turno inteiro sem precisar da cena.

  • cozinhando
  • indo buscar um utensílio
  • esperando um utensílio
  • parado, sem pedidos

Minuto 0

Cozinheiros-robôs

Pedidos do turno

    Desafios

    1. Cozinhe o turno com 1 robô e depois com 4 robôs. Quantas vezes mais rápido ficou? Por que não ficou 4 vezes?
    2. Com 2 robôs, distribua os pedidos à mão até alcançar o menor tempo possível.
    3. Provoque um impasse: dois robôs parados para sempre, cada um segurando o utensílio de que o outro precisa.
    4. Ligue a regra da cozinha e cozinhe sem impasse, com o macarrão e o risoto em robôs diferentes.
    Para o professor

    O que está por trás: cada robô é um processador (ou núcleo) e cada pedido é uma tarefa. Dividir as tarefas entre vários robôs é paralelismo: o turno acaba antes. Mas a panela e a frigideira são recursos compartilhados, e só um robô usa cada uma por vez. Quando dois robôs querem a mesma panela há concorrência, e um deles espera. Por isso 4 robôs não deixam a cozinha 4 vezes mais rápida: a panela vira o gargalo, e o tempo que ela fica ocupada é um limite que nenhum robô a mais consegue baixar (é a ideia da Lei de Amdahl). O desequilíbrio também pesa: se um robô recebe pedidos demais, os outros ficam parados esperando o turno acabar.

    O impasse (deadlock): o macarrão pega a panela e depois a frigideira; o risoto pega a frigideira e depois a panela. Se os dois começam juntos, cada robô segura um utensílio e espera o outro para sempre. Para acontecer um impasse são necessárias quatro condições ao mesmo tempo: o recurso só pode ser usado por um de cada vez, quem segura um recurso espera por outro, ninguém tira o recurso de quem está segurando e há uma espera em círculo. A regra “sempre a panela antes da frigideira” quebra o círculo: é a mesma solução usada em sistemas operacionais e bancos de dados, que dão uma ordem fixa aos recursos.

    Metodologia sugerida: comece com a atividade desplugada do plano de aula (dobrar folhas sozinho e em grupo, uma tesoura só para todos). Depois, em duplas, os alunos usam a página com estas perguntas:

    Habilidade: EF08CO05 (paralelismo, concorrência e processamento distribuído). Combina com o plano de aula “Muitas mãos: paralelismo e sistemas distribuídos”. Material concreto equivalente: cartões de tarefa com o tempo de cada passo, uma única panela de brinquedo e uma frigideira, e alunos fazendo o papel dos robôs com um cronômetro.

    Continue explorando