Il sistema operativo è il software più importante e il cuore del computer che non solo gestisce la memoria e i processi all'interno di un computer, ma consente anche agli utenti di eseguire il software applicativo. È un insieme collettivo di programmi che astraggono l'hardware del sistema e presentano agli utenti una macchina virtuale completa. Oltre alle attività di base come il monitoraggio di file o directory, il controllo dei dispositivi periferici, l'invio di output sullo schermo, l'OS serve anche scopi più alti come la multiprogrammazione e il multitasking per assicurarsi che i programmi in esecuzione simultaneamente non interferiscano l'uno con l'altro. I moderni sistemi operativi non solo facilitano l'elaborazione parallela, ma anche il timesharing che è solo un concetto di multiprogrammazione. Il multitasking è solo una forma rudimentale di multiprogrammazione utilizzata in un contesto diverso.
La multiprogrammazione è la possibilità per più di un utente di utilizzare il computer alla volta usando una singola CPU. L'idea è di utilizzare efficacemente il processore per creare più processi pronti all'uso con ogni processo che appartiene a diversi utenti. Se il processo corrente si blocca per qualche motivo, poiché deve attendere alcuni eventi particolari, il sistema operativo assegna la CPU a un altro processo nella coda. L'intera operazione è facilitata dai sistemi operativi multiprogrammazione per massimizzare l'utilizzo della CPU in modo da ridurre il tempo di inattività della CPU. L'idea è di mantenere la CPU occupata il più a lungo possibile.
Multitasking significa esecuzione simultanea di più processi da parte di un utente sullo stesso computer che utilizza più CPU. Ad esempio, in un sistema operativo multitasking, è possibile lavorare su un documento word con un programma mentre si ascolta la musica come la stessa ora con un altro programma. Il multitasking è efficace quando i programmi su un calcolo richiedono un alto grado di parallelismo. Si basa sul concetto di condivisione del tempo perché più processi o attività possono essere commutati di conseguenza in un intervallo di tempo regolare, in modo che gli utenti ottengano l'idea che vengano eseguiti contemporaneamente.
Il termine multiprogrammazione è una forma rudimentale di elaborazione parallela che significa che più processi vengono eseguiti simultaneamente nello stesso momento su un singolo processore. Il termine viene utilizzato nei moderni sistemi operativi quando più programmi o processi vengono eseguiti su un singolo processore ed è compito del sistema operativo gestire tutti i processi in modo efficace ed efficiente. Il multitasking si riferisce alla capacità del sistema operativo di eseguire più attività alla volta utilizzando più CPU. Fondamentalmente utilizza due o più CPU all'interno di un singolo sistema per l'assegnazione di attività che condividono risorse comuni tra cui CPU e memoria.
La multiprogrammazione si basa sul concetto di commutazione di contesto che è una procedura standard che facilita il passaggio della CPU da un processo a un altro utilizzando una singola CPU. Memorizza lo stato di un processo attivo per la CPU nel Process Control Block (PCB) in modo che il processo riprenda dallo stesso stato. Il multitasking, d'altra parte, si basa sul concetto di condivisione del tempo che è una tecnica utilizzata per fornire a ciascun utente una porzione del sistema condiviso nel tempo che consente agli utenti di condividere le stesse risorse contemporaneamente. È un'estensione logica della multiprogrammazione.
Entrambi i termini condividono quasi lo stesso significato e sono i termini comuni utilizzati nei sistemi operativi moderni, ma con obiettivi diversi. Il concetto di multiprogrammazione si basa esclusivamente sulla capacità del computer di memorizzare programmi o istruzioni per un periodo di tempo più lungo al fine di ridurre il tempo di inattività della CPU. L'allocazione del processo avviene tramite l'algoritmo di pianificazione. Il sistema operativo esegue parte di un programma alla volta, seguito da una parte di un altro programma e così via. In un sistema operativo multitasking, la CPU consente a più processi di funzionare simultaneamente tramite la condivisione del tempo e li esegue di conseguenza.
Nel sistema operativo multiprogrammazione, l'idea è di fornire una completa trasparenza tra gli utenti in quanto più utenti condividono la stessa CPU che passa rapidamente da un utente all'altro per migliorare l'utilizzo della CPU. Permette un'allocazione efficiente ed efficace delle risorse senza l'interazione dell'utente con il sistema. Il sistema operativo esegue parte di un programma seguito da un altro programma, ma sembra che tutti i programmi siano eseguiti simultaneamente. Nel sistema operativo multitasking, gli utenti vengono sostituiti da programmi o processi e ogni processo richiede una buona parte del tempo della CPU. Il processo si verifica così velocemente che sembra che siano in esecuzione più attività contemporaneamente.
In breve, entrambi i termini sono spesso usati insieme per rappresentare i sistemi operativi moderni, ma con obiettivi e funzionalità diversi. Mentre un sistema operativo multiprogrammazione consente di eseguire più di un programma contemporaneamente utilizzando una singola CPU, un sistema operativo multitasking consente di eseguire più processi o attività contemporaneamente utilizzando più CPU. La multiprogrammazione si basa sul cambio di contesto che non consente alla CPU di rimanere inattiva massimizzando l'utilizzo della CPU, mentre il multitasking si basa sulla condivisione del tempo in quanto è possibile commutare più attività in base alla priorità a intervalli regolari di tempo per le massime prestazioni della CPU.