A característica definidora dos sistemas operacionais é a conexão que ele fornece entre o hardware, o software e, em alguns casos, a interface do usuário. Os computadores requerem um sistema operacional para serem usados.
Todos os computadores modernos requerem algum software para serem controlados, e o sistema operacional é o software mais básico disponível. Embora os sistemas operacionais usados em dispositivos pequenos possam ser relativamente pequenos e simples, sistemas operacionais populares como Windows, OSX e Linux fornecem drivers para uma ampla variedade de dispositivos e uma interface de usuário.
A parte central de um sistema operacional é seu kernel. Hoje, os grãos monolíticos são os mais populares. Esses kernels fornecem uma maneira para diferentes processos de computador enviarem mensagens uns para os outros e gerenciam a RAM que armazena as informações do programa. A maioria dos kernels também fornece drivers de dispositivo para controlar monitores, dispositivos de entrada, unidades de disco e outros periféricos.
No passado, o software só podia ter como alvo um sistema operacional específico e os programas tinham que ser ajustados e compilados para rodar em plataformas diferentes. No entanto, os programas modernos são projetados para rodar em uma variedade de plataformas suportadas. Java é amplamente creditado como o início dessa tendência, mas Python, Ruby e outras plataformas de programação de alto nível simplificam a portabilidade de programas para novos sistemas.