Today I’m not going to talk about any specific aspect of Linux, or any other operating system. Instead I’m going to talk about the OS from a more holistic perspective.
Operating systems, and programs, etc., need to present themselves to humans in a way that humans can understand. This seems like a no-brainer, but it’s not, because as humans, once something presents itself to us in such a way, we start to think of it in terms of the interface that is presented to us. For example, in Linux, entries in the process table are presented as “processes”. Because of this presentation, we strart to think of processes as their own entities, even, in a way, living. This is great for when we need to understand how things work in a broad, generalized way. But when you get down and dirty into the guts of the OS, it actually hurts. Because processes are NOT objects, not really. They are simply entries in a process table that the kernel uses to determine how CPU cycles get distributed and to which tasks.
Operating systems have – and by design – done such a great job of abstracting the kernel and its services that it’s just this entity that sits in the background, like a black box, controlling everything but you don’t even think about it. I think about my web browser, and my email client, etc., but I almost never think of the kernel.
This is great for an end user. It’s a really bad idea for a professional sysadmin.
The kernel may sit in the background, but it controls everything. It is “God”, in a sense. Everything that goes in and out of every subsystem is done with at least the awareness of the kernel, and except in situations such as DMA transfers (something I have seen go awry as well), full knowledge and permission. If something in the kernel is a little off, at best, the system goes unstable, at worst, you lose all of your data.
You cant afford to not understand how the kernel works.
This doesn’t mean that you have to dive into all hundred million lines of code (if they’re even available). What it does mean is you have to understand how all the subsystems work and fit together. And while you’ll never learn it all, the more you do, the more you will be able to handle those really sticky and incomprehensible things that just seem to happen, without pulling out what’s left of your hair.