Um sistema operacional geralmente "retira um processador" de um encadeamento de controle sempre que o encadeamento em execução faz uma chamada ao sistema, ou quando há uma interrupção no relógio ou alguma outra interrupção.
Ou seja, o encadeamento em execução invoca o kernel por meio de uma chamada de sistema read()
ou write()
ou gettimeofday()
. O manipulador de chamadas do sistema não apenas realiza o trabalho de leitura ou gravação ou o que quer que seja, ele também acaba descobrindo se deve retornar ao encadeamento que o invocou, ou se algo mais deve ser executado. Esse "descobrir" é o Gerenciador de processos.
Um programa que está ligado à CPU (não faz chamadas de sistema de leitura / gravação / abertura / fechamento) ainda terá a CPU sendo tirada dele de tempos em tempos pela interrupção do temporizador. Um relógio especial interrompe a CPU 10 ou 60 ou 1000 vezes por segundo. O manipulador de interrupção, entre outras coisas, decide qual encadeamento fornecerá à CPU para o próximo intervalo de tempo.
Outras interrupções podem acontecer também no mouse, no teclado, na placa de rede ou na unidade de disco.
Você pode dizer que o "Process Manager" é sempre executável porque o código em manipuladores de interrupção e manipuladores de chamada do sistema sempre o chama.