Moniohjelmoiva käyttöjärjestelmä on sellainen, jonka avulla loppukäyttäjät voivat käyttää useampaa kuin yhtä ohjelmaa kerrallaan. Tällaisen järjestelmän kehittäminen, ensimmäinen tyyppi, joka salli tämän toiminnon, oli merkittävä askel kehittyneiden tietokoneiden kehittämisessä. Tekniikka mahdollistaa tietokoneen keskusyksikön (CPU) vaihtaa kahden tai useamman käynnissä olevan tehtävän välillä, kun suoritin on käyttämättömänä.
Varhaiset tietokoneet oli suurelta osin omistettu suorittamaan yksi ohjelma – tai tarkemmin sanottuna yksi ohjelman käynnistämä tehtävä – kerrallaan. Tehtävien käsitteen ymmärtäminen on avain moniohjelmoivan käyttöjärjestelmän toimintaan. ”Tehtävä” on pieni komentojen sarja, joka yhdistettynä käsittää käynnissä olevan ohjelman suorittamisen. Jos ohjelma on esimerkiksi laskin, yksi ohjelman tehtävistä olisi tallentaa loppukäyttäjän syöttämät numerot.
Moniohjelmoiva käyttöjärjestelmä analysoi tietokoneen nykyisen suorittimen toiminnan. Kun suoritin on käyttämättömänä – kun se on tehtävien välissä – sillä on mahdollisuus käyttää kyseistä seisokkiaikaa toisen ohjelman tehtävien suorittamiseen. Tällä tavoin useiden ohjelmien toiminnot voidaan suorittaa peräkkäin. Esimerkiksi, kun suoritin odottaa loppukäyttäjän syöttävän laskettavat numerot, sen sijaan että se olisi täysin käyttämättömänä, se voi suorittaa käyttäjän käyttämän verkkosivun osien lataamisen.
Tämän toiminnon tärkein etu on, että se voi vähentää hukkaan kuluvaa aikaa järjestelmän toiminnassa. Kuten liiketoiminnassa, tehokkuus on avain saada eniten voittoa yrityksestä. Tämän tyyppisen käyttöjärjestelmän käyttö poistaa järjestelmän hukan varmistamalla, että tietokoneen suoritin toimii suurimmalla kapasiteetilla enemmän aikaa. Tämä johtaa tasaisempaan tietojenkäsittelykokemukseen loppukäyttäjän näkökulmasta, koska ohjelmakomennot suoritetaan jatkuvasti taustalla jatkuvasti, mikä nopeuttaa ohjelmien suorittamista.
Moniohjelmoiva käyttöjärjestelmä on suurelta osin korvattu uuden sukupolven käyttöjärjestelmällä, joka tunnetaan nimellä monitehtäväkäyttöjärjestelmät. Monitehtäväkäyttöjärjestelmässä järjestelmän ei tarvitse odottaa tehtävän suorittamista ennen kuin hän siirtyy työskentelemään aktiivisen ohjelman parissa. Sen sijaan se voi keskeyttää käynnissä olevan ohjelman milloin tahansa siirtääkseen suorittimen resurssit toiseen aktiiviseen ohjelmaan. Tämä mahdollistaa dynaamisemman lähestymistavan samanaikaisten ohjelmien käsittelyyn.