La caratteristica distintiva dei sistemi operativi è la connessione che fornisce tra l'hardware, il software e, in alcuni casi, l'interfaccia utente. I computer richiedono un sistema operativo per poter essere utilizzati.
Tutti i computer moderni richiedono il controllo di alcuni software e il sistema operativo è il software di base disponibile. Mentre i sistemi operativi utilizzati su dispositivi di piccole dimensioni possono essere relativamente piccoli e semplici, i sistemi operativi più diffusi come Windows, OSX e Linux forniscono driver per una vasta gamma di dispositivi e un'interfaccia utente.
La parte centrale di un sistema operativo è il suo kernel. Oggi i kernel monolitici sono i più popolari. Questi kernel consentono ai diversi processi del computer di inviare messaggi tra loro e gestiscono la RAM che memorizza le informazioni del programma. La maggior parte dei kernel fornisce anche driver di dispositivo per controllare monitor, dispositivi di input, unità disco e altre periferiche.
In passato, il software poteva mirare solo a un sistema operativo specifico e i programmi dovevano essere adattati e compilati per funzionare su piattaforme diverse. Tuttavia, i programmi moderni sono progettati per funzionare su una gamma di piattaforme supportate. Java sta in gran parte accreditando come l'avvio di questa tendenza, ma Python, Ruby e altre piattaforme di programmazione di alto livello semplificano il porting dei programmi verso nuovi sistemi.