Omdat u meestal maar ‚‚n procesor heeft, maar verwacht dat verschillende taken op hetzelfde moment worden uitgevoerd, schakelt &os2; tientallen malen per seconde tussen de taken. Met als resultaat, dat het lijkt of deze programma's parallel lopen. Dit wordt multitasking genoemd.

Maar zelfs als u een multi-processor (SMP) systeem heeft, zullen er altijd meer processen dan processors in uw systeem zijn, dus is schakelen nog steeds nodig.

Een thread is een &os2; eenheid voor het bijhouden van het schakelen van een taak. Een programma kan diverse threads bevatten, maar per definitie, heeft het er op z'n minst ‚‚n. Maar omdat een programma meer dan ‚‚n thread kan bevatten kan zelfs schakelen tussen threads in hetzelfde programma plaatsvinden. Dit wordt multithreading genoemd. In tegenstelling tot menig ander besturingssysteem ondersteunt &os2; dit volledig en het doet het zelfs op een zeer vriendelijke en betrouwbare manier.

Het deel van de kernel van &os2; dat schakelt tussen de threads wordt de "Planner" genoemd.

De term "thread" werd gekozen omdat in ‚‚n thread de programma instructies achter elkaar worden uitgevoerd, terwijl je er tussen threads nooit zeker van kunt zijn welke instructie uit ‚‚n thread wordt uitgevoerd voor of na een instructie uit een andere thread. Het is alleen &os2; die het schakelen tussen threads doet zonder dat de thread er zelf van weet (of, op SMP-systemen, threads kunnen werkelijk tegelijk op verschillende processors lopen).

Goed geprogrammeerde software gebruikt verschillende threads om er zeker van te zijn dat de gebruiker snel resultaat ziet van zijn invoer en muisacties. B.v. Als u een opdracht uitvoert in een programma dat een hele tijd kan duren, moet een programma een tweede thread starten voor deze taak. Terwijl deze nieuwe thread op de achtergrond blijft werken, is de gebruikersinterface (van de hoofd thread van het programma) weer klaar voor nieuwe invoer.

Niet zo goed geprogrammeerde software gebruikt slechts ‚‚n thread voor zowel de gebruikersinterface als de uit te voeren taken. Met als resultaat dat, als een taak wordt uitgevoerd, de gebruikersinterface geblokkeerd is.

Threads kunnen verschillende prioriteiten hebben. Zie: &xwp;: "Thread prioriteiten" voor details.

Aan de andere kant, een proces is de &os2; term voor een applicatie die in het geheugen is geladen. Elk proces moet op z'n minst ‚‚n thread bevatten.

Ieder proces bevat zowel gewone gegevens als toegangscontrole tot systeembronnen. Processen zijn tegen elkaar beschermd d.w.z. dat &os2; toegang tot geheugen dat niet tot een proces behoort, verhindert ("geheugen bescherming").

Daar tegenover staat dat verschillende threads in een proces allemaal toegang hebben tot het geheugen van dat proces, omdat het geheugenbeheerd wordt per proces. Hetzelfde geldt voor andere systeembronnen zoals open bestanden.

Opsomming: Een thread is het &os2; kernel concept voor het beheer van het eigendom van de CPU. Daartegenover staat dat een proces het concept is voor het toe-eigenen van al het andere: bestanden, apparaten en geheugen.

Kijk voor meer informatie in de onderstaande onderwerpen: