¿por qué el cambio de contexto es malo para el rendimiento del ordenador?
El cambio de contexto, que se produce cuando la cpu pone en pausa un proceso y empieza a ejecutarse otro, puede afectar al rendimiento de un sistema informático por un par de razones. El acto de cambiar de contexto no consume mucho tiempo en sí mismo. El verdadero golpe al rendimiento viene del hecho de que los distintos procesos tienen distintos espacios de direcciones de memoria virtual, por lo que hay que invalidar y vaciar todas las cachés del sistema. Como hay una diferencia tan grande entre la velocidad a la que puede funcionar una CPU y la velocidad a la que pueden recuperarse instrucciones y datos de la memoria principal, estas cosas se almacenan cerca de la CPU en cachés integradas. Incluso un puntero a una asignación de direcciones virtuales a direcciones físicas se almacena en caché para que el acceso a la memoria sea más rápido. Cuando la CPU carga un nuevo proceso con un espacio de direcciones y una asignación de direcciones virtuales a físicas diferentes, todos los datos de las cachés dejan de ser válidos y hay que vaciarlos. Esto deja a la CPU con cachés vacías que tienen que reconstruirse desde cero para el nuevo proceso, lo que significa que habrá una gran ralentización en la recuperación de instrucciones y datos, ya que ahora vendrán de la memoria principal, que es mucho más lenta que la caché de la CPU.
why is context switching bad for computer performance?
context switching, which occurs when a process is paused by the cpu and another process starts running can affect performance of a computer systems for a couple of reasons. The act of switching the context is not in itself very time consuming. The real performance hit comes from the fact that different processes have different virtual memory address spaces so all the caches in the system need to be invalidated and flushed. Since there is such a huge difference in how fast a cpu can run compared to how fast instructions and data can be retrieved from main memory, these things are cached close to the cpu in onboard caches. Even a pointer to a mapping of virtual addresses to physical addresses are cached so that memory access is faster. When a new process gets loaded by the cpu with a different address space and mapping of virtual to physical addresses, all of the data in the caches is invalid and needs to be flushed. This leaves the cpu with empty caches that have to be rebuilt from scratch for the new process, meaning there will be a big slowdown in retrieving instructions and data since these will now be coming from main memory, which is much slower than the cpu's cache.