El término "SO" puede significar muchas cosas.
Si bien en la mayoría de los sistemas operativos, el núcleo es el código que gestiona y "ejecuta" todo, y arbitra los accesos al hardware, por lo general no puede hacer nada interesante por sí solo: su trabajo es proporcionar un marco para que las aplicaciones se ejecuten " en la parte superior "si es así. La definición de SO de muchas personas incluye utilidades, shells y programas que conforman un entorno familiar y estandarizado.
Los controladores dependen del núcleo, y probablemente sea más correcto decir que lo "extienden", como los complementos. Linux admite la noción de "módulos de kernel cargables", y todos los controladores de dispositivos pueden ser un módulo de kernel cargable. También es posible construir un núcleo donde uno o más de estos módulos están "integrados" y no están separados del núcleo. Por lo tanto, realmente podría construir un kernel "sin módulo" en Linux, y no sería capaz de admitir ningún hardware que no sean los módulos que incorporó.
Estoy menos familiarizado con las entrañas de Windows, pero creo que, salvo por unos pocos controladores de "minipuerto", todos los controladores son archivos externos que se cargan en el arranque. Si profundiza un poco en la creación de servicios en Windows, parece que los controladores son realmente formas especiales de servicios en Windows. Algunos programas instalan controladores para acceder al hardware en un nivel bajo, pero no necesariamente para controlar un dispositivo, estos son típicamente los controladores "No enchufar y usar" en el Administrador de dispositivos. Por lo tanto, también parece que los controladores cumplen la misma función conceptualmente que los módulos de kernel cargables en Linux.
Para simplificar, diría que son parte del sistema operativo, ya que realmente no se pueden usar sin el sistema operativo, y no son útiles a menos que el sistema operativo se inicie, pero la línea trazada es bastante arbitraria en cualquier caso.