Jobbövervakaren är en del av OS/2 kärnan och som arbetar på systemets lägsta nivå (för mer, se Omstarta Skrivbord sidan).

Jobbövervakaren är ansvarig för multikörning och multitrådning i OS/2. Eftersom du bara har en processor normalt, men förväntar dig att flera program skall köras samtidigt, växlar Jobbövervakaren mellan dessa program flera dussin gånger per sekund, så programmen tycks köras parallellt.

För att förstå de olika inställningarna på "Jobbövervakare" sidan i "OS/2 Kärna" objektet, kan följande förklaringar om hur OS/2 sköter processer och trådar vara till hjälp. På den inställningssidan kommer du få mer specifik information om de olika inställningarna via "Hjälp" knappen.

En tråd är den minsta enhet för att administrera programövergångar som OS/2 tillhandahåller. Ett program kan innehålla flera trådar men måste ha minst en tråd. Termen "tråd" valdes därför inom en tråd är programinstruktionerna utförda sekvensiellt, medan mellan trådar kan du aldrig vara säker på vilken tråds instruktion som kommer att utföras först.

Välprogrammerad OS/2 mjukvara använder flera trådar för att användaren skall få ett snabbt svar på sina indata och musrörelser. Till exempel om du utför ett kommando som tar lång tid i ett program, bör ett program starta en andra tråd för denna uppgift. Medan denna nya tråd arbetar i bakgrunden, är användargränssnittet (och huvudtråden för programmet) redo för nytt inflöde.

Sämre programmerad OS/2 mjukvara använder bara en tråd för både användargränssnittet och för att utföra uppgifter. Medan en uppgift utförs är därför användargränssnittet blockerat. Ett bra exempel på det kommer från IBM själv: i VIEW.EXE om du söker i hela biblioteket, är din dator fullständigt blockerad tills sökningen är komplett. Detta skulle ha varit perfekt för multitrådning.

Trådar ha olika prioritet. I allmänhet får en tråd med högre prioritet mer processortid än en med lägre prioritet. Det är särskilt sant om flera trådar har arbete att utföra, dvs tävlar om processortid. Det gäller inte för trådar som är "blockerade" därför att de har ingenting att göra. En blockerad tråd behöver ingen processortid och dess prioritet är sålunda betydelselös.

OS/2 kontrollerar trådprioritet på ett mycket raffinerat sätt. Det skiljer mellan fyra prioritetsklasser:

  1. "Tomgångstid prioritet" är den lägsta prioritetsklassen. En tråd får bara processortid om inga trådar av högre prioritetsklasser kräver det. Sådana trådar är bra för att avlasta arbete som kan fördröjas tills datorn har tid för det. Ett exempel på en sådan tråd är XFolder Worker som håller reda på väckta Skrivbordobjekt i ditt system. Det är ganska tidsödande, men inte tidskritiskt, så det görs med denna prioritet.
  2. "Vanlig prioritet" är den prioritetsklass som de flesta trådar använder. Det är också standard OS/2 prioritetsklassen om ingenting annat specifierats. Mellan trådar av denna klass varierar OS/2 dynamiskt prioritetsnivåerna (mer om detta nedan) för att försäkra sig om att inga trådar av denna klass "svälter", dvs inte får processortid.
  3. "Förinställd hög prioritet" är den näst högsta prioritetsklassen för trådar, som behöver förbereda data för "vanlig" klass utan att behöva bli fördröjda av de dynamiska prioritetsvariationerna för "vanliga" trådar. Detta görs ofta för meddelandeavsändare.
  4. "Tidskritisk prioritet" är den högsta prioritetsklassen för trådar som behöver bli utförda omedelbart när det finns arbete. En sådan tråd får processortid genast och blir inte avbruten förrän arbetet är slutfört. Denna klass används ofta för tidskritiska uppgifter, till exempel av nätverk och annan kommunikationsmjukvara.
Inom varje prioritetsklass kan man sätta en prioritetsnivå. Det är ett värde från -31 till +31 som ger företräde till en tråd inom en prioritetsklass.

Några exempel:

Å andra sidan en process är OS/2 termen för en applikation som har laddats i minnet. Varje process måste ha minst en tråd. Varje process innehåller vanliga data liksom kontrollerad access till systemresurser. Processer är skyddade mot varandra genom att OS/2 förhindrar access till det minne som inte tillhör processen ("minnesskydd"). Däremot kan flera trådar inom en process alla använda det minne som tillhör processen, därför att minnet sköts genom per-process basis. Samma sak gäller för andra systemresurser som t.ex. öppna filer.