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.