Así es como funcionan GNU / Linux y otros sistemas multitarea, comparten el procesador entre los procesos en ejecución, dot
no tendrán el 99%, sino el 100% durante el 99% del tiempo. Cada proceso domina el procesador durante un cierto período de tiempo.
Esto lo manejan los programadores (Linux tiene varios programadores, algunos solo emplean la estrategia habitual, algunos intentan dar más tiempo a las interfaces de usuario, etc.).
Ahora, en su caso, el problema era, probablemente, que dot
no tomaba mucho tiempo del procesador, sino mucha memoria. Y cuando un programa usa demasiada memoria, hay una agitación , que es exactamente un proceso que hace que el sistema se congele, no porque dot
esté haciendo mucho, sino porque el núcleo tiene que mover las páginas de memoria de un lado a otro entre el disco (intercambio de partición) y la memoria del sistema.
Incluso si dot
solo tomara el 99% del tiempo de CPU, lo más probable es que cambiar a un terminal de texto sea casi inmediato, lo que sucede es que el kernel tiene que sacar dot
cosas de la memoria para que pueda X
volver a la memoria y X
poder ver las claves simplemente presionas y te mueves al terminal de texto, luego el kernel tiene que X
salir de la memoria para la dot
que aún se está ejecutando, y luego también moverlo dot
para mover los procesos del terminal de texto (¿tal vez login
?) de nuevo en la memoria. (Si esto se ve desordenado, no sólo porque el ejemplo es desordenado - la realidad es esta . Desordenado)
Un ejemplo es que si inicia sesión en el terminal de texto, puede presionar teclas, retroceder y felizmente sucederá en tiempo real, pero si hace algo tan simple como ejecutar una herramienta pequeña ps
, se "congelará" "por un tiempo porque tiene que liberar memoria para cargar ps
(y también tiene que esperar en la cola de E / S del disco, que se está utilizando mucho para mover datos hacia y desde la memoria, hasta que pueda solicitarla ps
desde el sistema de archivos) .