Linux Kernel Internals, Second Edition
Authors: Michael Beck, Harold Bohme, Mirko Dziadzka, Ulrich Kunitz, Robert Magnus, Dirk Verworner
Price: $45 US
Reviewer: Karl Majer
Linux Kernel Internals is an exceptionally well-written book on the internal workings of the 2.0 kernel. It covers each aspect of the kernel in great depth and at a very high level of detail.
The book starts with an introduction to Linux and then ushers the reader along to the methodology of building a kernel. The reader is then introduced to the primitives of the kernel itself, its data structures, algorithms and system calls. At this point the user should have a reasonable understanding of the basics of the kernel.
The author's discussion then migrates to memory management within the Linux kernel. An introduction on architecture-independent memory management begins this section. Other covered points of interest concerning Linux memory management are the assignment of virtual address space for the proc file system, the methodology chosen by the kernel to do caching of block devices, and the manner in which the Linux kernel pages.
Interprocess communication is the next topic. The reader learns the methods by which the kernel synchronizes communication among its various parts. A brief discussion is held concerning communications via files, sockets and pipes.
Next, the Linux file system is introduced. The basics of a file system are described, as well as how the kernel sees the file system. Following that is the Linux implementation of the proc file system, and finally an excursion into the workings of the EXT2 file system.
An operating system wouldn't be complete without device drivers to allow the end user to attach and use any additional devices he may have. The book covers character devices and polling devices in-depth, and then moves on to explain the difference between writing polling device drivers versus interrupt-driven device drivers. The user is then led through a tutorial on implementing a device driver to manipulate the PC speaker.
One of the true delights of the Linux operating system is its inherent and native network support. Unlike other non-UNIX operating systems, Linux is quite capable of using network services without the installation of special software. The Linux kernel handles communication at a very low level, and the book discusses this and the kernel's handling of network devices with a great deal of depth. The various communication protocols, i.e., IP, TCP, UDP, ARP, and the manner in which they are implemented are also discussed.
In order for the Linux kernel to support a device, protocol or even another processor, the kernel must “know” of these things by including the source code required to support the items internally. While this is not a particularly difficult thing to do, it does however increase the size of the kernel which runs in memory. A method by which the kernel can load only the necessary objects needed for operation, otherwise known as modules, was developed.
An introduction to the modules in the kernel can be obtained from the excellent section on modules in this book. The discourse covers items such as the types of kernel objects which can be made into modules, and the kernel daemon, the program which runs in memory and handles the dynamic usage of modules. Finally, there is an elegant tutorial on the actual writing and debugging of a module.
Given the availability and low cost of components today, people naturally desire multiple processors in their computers. Although disappointingly brief, a section on SMP (Symmetrical Multi-Processing) is included in the book. While this section does contain a good deal of information, it is comparatively sparse and Intel-centric.
At the conclusion of the primary discussion, the book offers four appendices which contain a wealth of information. Each system call available to the Linux programmer is discussed in detail, as are all of the commands related to obtaining kernel information. An in-depth look at the proc file system and information about the running kernel which it can provide is examined. Finally, the reader is given a fairly good look at the boot processes and all that is involved in starting the Linux system.
All in all, Linux Kernel Internals is a very good book for high level, in-depth reading about the kernel. The only drawback would be its Intel-based twist, which while acceptable, is not exemplary of the strongest feature of Linux—its ability to run on many hardware platforms both old and modern such as DEC Alpha, Sun SPARCs, Macintosh and SGI.
Karl Majer is currently a UNIX system administrator for America Online. In his little spare time, he enjoys spending time with his family, programming, reading and promoting Linux. Feel free to send e-mail to him at email@example.com.
Practical Task Scheduling Deployment
One of the best things about the UNIX environment (aside from being stable and efficient) is the vast array of software tools available to help you do your job. Traditionally, a UNIX tool does only one thing, but does that one thing very well. For example, grep is very easy to use and can search vast amounts of data quickly. The find tool can find a particular file or files based on all kinds of criteria. It's pretty easy to string these tools together to build even more powerful tools, such as a tool that finds all of the .log files in the /home directory and searches each one for a particular entry. This erector-set mentality allows UNIX system administrators to seem to always have the right tool for the job.
Cron traditionally has been considered another such a tool for job scheduling, but is it enough? This webinar considers that very question. The first part builds on a previous Geek Guide, Beyond Cron, and briefly describes how to know when it might be time to consider upgrading your job scheduling infrastructure. The second part presents an actual planning and implementation framework.
Join Linux Journal's Mike Diehl and Pat Cameron of Help Systems.
Free to Linux Journal readers.View Now!
|The Firebird Project's Firebird Relational Database||Jul 29, 2016|
|Stunnel Security for Oracle||Jul 28, 2016|
|SUSE LLC's SUSE Manager||Jul 21, 2016|
|My +1 Sword of Productivity||Jul 20, 2016|
|Non-Linux FOSS: Caffeine!||Jul 19, 2016|
|Murat Yener and Onur Dundar's Expert Android Studio (Wrox)||Jul 18, 2016|
- Stunnel Security for Oracle
- The Firebird Project's Firebird Relational Database
- Murat Yener and Onur Dundar's Expert Android Studio (Wrox)
- SUSE LLC's SUSE Manager
- Managing Linux Using Puppet
- My +1 Sword of Productivity
- Non-Linux FOSS: Caffeine!
- Doing for User Space What We Did for Kernel Space
- Google's SwiftShader Released
- SuperTuxKart 0.9.2 Released
With all the industry talk about the benefits of Linux on Power and all the performance advantages offered by its open architecture, you may be considering a move in that direction. If you are thinking about analytics, big data and cloud computing, you would be right to evaluate Power. The idea of using commodity x86 hardware and replacing it every three years is an outdated cost model. It doesn’t consider the total cost of ownership, and it doesn’t consider the advantage of real processing power, high-availability and multithreading like a demon.
This ebook takes a look at some of the practical applications of the Linux on Power platform and ways you might bring all the performance power of this open architecture to bear for your organization. There are no smoke and mirrors here—just hard, cold, empirical evidence provided by independent sources. I also consider some innovative ways Linux on Power will be used in the future.Get the Guide