Aplicativos multithread em uma única CPU threaded?

Aplicativos multithread em uma única CPU threaded?

A motivação por trás desta questão surge da exploração doPlaca Intel Galileo gen2que possui um único processador threaded.

  • Estou procurando uma explicação conceitual sobre o que isso significa para todos os aplicativos do espaço do usuário que dependem da existência de threading.
  • Isso significa que o kernel precisa ser corrigido para que as chamadas do sistema para a invocação de threading sejam emuladas no software em vez de depender do suporte de threading da CPU?

Responder1

Os sistemas multitarefa lidam com vários processos e threads, independentemente do número de processadores ou núcleos instalados no sistema e do número de "threads" que eles controlam. A multitarefa funciona usando divisão de tempo: o kernel e cada processo ou thread em execução passam algum tempo em execução e, em seguida, o sistema muda para o próximo thread executável. As trocas acontecem com muita frequência, o que dá a impressão de que tudo está funcionando em paralelo, mesmo quando não está.

Tudo isso acontece sem qualquer alteração nas APIs, etc. Os sistemas multi-core precisam ser capazes de executar mais threads do que suportam fisicamente, de qualquer maneira, o caso de núcleo único é apenas um exemplo disso.

Descrever uma CPU como single-threaded refere-se amultithreading simultâneo(SMT, ou hyper-threading no mundo Intel), não a capacidade da CPU de executar vários threads (ou processos ou tarefas). Adicionar recursos SMT a uma CPU não adiciona nenhuma instrução para ajudar na execução de threads, apenas permite um melhor uso do hardware em algumas circunstâncias.

informação relacionada