This course uses extensive lectures to teach, in detail, how the Linux operating system kernel functions. Participants learn how to determine the activities of the kernel by examining source code and header files; tracing the relationship of kernel structures, such as linked lists and tables; and following the flow of various algorithms. Optional hands-on exercises explore the Linux kernel and reinforce the learning process. Participants are expected to supplement the lectures and lab exercises by reading the technical articles that accompany the course material. Actual course presentation is customized to one of the following Linux systems: SuSE Linux 9, SuSE Linux 10, Red Hat Enterprise Linux, Fedora Core v. 4, Debian Linux.
Upon completion of this course the participant will be able to describe, in detail, the functionality of each of the Linux kernel subsystems.
This course has several potential audiences. The primary audience is system programmers, who
need a working knowledge of Linux internals in order to write kernel extensions such as device
drivers, system calls, and virtual file systems. Application programmers will benefit from this
course by gaining insight into how the kernel responds to calls made by their programs to the
kernel API, thereby enabling them to write more efficient programs. The third audience for this
course is system administrators, especially those interested in system performance
management. Understanding how the kernel allocates resources enables the administrator to
make better use of information gathered by performance monitoring and problem
determination tools. Other audiences include support people who have to answer challenging
customer questions, system testers, and managers who want to know more about Linux.
Because this course involves tracing Linux source code and header files, the student should be comfortable reading C source code. The participant is also expected to have a working knowledge of Linux (or some other UNIX-based operating system) and be able to create and
manipulate files, use the VI editor, and navigate the hierarchical file system.