Skip to content

Repositório destinado ao Trabalho de Conclusão de Disciplina de Sistemas Operacionais da Engenharia Mecatrônica UFU, com o tema Mutithreading C Programming for Multicore computer.

Notifications You must be signed in to change notification settings

luis-cmenezes/multithreading-C-multicore-computer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GitHub last commit GitHub repo size GitHub top language

Multithreading C Programming for Multicore Computer

O projeto, apresentado como Trabalho de Conclusão da disciplina Sistemas Operacionais, visa redigir um relatório técnico com objetivo de analisar o impacto da programação multithread voltada à engenharia, através de uma análise quantitativa do tempo de execução da multiplicação de matrizes com muitos elementos executando em 1, 2 e 4 threads, com e sem afinidade de processador.

Planejamento do estudo de caso

O estudo de caso para relatório tem o seguinte planejamento:

  • Desenvolvimento dos códigos Single e Multi-Thread
  • Criação de um código de "carga de fundo"
  • Experimento e obtenção dos tempos de execução
  • Estátistica dos resultados obtidos
  • Redação do relatório técnico

💻 Conclusões

Os resultados evidenciam o comportamento esperado para as condições propostas. Com o tempo de execução da aplicação diminuindo proporcionalmente à quantidade threads criadas, com a execução em single thread como referência, a execução em dual thread executou em metade o tempo, e em quad thread um quarto do tempo original, para o cenário sem afinidade de processador.

Para o cenário com afinidade de processador, observa-se que apesar de causar a impressão de seguir a mesma tendência que o cenário anterior, na execução em quad thread observa-se uma grande discrepância entre os tempos de execução com e sem afinidade de processador.

Tal comportamento anômalo pode ser atribuído a certas características intrínsecas dos sistemas operacionais de uso geral modernos. Especificamente, as otimizações de balanceamento de carga no escalonador de processos desempenham um papel significativo. Quando há a execução concorrente de uma carga de fundo e outros processos do sistema operacional, as threads da aplicação em questão provavelmente competem pelo tempo de processador se a afinidade for definida.

Por outro lado, quando a afinidade não é definida, é provável que a aplicação seja realocada várias vezes entre processadores durante sua execução, com o objetivo de equilibrar a carga em cada processador e minimizar a utilização de cada núcleo. Essa abordagem visa reduzir o tempo de execução, especialmente para aplicações com baixa prioridade de execução e característica de uso intensivo de CPU.

Em vista disso, a subdivisão de macrotarefas em subtarefas executadas por diferentes threads é uma boa solução para problemas análogos ao proposto neste trabalho, visto que melhor utiliza os recursos computacionais disponíveis e resulta em melhor desempenho da aplicação, sem causar ônus exagerado em contrapartida.

🤝 Colaboradores

Agradeço às seguintes pessoas que, junto à mim, desenvolveram este estudo:

About

Repositório destinado ao Trabalho de Conclusão de Disciplina de Sistemas Operacionais da Engenharia Mecatrônica UFU, com o tema Mutithreading C Programming for Multicore computer.

Resources

Stars

Watchers

Forks