edit:
(Onderstaande post is niet helemaal van toepassing, zie ook het commentaar van Onno hieronder.)
Uit het artikel:
Deze feature houdt in dat verschillende processors tegelijk bezig kunnen zijn met aparte processen.
Dit is juist
niet wat SMP inhoudt; dit is hoe systemen als OpenBSD, NetBSD en FreeBSD werkten voordat SMP geïmplementeerd werd (en ook NT4 en Linux voor versie 2, trouwens).
Onder moderne besturingssystemen wordt onderscheid gemaakt tussen processen en threads. Als je een executable start wordt er in principe één proces gestart; dit proces bestaat uit een enkele thread (een reeks instructies die achtereenvolgens uitgevoerd wordt). Binnen een proces kunnen meerdere threads gestart worden; dan worden dus min of meer parallel twee procedures uitgevoerd, die wel van gezamelijk geheugen gebruik maken. Dit is bijvoorbeeld het geval als een webbrowser meerdere plaatjes tegelijk wil downloaden; meerdere langlopende threads, die elk niet al te CPU-intensief zijn.
In een systeem met een enkele processor worden verschillende threads niet echt parallel uitgevoerd. De processor voert dan gewoon steeds een paar instructies uit de ene thread uit, en schakelt dan over naar een andere thread. Als er snel genoeg gewisseld wordt, lijken de threads gelijktijdig te executeren. Als een systeem meerdere processoren bevat, onstaan er echter grote problemen doordat twee processoren hetzelfde geheugen moeten benaderen. Nu kan het opeens voorkomen dat twee instructies tegelijkertijd hetzelfde geheugen willen wijzigen. Om problemen hiermee te voorkomen, wordt in traditionele besturingssystemen maximaal één processor aan een proces toegekend. (Vervolgens moeten in de kernel nog wel een aantal voorzorgsmaatregelen worden genomen, maar dat terzijde.)
Dit systeem wordt assymmetric multi-processing genoemd, omdat de processorkracht niet gelijkmatig verdeeld wordt over alle threads. Het werkt heel aardig, omdat beide processoren in principe nuttig werk doen, maar als er één CPU-intensief proces actief is (zoals een grafische applicatie of een game) dan kan deze maar de capaciteit van één processor benutten. Dat is dus niet ideaal. Symmetric multi-processing (SMP) beoogt juist het tegenovergestelde: het gelijkelijk verdelen van processorcapaciteit over alle threads. Dat is dus ook precies wat nu in OpenBSD geïmplementeerd is: verschillende processoren die tegelijk bezig kunnen zijn met
hetzelfde proces (en dus niet wat er in het artikel vermeldt staat).
(Interessant detail is dat onder Linux op kernel-nivo bijna geen onderscheid gemaakt wordt tussen processen en threads. Vandaar dat het relatief makkelijk was om SMP onder Linux te implementeren, en Linux had dus relatief vroeg ondersteuning voor SMP.)