Acabo de ejecutar dot
(un programa para dibujar gráficos dirigidos) con un archivo de entrada que era tan grande que no se podía procesar en un tiempo razonable.
Todo mi sistema se congeló. Apenas podía llegar a una consola de texto con Ctrl+ Alt+ F1para matar dot
, pero me llevó varios minutos.
¿Por qué el sistema permite algo como esto? ¿Por qué ofrece un programa no crítico como el dot
99% del sistema y usa el 1% restante para responder?
scheduling
Christoph Wurm
fuente
fuente
Respuestas:
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 porquedot
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 sacardot
cosas de la memoria para que puedaX
volver a la memoria yX
poder ver las claves simplemente presionas y te mueves al terminal de texto, luego el kernel tiene queX
salir de la memoria para ladot
que aún se está ejecutando, y luego también moverlodot
para mover los procesos del terminal de texto (¿tal vezlogin
?) 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 cargarps
(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 solicitarlaps
desde el sistema de archivos) .fuente