La définition technique d'un système d'exploitation est la suivante : "une plate-forme constituée d'un ensemble spécifique de bibliothèques et d'infrastructures sur lesquelles les applications peuvent être construites et interagir les unes avec les autres". Un noyau est un système d'exploitation dans ce sens.
La définition de l'utilisateur final tourne généralement autour de "un logiciel qui fournit un bureau, des raccourcis vers des applications, un navigateur web et un lecteur multimédia". Un noyau ne correspond pas à cette définition.
Ainsi, pour un utilisateur final, une distribution Linux (disons Ubuntu) est un système d'exploitation, tandis que pour un programmeur, le noyau Linux lui-même est un système d'exploitation parfaitement valide, en fonction de ce que vous essayez de réaliser. Par exemple, les systèmes embarqués ne sont le plus souvent que des noyaux sur lesquels tournent un très petit nombre de processus spécialisés. Dans ce cas, le noyau lui-même devient le système d'exploitation.
Je pense que l'on peut fixer une limite à ce que la majorité des applications fonctionnant au-dessus de ce système d'exploitation exigent. Si la plupart d'entre elles ne nécessitent que le noyau, le noyau est le système d'exploitation, si la plupart d'entre elles nécessitent le fonctionnement du système X Window, alors votre système d'exploitation devient X + noyau.