[Epic 4G Q&A, Help & Troubleshooting] SadieNibblesworth:
Some kernel references for the non-computer scientists

Finally, somebody asks something that I actually know *something* about on here! LOL!

I know you want the "dumbed down" version of what a kernel is, so it's important that you understand some very important constructs in operating system design. If you give me a second, I will point you to some great resources that will help you develop a good understanding.

Essentially, all of computer science functions on the core concept of the "abstraction layer." What is that? Well, it's made up! But seriously, all operating systems (and hardware systems.. and hardware-software systems) are organized into abstraction layers, much like an onion peel. The top-most abstraction layers are, for all intensive purposes, what you as a n00b end user see (AND have access to/can change/manipulate/interface with/etc).

What we have essentially been using since BEFORE TIME BEGAN, is the five-layer, abstraction model. That, of course, is *not* be confused with the five-layer network abstraction model, which is another way of viewing how, more generally, the hardware of a modern operating system interfaces with network capabilities and sub-system faulting, etc., (aka, "How does my printer know what to print when I hit that "print" button).

Here's a great introductory paper that you don't need to *understand* from a technical point of view, but will help you understand how general the concept of a kernel is in computer science. This is a classic paper about the MACH Unix kernel - which is legendary today. Look at the list of "features" of the kernel here - multiprocessor support (with obvious support for under/overclocking,) but also virtual memory space design, (aka how the operating system handles memory at a base level,) and even support for how the operating system implements certain functions based on various programming languages, (LISP is my strongest language).

Now, notice how they talk about the operating system itself. It has "binary compatibility with Berkeley's current UNIX 4.3 bsd release," in other words, this kernel can be compiled on the processors that these machines will use, (aka "it is native.") So a kernel not only sets the "abstractions" the OS will use, but it's endemic to any one type of processor type.

Do you remember when MacOS went from CISC-based processors to RISC-based ones in the 1990s? (Aka from the Quadra series to the PowerPC series?) The processors compiled code differently, so any two sets of compiled code were not "native" between the two processors. Kernels are like any other piece of code - they are married to the type of processor a machine is using. If it's Intel X86, great! If it's Motorola RISC, wonderful! ALPHA MIPS? Well, you get the point.

Okay, I am shutting up before I write a book. There's *way* too much to be covered here, but I have tons and tons of references for you if you want to learn more! And review papers! AND, I haven't even covered normal kernels, multi-kernels, microkernels, and all of the good shtuff! Coincidentally, WINDOWS is a MICROKERNEL system! Who would have known? (I think that comes as a shock to every young computer scientist when you find that out in OS 101 class).

I would encourage you to find a digital copy of Andrew Tanenbaum's "Modern Operating Systems," which I guarantee you that you can find by searching for *.pdfs - almost every computer scientist has taken a course using one of his books. ( http://www.amazon.com/Modern-Operating-Systems-Andrew-Tanenbaum/dp/0136006639/ref=sr_1_1?ie=UTF8&qid=1325711291&sr=8-1 )