É assim que o GNU / Linux e outros sistemas de multitarefa funcionam, eles compartilham o processador entre os processos em execução, dotnão terão 99%, mas 100% durante 99% do tempo. Cada processo domina o processador por um determinado período de tempo.
Isso é tratado pelos agendadores (o linux possui vários agendadores, alguns apenas empregam a estratégia usual, outros tentam dar mais tempo às interfaces do usuário e assim por diante).
Agora, no seu caso, o problema era - provavelmente - isso dotnão estava demorando muito tempo no processador, mas muita memória. E quando um programa usa muita memória, há uma debulha , que é exatamente um processo que congela o sistema, não porque dotestá fazendo muito, mas porque o kernel precisa mover as páginas de memória para frente e para trás entre o disco (partição swap) e a memória do sistema.
Mesmo se dotconsumisse apenas 99% do tempo da CPU, as chances são de que a mudança para um terminal de texto seria quase imediata, o que acontece é que o kernel precisa mover dotcoisas da memória para poder Xvoltar à memória para Xpoder ver as chaves. você apenas pressiona e move para o terminal de texto e, em seguida, o kernel precisa Xsair da memória para o dotqual ainda está sendo executado, e também dotpara mover os processos do terminal de texto (talvez apenas login?) de volta na memória. (Se isso parece confuso, não é apenas porque o exemplo é confuso - a realidade é esta . Confuso)
Um exemplo é que, se você fizer login no terminal de texto, poderá pressionar teclas, pressionar backspace e, felizmente, isso acontecerá em tempo real, mas se você fizer algo tão simples quanto executar uma ferramenta pequena como ps, ela "congelará". "por um tempo porque ele precisa liberar memória para carregar ps(e também precisa aguardar na fila de E / S do disco, que está sendo muito usada para mover dados da e para a memória, até poder solicitar psdo sistema de arquivos) .