Linux Kernel Programming, Advanced
Linux kernel programming is a challenging process that requires a thorough understanding of kernel, the system environment and CPU architecture. For Linux-based products that demand high performance or custom features from the kernel or modules, developers must work directly with kernel data structures, synchronization models, hardware models, process, memory and IO management at a much deeper level, and with little source code documentation. This course builds on the kernel knowledge and provides the next level details needed for real-world Linux product development.
This course begins with a brief review of CPU (X86) architecture, basic system and kernel programming models, and socket programming. The discussion goes on to cover data structures and inter-workings of the kernel to build a deeper understanding of file system creation, process scheduling, memory management, and network stack management. Students learn the latest multicore, multi-thread management and inter-processor scheduling at the kernel and process level. The instructor will present practical examples of each topic throughout the course.
This course includes programming assignments for students to practice on their own computers. Exercises and concepts/methods taught in this course are applicable to any kernel. Ubuntu distribution is preferred. Upon completion of the course, students will have advanced, expert-level kernel knowledge and experience.
- Review and overview
- File system creation and usage
- Network stack management
- Process scheduling and signaling
- Single processor single-user process creation
- Kernel process creation in the context of multi-tasking
- Inter-processor (MPx) scheduling
- Multi-threaded applications and kernel scheduling
Skills Needed: Proficiency in C programming and an understanding of networking basics is required.
Course Availability Notification
Please use this form to be notified when this course is open for enrollment.
Ask us any questions you may have about this course.