Informações úteis para a 3ª semana do 1º exercício do projeto

7 janeiro 2022, 13:47 Paolo Romano

Caros estudantes,

Na próxima semana retomamos a atividade letiva (aulas teóricas, laboratoriais, horários de dúvidas).

A próxima semana corresponde à 3ª e última semana letiva dedicada ao 1º exercício do projeto. Para melhor prepararem essa última etapa do 1º exercício, deixamos abaixo algumas informações úteis.


1) Horários de dúvidas

Como voltamos ao período letivo, os horários de dúvidas são também retomados.

Alguns dos horários de dúvidas passarão a ser oferecidos em regime online, por zoom.

Houve também algumas ligeiras alterações de horários.

Essa informação foi atualizada na secção "Horário de dúvidas".


2) Piazza

Relembramos que o piazza continua disponível para colocar questões e também é um bom recurso para consultar a resposta a perguntas mais frequentes colocadas por outros colegas.

Recentemente, passámos a selecionar aquelas perguntas/respostas mais importantes (que julgamos serem úteis a todos os grupos) no pasta “reading list” do piazza.

Recomendamos a todos os grupos que consultem o piazza regularmente e prestem especial atenção às perguntas/respostas na pasta “reading list”.


3) Algumas dicas para abordar o 3º requisito

Para a maioria dos grupos, será na próxima que começam a resolver o 3º requisito do projeto. Antes de implementarem a vossa solução para o 3º requisito, é importante terem um bom desenho da vossa estratégia de sincronização.


Em particular, assegurem-se que sabem responder às seguintes questões:

  • Quais as estruturas de dados partilhadas que precisam proteger com algum trinco?

  • Para cada estrutura de dados, é mais apropriado usar um trinco único ou trincos finos (um trinco por cada elemento da estrutura, e.g. cada entrada de uma tabela)? Aqui faz sentido ponderar se uma opção por trincos finos permite, de facto, ganhos relevantes de paralelismo e se o seu custo de memória/computação não é exagerado. Sempre que a resposta seja negativa, uma solução simples de um único trinco a proteger a estrutura de dados inteira (e.g., a tabela inteira) é a mais apropriada.

  • Para cada trinco, se usar simplemente um mutex ou há vantagem em recorrer a um trinco de leitura-escrita (rwlock)? Aqui a questão essencial é se a estrutura de dados partilhada se existem operações/secções críticas de leitura apenas (read-only) que acedam à estrutura de dados a proteger e que, previsivelmente, serão executadas frequentemente. Se sim, um trinco de leitura-escrita será conveniente; caso contrário, um mutex é alternativa melhor, pois é mais leve.


Finalmente: depois de terem a vossa estratégia desenhada, apresentem-na a um docente (por exemplo, no vosso turno laboratorial ou num horário de dúvidas) para ele vos dar a sua apreciação. Só depois passem à implementação.


Bom trabalho!