O sistema operacional cria "threads" ou "tarefas" para cada unidade seqüencial de trabalho (ou seja, um programa simples). O sistema operacional mantém uma fila de threads / tarefas que estão prontas para serem executadas e, cada vez que uma CPU se torna disponível, o sistema operacional atribui a ela um thread / tarefa "pronta".
Uma CPU fica disponível porque o encadeamento / tarefa executado anteriormente foi finalizado ou porque precisa aguardar a E / S do disco ou a resposta da rede ou a entrada do usuário ou o que for. Quando um tópico / tarefa em espera satisfaz o motivo de sua espera, ele é colocado de volta na fila "pronto".
Em essência, cada thread / tarefa é uma "CPU virtual", e o SO atribui essas "CPUs virtuais" a CPUs reais.