Warum ist Kontextwechsel schlecht für die Computerleistung?
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.
Der Kontextwechsel, der stattfindet, wenn ein Prozess von der CPU angehalten wird und ein anderer Prozess läuft, kann die Leistung eines Computersystems aus mehreren Gründen beeinträchtigen. Das Umschalten des Kontexts ist an sich nicht sehr zeitaufwändig. Der eigentliche Leistungsverlust entsteht dadurch, dass die verschiedenen Prozesse unterschiedliche virtuelle Speicheradressräume haben, so dass alle Caches im System ungültig gemacht und geleert werden müssen. Da es einen großen Unterschied zwischen der Geschwindigkeit der CPU und der Geschwindigkeit, mit der Anweisungen und Daten aus dem Hauptspeicher abgerufen werden können, gibt, werden diese Dinge in der Nähe der CPU in Onboard-Caches gespeichert. Sogar ein Zeiger auf eine Zuordnung von virtuellen Adressen zu physischen Adressen wird zwischengespeichert, damit der Speicherzugriff schneller ist. Wenn ein neuer Prozess mit einem anderen Adressraum und einer anderen Zuordnung von virtuellen zu physischen Adressen von der CPU geladen wird, sind alle Daten in den Caches ungültig und müssen geleert werden. Das bedeutet, dass die CPU leere Caches hat, die für den neuen Prozess von Grund auf neu aufgebaut werden müssen. Das bedeutet, dass der Abruf von Anweisungen und Daten stark verlangsamt wird, da diese nun aus dem Hauptspeicher kommen, der viel langsamer ist als der Cache der CPU.
open_qa
de