Still, there is intellectual curiousity, isn't there? Prior to the availability of source code, the deep secrets of the kernel remained hidden; alluded to at best, but never spread out in specific detail. We might have been curious, but very few of us were in a position to do anything about that mental itch.
But now we can. For the cost of a CD (or even for free if you have the patience), the Linux source code is available to all of us. Perhaps more importantly, there are a good number of books available that at least pretend to explain that code, and the number of resources on the web purporting to do the same is simply overwhelming. At first glance, it looks like this is an itch we can scratch very easily.
Unfortunately, the reality doesn't quite live up to the promise. Even the best of the books and web resources are confusing, a great many are hopelessly out of date and therefore would be misleading even if they were comprehensible. I found out very quickly that I had far more questions than answers.
Part of the problem, of course, is the rapid rate of change. Linux and the web share a common life span, and both have grown and changed very quickly. If you search the web for articles about the Linux Kernel, you'll find a lot of information that dates from the very first kernels. Unfortunately, people don't always update old web pages ( and I'm just as guilty of that as anyone is ), so you don't necessarily know that you are reading very outdated material. This can be very confusing.
Another real problem is that much of the material is incomplete simply due to imperfect understanding of the authors. Often that's freely and readily admitted: you'll find comments like "I don't really understand this part at all". Those sorts of pages at least give you fair warning that you are treading in murky waters; unfortunately there are plenty of other sources whose authors plainly have the same lack of knowledge but don't admit it.
And then there are the architectural issues. Linux, of course, runs on several hardware platforms, and while high level concepts are the same, the nitty-gritty implementation details are vastly different. Pages written by someone intimate with Alpha versions won't help those of us running on Intel (although sometimes the very differences can cast illumination on otherwise obscure points).
So, here we are. I'm about to try to explain what *I* understand so far, from my perspective. I'll warn you up front and probably throughout the text that my understanding is also quite incomplete and may also be defective here and there. I will, of course, do my best to fix any errors that I become aware of.
This text is devoted entirely to Intel Linux. I understand that architecture poorly enough; I surely don't want to dive into areas like Alpha where I have absolutely no comprehension. So, take a deep breath, and here we go:
Got something to add? Send me email.
More Articles by Tony Lawrence © 2011-03-26 Tony Lawrence
Anyone who puts a small gloss on a fundamental technology, calls it proprietary, and then tries to keep others from building on it, is a thief. (Tim O'Reilly)