The primary responsibilities of any computer operating system are to facilitate I/O between the system hardware and applications, and to manage the execution environment of the applications. Internals is the study of how an operating system accomplishes these tasks. The Linux operating system is unique because it is totally open and free. The source code is readily available and may be modified by anyone who possesses the knowledge to do so. Systems programmers must have a working knowledge of Linux internals in order to write kernel extensions such as device drivers, system calls, and virtual file systems. Applications programmers will write more efficient code if they understand what takes place in the operating system when they use the kernel application-programming interface (API). By understanding how the Linux kernel allocates hardware and software resources to processes and files, system administrators and support people will be better equipped to manage system performance and troubleshoot Linux.
The student should have a basic understanding of C programming language, working knowledge of Linux or some other UNIX-based operating system, ability to create and manipulate files, use the vi editor and navigate the hierarchical file system.
This course is designed for Linux system administrators and support people who desire a comprehensive understanding of the inner workings of the Linux kernel, applications programmers who want to know more about writing code that efficiently interfaces with the Linux kernel, and systems programmers who develop kernel extension for Linux.
Overview of the Linux Kernel::Process Management::The Linux System Call Subsystem::Linux Virtual Memory Manager::The IBM Journaled File System::Kernel File System Structures::Interprocess Communications::Device I/O