Multiprogramarea este unul dintre tipurile de bază de procesare paralelă care poate fi folosită în multe medii diferite. În esență, face posibil ca mai multe programe să fie active în același timp, în timp ce rulează în continuare printr-un singur procesor. Funcționalitatea sa în acest mediu implică un proces continuu de realizare secvențială a sarcinilor asociate cu funcția unui program, apoi trecerea la rularea unei sarcini asociate cu următorul program.
Acest tip de procesare este foarte diferit de multiprocesare deoarece, deși pot fi mai multe programe active în prezent, uniprocesorul nu execută simultan comenzi pentru toate programele. În schimb, procesorul se adresează fiecărui program, execută o singură comandă, apoi trece la următorul program din coadă. Programul anterior rămâne activ, dar intră într-o stare pasivă până când uniprocesorul revine în fruntea cozii și execută o a doua comandă.
Din punctul de vedere al utilizatorului final, procesul este fără întreruperi. În ceea ce privește funcționalitatea reală, utilizatorul pare să folosească mai multe aplicații diferite în același timp. Acest lucru se datorează faptului că multiprogramarea utilizează uniprocesorul pentru a executa comenzile rapid. Rezultatul final este că un utilizator observă un timp de întârziere mic sau chiar deloc atunci când minimizează o aplicație pentru a îndeplini o sarcină asociată cu o altă aplicație.
Mecanismul din multiprogramare este cunoscut sub numele de întrerupere. Fiecărei sarcini i se acordă o anumită perioadă de timp pentru procesare înainte ca sistemele de operare să treacă la următorul program și la următoarea sarcină. Într-un fel, această metodă se referă la jonglarea cu mai multe sarcini în același timp, efectuarea rapidă a unei părți a acțiunii necesare, apoi trecerea la a face ceva cu o sarcină diferită înainte de a reveni la locul de muncă anterior.
Memoria este importantă pentru ca această formă de procesare să funcționeze corect. Trebuie să existe suficientă capacitate pentru a se asigura că, dacă un program din coada rotativă întâmpină o problemă, nu previne întârzierile sau nu afectează funcționarea altor aplicații deschise. În același timp, ar trebui să existe un anumit tip de protecție a memoriei. Dacă nu este cazul, atunci o problemă cu o aplicație poate crea un efect în cascadă care închide sau cel puțin încetinește celelalte aplicații deschise.