Como alguien que diseña sistemas informáticos, puedo estar de acuerdo con las sugerencias hasta ahora. Ciertamente, el propio sistema operativo es un ejemplo de software de sistemas. Sin embargo, hay varios otros que no se han mencionado hasta ahora. Desde mi punto de vista, el software del sistema es el código necesario para que los programas de las aplicaciones puedan ejecutarse. En muchas variantes del S.O., hay una distinción entre el estado de usuario y el estado de supervisor dentro del procesador. Las cosas que viven en el estado de usuario son las aplicaciones, las bibliotecas y los motores necesarios para ejecutar otro software de usuario. El estado de supervisor contiene el núcleo principal del sistema operativo, los controladores de dispositivos, las rutinas de servicio de interrupción (ISR), los controladores de excepciones, el programador, los hilos del núcleo y otros elementos similares.
Si pensamos en un sistema operativo como Windows, vemos el propio núcleo Win32/64 o WinRT (además de los controladores de dispositivos, los ISR, etc.). Y un sistema de archivos que contiene aplicaciones de estado de usuario, DLLs, etc. Hay una distinción similar en un sistema operativo como Linux. Pero, el sistema de archivos en Linux es en gran parte basado en GNU (glibc, etc.) para Linux donde hay un espacio de usuario completamente diferente para Android, Tizen, WebOS, etc. a pesar de que estos O/S utilizan el kernel de Linux.
Sin embargo, también tenemos que añadir la distinción de que cierto software del espacio de usuario es un habilitador y no un fin en sí mismo. Por ejemplo, el runtime de C/C++, JavaVM, PythonVM, glibc, librerías de sockets, etc. no son aplicaciones, sino habilitadores de aplicaciones. Por lo tanto, en mi mente como alguien que ayuda a desarrollar este tipo de código, también caen en el cubo de «software de sistema» porque las aplicaciones de usuario no podrían ejecutarse sin ellos y, sin embargo, el desarrollador de aplicaciones de usuario no tiene que pensar en ellos – simplemente están ahí en el sistema de archivos.
Así, mientras que yo no consideraría Vi y Emacs como software de sistema (son aplicaciones de usuario que utilizamos como editores), el compilador, enlazador, cargador, etc. podría ser fácilmente considerado como software de sistema. Además, las librerías/DLLs se considerarían software de sistema porque son un recurso que se desarrolla de forma muy particular para ayudar a los programadores de aplicaciones a desarrollar y ejecutar su código.