CS 721/821: Operating System Kernel Design

(Coordinator: Robert Russell)

Catalog description

Design and implementation of an operating system kernel, using LINUX as an example. Detailed discussion of the data structures and algorithms used in the kernel to handle interrupts, schedule processes, manage memory, access files, deal with network protocols, and perform device-level I/O. Course is project-oriented, and requires the student to make modifications and additions to the LINUX kernel. Prereq: CS 720 or CS 820.

Attributes

  • This course can be combined with a CS–696W module to satisfy a Writing Intensive requirement.
  • This course can be taken as CS721H by honors students.

Course Outcomes and their Relationship to Program Outcomes

  • Familiarity with the internal workings of the Linux kernel, and the ability to make changes to it. [methodologies of software development, principles of data structures, principles of operating systems, principles of computer organization and architecture, and principles and techniques of a range of advanced topics in computer science]

Evaluation

Three or four laboratory assignments (60–70%), a midterm and a final exam (30–40%).

Major Topics

  • Architecture of the Intel Pentium
  • Linux system-call interface
  • Process control, scheduling, and multiprocessing
  • Interprocess communication and synchronization
  • Interrupt servicing
  • Timing and timers
  • File system organization, ext2/3/4 and /proc
  • Modules
  • Networking and sockets

Required Textbook

Daniel P. Bovet and Marco Cesati. Understanding the Linux Kernel, Third Edition, O’Reilly & Associates, Inc, 2006. ISBN: 978–0596005658.

Recommended Textbooks

  • Robert Love. Linux Kernel Development, Third Edition, Addison-Wesley, 2010. ISBN: 978–0672329463.

  • Jonathan Corbet et al. Linux Device Drivers, Third Edition, O’Reilly & Associates, Inc, 2005. ISBN: 0–596005903.

  • Christian Benvenuti. Understanding Linux Network Internals, O’Reilly & Associates, Inc, 2006. ISBN: 978–0596002558.