I utgangspunktet gikk multitasking ut på å bytte mellom prosesser, som hver utførte sin kode uavhengig av de andre og hadde sitt eget separate minneområde. Etterhvert begynte man å lage prosesser som samarbeidet med hverandre. For eksempel kunne et program starte opp en ny prosess for å utføre bakgrunnsarbeid mens hovedprosessen fortsetter å svare på brukerens kommandoer. Det at prosessene hadde separate minneområder ble nå et problem som gjorde datautveksling vanskelig.