@ Evanescence: Multitasking wird nicht von der Hardware verwaltet, sondern vom Betriebssystem. Also einer Software.
Mag sein, dass in einem Mehrkern-Prozessor auch eine Aufteilung der Arbeit steckt, aber im wesentlichen werden die Aufgaben vom Betriebssystem verwaltet und priorisiert.
Eine Hardware ist nur so gut, wie die Software selbst.
Stell dir vor, du schreibst ein Algorithmus für ein Problem und lässt diesen dann in Assembler übersetzen und siehst, dass dein Algorithmus 1000 Recheninstruktionen benötigt. Ein Kumpel von dir soll ebenfalls ein Algorithmus für das selbe Problem finden.Er lässt seine Lösung auch in Assembler übersetzen und stellt fest, dass er nur 500 Instruktionen benötigt. Wegen der Einfachheit sagen wir mal, dein Algoritmus braucht dann 1 Sekunde (= 1000 ms) und der von deinem Kumpel nur 1/2 Sekunden (= 500 ms)
Dieser Algorithmus soll aber nun 100 Mal hintereinander ausgeführt werden. Deiner würde nun 100 Sekunden daueren, während der von deinem Kumpel nur 50 Sekunden dauert. Welchen Algorithmus würdest du nun empfehlen? Oder würdest du es immernoch egal finden? Dann mach den Kunden mal klar, dass er 50 Sekunden länger warten muss. Oder möchtest du dem Kunden lieber raten, dass er sich einen größeren Server kaufen soll, damit auch dein Algorithmus 50 Sekunden braucht? Dann würde aber der Algorithmus von deinem Kumpel auf dem neuen Server immernoch schneller sein, als deiner. Die Zahlen sind zwar blödsinn, da nicht jede Recheninstruktion gleich schnell ist, aber die sollen das Problem verdeutlichen. Dies ist auch kein exotisches Beispiel. Das ist ein Beispiel er im richtigen Programmieralltag vorkommt.