La multiprogrammazione è un tipo di programmmazione che garantisce l'esecuzione di più processi su un sistema contemporaneamente.

Le motivazioni per cui si usa la multiprogrammazione sono che questa garantisce un aumento di prestazioni e allo stesso tempo un risparmio di risorse.

Esistono principalmente due tipi di multiprogrammazione:

1. la multiprogrammazione di tipo batch in cui non c'è interattività con l'utente. L'obiettivo di questo tipo di multiprogrammazione è la massimizzazione delle prestazioni.

2. la multiprogrammazione di tipo time-sharing (più utenti interattivi) in cui l'obbiettivo consiste nella massimizzazione della confortabilità e della praticità d'uso, a scapito delle prestazioni.

Facendo riferimento al diagramma degli stati di un processo si possono fare alcune considerazioni.

a. Nella fase di creazione di un processo viene generato un pid Process Identifier per garantirne il riconoscimento da parte del sistema operativo.

b. Il Grado di multiprogrammazione è il numero di processi che si trovano nella parte attiva del diagramma.