COMP 790-042 Operating System Implementation:

Case Studies with BSD and Linux

Spring 2009

11:00 AM - 12:15 PM Monday and Wednesday
Sitterson 115

Instructor: Don Smith

Office hours: TBA.
FB312, smithfd@cs.unc.edu

 

 
Line

Introduction

This course examines how an operating system kernel is implemented through case studies of the organization, data structures, and algorithms used in Unix-like operating systems. The primary example used in the course is the 4BSD family, arguably the most influential set of operating system implementations ever constructed. Its history spans almost 30 years and several machine architectures ranging from the DEC VAX to Intel-architecture PCs and MACs with several RISC architectures along the way. This course will focus primarily on the major current branch of the family tree, FreeBSD. We will also examine the current implementation of the Linux kernel where its design differs substantially from the BSD designs. The Linux development community has recently become a significant source of innovative designs for OS kernel components.

To fit the material into a one-semester course, we will focus on four major components of the kernel implementations:

  • Processes, threads, and scheduling
  • Memory management and virtual memory
  • I/O structure, devices, and local file systems
  • Interprocess communication and networking
  • The Intel IA-32 will be used as the reference machine architecture (combined with contemporary disks and network adapters) to illustrate designs at the hardware-OS interface.

    The course is taught using lectures on design concepts, including case studies of real systems. Students will design, implement, and measure the performance of some significant change to the implementation of a FreeBSD or Linux kernel as a course project.

    Upon completion, you should

  • be familiar with the major implementation trade-offs and decisions made in designs for important Unix-like kernels,
  • be able to design and implement a component of the FreeBSD or Linux kernel, and
  • have experience with testing, measuring, and tuning the performance of a kernel component.
  • COMP 730 (242) or equivalent background (with permission of the instructor) is a prerequisite.


    Line

    Last updated: December 1, 2008