What's your take on the distinction between the Kernel and the OS? When I first studied UNIX I was taught that the Kernel *IS* the OS (I remember it being reffered to as "the OS proper"), and that kernel+userland tools = OS distribution. (which would mean RMS can shut up about GNU/Linux becuase GNU tools aren't part of the OS by definition)

on first glance it seems to be all semantics, but it isn’t. the OS and kernel are two wholly separate, unambiguous things. this is especially clear when you’re using a coherent OS/kernel and not listening to linus trying to poo-poo gnu idiots

the distinction is pretty clear. the kernel runs in kernel space. the OS runs in user space. these are two non-overlapping segments of memory. code running in kernel space has the ability to run CPU instructions in supervisor mode (or equivs for non-x86). the OS doesn’t. lastly, the kernel can introspect and control userspace as well as kernelspace. the OS can’t

let’s look at a source tree:


this looks a lot like a unix filesystem root. you got your /bin and your /etc and your /sbin. i bet you can guess what usr.bin/ and usr.sbin/ are too. you know what kind of programs populate these directories on a normal system? shit like `ls` and `cp` and all the core utils you expect. the code for these resides in the directories mentioned above. in fact, nearly every single directory in the screenshot above (which comprises openbsd’s entire source tree minus X11) is immediately related to user space / the operating system. except for one!


within /usr/src/sys lays all of the kernel code. this is the good shit.outside of this, you are in normal boring old whitebread userspace where memory is contiguous and exclusive to discrete processes. inside /usr/src/sys all sorts of crazy shit is going on, you can’t depend on your timeslice to time out if your code is buggy, threading is a fiasco, memory becomes busses and controllers and if you fuck something up you’re going to have one hell of a time debugging it

anyway im getting off topic

the userspace tools that ship with the system are the operating system. the gnarly shit actually controlling the electrical signals flying across your motherboard is the kernel

it’s probably also important to note you cannot decouple the two. that’s why some people have come to believe they are the “same thing”. when you try and decouple the kernel from the OS, you end up spectacular atrocities and sins against god

hope this answers your question