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. Either kernel version 2.6 or 3.x can be used in this course. 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.