Un computador moderno se compone de una CPU (a veces más de una) y una serie de controladores de dispositivos, conectados a través de un bus común a la memoria. Cada controlador está a cargo de un tipo específico de dispositivo.
Cuando se enciende el computador, se ejecuta automáticamente un pequeño programa, cuya única tarea es cargar el sistema operativo en la memoria, y entregarle el control (ejecutarlo). El sistema operativo hace las inicializaciones del caso, y luego simplemente espera a que algún evento ocurra. La ocurrencia de un evento es, por lo general, señalizada por una INTERRUPCIÓN de software o hardware. Los controladores de dispositivo pueden gatillar una interrupción en cualquier momento, enviando una señal a la CPU a través del bus del sistema. Las interrupciones de software son gatilladas por procesos, por la vía de ejecutar una instrucción especial que se conoce como llamada al sistema.
En los primeros computadores el operador tenía el control completo del sistema. Con el tiempo, se fueron desarrollando los sistemas operativos, y parte del control se traspasó a ellos. Además, para mejorar la utilización del sistema, se comenzó primero a manejar varios programas en memoria en forma simultánea, y luego a atender simultáneamente a varios usuarios. Pero el remedio trajo su propia enfermedad, ya que un programa podía por error o por mala intención de su creador, modificar datos de otros programas, o peor aún, modificar el propio sistema operativo, lo que podía botar todo el sistema, lo que obligó a considerar un sistema de PROTECCIÓN.
En resumen: los sistemas operativos modernos se apoyan ampliamente en el hardware y las necesidades como interrupciones, instrucciones privilegiadas, protección de memoria, etc. fueron impuestas a los diseñadores de hardware por los requerimientos de multiprogramación de los sistemas operativos. La historia de los sistemas operativos está interrelacionada con la historia de la arquitectura de computadores.