CMPSCI 596/696:  Operating Systems Implementation (an Independent Study)

(Spring 2004)

Course Description

This course will expose students to the internals of an operating system kernel. The course will be based on Linux and will consist of a series of programming exercises involving implementation of kernel modules, system calls, CPU schedulers, memory management and file systems. Since the Linux kernel is written in C, proficiency in the C programming language is a must.  An undergraduate course on operating systems (equivalent to CMPSCI 377) is also a prerequisite for this course.

The project will be adapted to kernel 2.4 and User-Mode-Linux (UML).

Students will meet with the instructor once a week to review their  progress in the independent study.

Course Information

Instructor: Prashant Shenoy

Class Discussions: CS Bldg, Room 140, Thursday  5:00-5:45

Mailing List:

Credits: 3

Course Staff

           Email: lihuan [at]
           Office Hours: Friday 4:00-5:00pm, LGRC 222

Study Plan (Draft):

1. Using User-Mode-Linux (UML) (Due date: Feb 4, 2004)

2. Observing Linux Behavior

3. Kernel Modules

4. System Calls

5. Memory Management

6. The Scheduler

7. File Systems

Reading Materials and References

Other Useful Links :

1. The Linux Documentation Project

2. The Linux Kernel Archives

3. Module Programming
  Peter Jay Salzman & Ori Pomerantz : The Linux Kernel Module Programming Guide

4. System call
   Kernel Korner: Implementing Linux System Calls

   How to add system call in Linux Kernel 2.4.22

5. Linux Kernel 2.4 Internals

6. Understanding the Linux memory management

7. FEATURES, User Mode Linux, Running Linux on Linux, by Jeff Dike

8. Kernel-API

9. Writing a Simple USB Driver

Other Issues :
  1. Students' Links
  2. README Sample

This page is online at
Copyright 2004, Prashant Shenoy

Last modified: Tue Jan 27 12:28:18 EDT 2004