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.
Por que é que mudar de contexto é mau para o desempenho do computador?
A mudança de contexto, que ocorre quando um processo é interrompido pela CPU e outro processo é executado, pode afetar o desempenho de um sistema de computador por um par de razões. O ato de mudar o contexto não é em si mesmo muito demorado. O impacto real do desempenho vem do fato de que diferentes processos têm diferentes espaços de endereços de memória virtual, então todos os caches no sistema precisam ser invalidados e desligados. Como há uma diferença tão grande em quão rápido uma CPU pode ser executada em comparação com a rapidez com que as instruções e os dados podem ser recuperados da memória principal, essas coisas são armazenadas em cache perto da CPU em caches on-board. Até mesmo um ponteiro para um mapeamento de endereços virtuais para caches físicos são armazenados para que o acesso à memória seja mais rápido. Quando um novo processo é carregado pela cpu com um espaço diferente e mapeamento de endereços virtuais para endereços físicos, os dados em caches e caches inválidos precisam ser desligados. Isso significa que o processo de desligamento será muito mais lento do que o de todos os dados vindo da memória principal, já que o processo de recuperação de todas essas instruções e desligamento será muito mais lento, o que significa que o processo de desligamento será muito mais lento do que o processo de recuperação.