COMP 790-042 Operating System Implementations:

With Case Studies of Linux and FreeBSD

Spring 2014

11:00 AM - 12:15 PM Mondays and Wednesdays
Sitterson 115

Instructor: Don Smith

Office hours: 12:30 PM - 1:30 PM Mondays and Wednesdays.
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 Linux kernel running on the Intel IA-32 machine architecture. We will also take some examples from the FreeBSD system, a member of the 4BSD family, arguably one of the most influential sets of operating system implementations.

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

  • Processor Management (processes, interrupts, schedulers, synchronization)
  • Memory Management (logical and physical memory, allocation, paging, caches)
  • I/O Management (Disk I/O, and local file systems)
  • The Intel IA-32 will be used as the reference machine architecture (combined with contemporary mechanical and solid state drives) 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 have programming assignments to gain experience implementing extensions to the Linux kernel using dynamically loaded kernel modules. These assignments will explore concepts in process structures, synchronization, scheduling, and demand paging. In the second half of the course, students will have the option of either doing two additional programming assignments or conducting a project of their choosing to design, implement, and measure the performance of some new function for the Linux kernel.

    Upon completion, you should

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

    Useful References

    D. Bovet & M. Cesati, Understanding the Linux Kernel, 3rd Ed., O'Reilly, November 2005.

    R. Love, Linux Kernel Development. 3rd Ed., Addison Wesley, June 2010.

    M. McKusick, G. Neville-Neil, The Design and Implementation of the FreeBSD Operating System, Addison-Wesley Publishing Company, Reading, MA. April 2005.

    Intel IA-64 and IA-32 Architectures Software Developer's Manuals

    Online Linux Source (with Cross Reference links)


    Line

    Last updated: January 2, 2014