Zoals vrijwel iedereen wel weet, houdt multi-tasking in, dat de PC met meerdere programma’s tegelijkertijd bezig kan zijn. In Windows maakt iedereen er wel gebruik van dat het mogelijk is om meerdere programma’s tegelijkertijd open te hebben staan. Bij SMP besturingssystemen begint hier het eerste voordeel van een multi-processor systeem. Als er meerdere programma’s tegelijkertijd draaien, worden er meerdere threads aangeboden aan de HAL. De HAL kan deze threads dan zo eerlijk mogelijk verdelen over de beschikbare CPU’s. Als de PC bijvoorbeeld twee CPU’s heeft en de gebruiker met twee programma’s tegelijkertijd bezig is, zal de HAL programma 1 op CPU 1 plaatsen en programma 2 op CPU 2. Dit is te zien in onderstaande figuur.
Niet alleen behalen we hier een grote snelheidswinst vergeleken met een enkel processor systeem, aangezien er twee CPU’s tegelijkertijd bezig zijn, maar we sparen ons ook een groot aantal task-switching instructies uit, die bij een enkele CPU wel noodzakelijk waren. Personen die iets meer thuis zijn in de wereld van processorarchitecturen weten dat task-switching (het overgaan van het ene programma naar het andere programma) een taak van de CPU is die redelijk veel tijd kost. Alle informatie van programma 1 moet uit de registers gehaald worden en opgeslagen worden in het geheugen. Alle informatie van programma 2 moet dan weer uit het geheugen geladen en in de registers geplaatst worden. Dit hele proces neemt bij iedere task-switch enkele klokslagen in beslag. Bij multi-tasking met één CPU krijgt ieder programma steeds een korte tijd de CPU tot zijn beschikking. Na deze korte tijd is weer het volgende programma aan de beurt. Hierdoor zal het task-switching systeem zeer vaak gebruikt worden, wat een aanzienlijk gedeelte van de processorperformance opslokt. Bij meerdere CPU’s hoeft er minder task-switching per CPU te gebeuren, waardoor er meer processortijd overblijft voor de echt “nuttige” zaken.
Ook als je eigenlijk maar met één programma tegelijkertijd bezig bent, heeft een multi-processor systeem wel degelijk nut. Terwijl je met een programma bezig bent, voert het besturingssysteem zelf op de achtergrond namelijk ook nog een groot aantal taken uit. In ons voorbeeld van het dual-processor systeem houdt dit in dat het gebruikte programma een gehele CPU tot zijn beschikking krijgt en het besturingssysteem zijn taken uitvoert op de tweede CPU. Dit is te zien in onderstaande figuur.
Aangezien twee programma’s nooit evenveel processorperformance vragen, is het wel duidelijk dat de snelheidswinst van multi-processor systemen door multi-tasking vrijwel nooit 100% is.
De performancemonitor van Windows NT toont bij een dual-processor systeem duidelijk dat Windows NT de verschillende taken zo goed mogelijk probeert te verdelen over de twee CPU’s.