User Tools

Site Tools


Advanced Operating System Implementation (AOSI)

AOSI focuses on the design and implementation issues of computer systems, and more specifically, operating systems. In this course, students will experience in implementing several key aspects of modern operating systems, including virtual memory, kernel and user mode, system calls, threads, context switches, interrupts, interprocess communication, coordination of concurrent activities, and the interface between software and hardware. In addition, students will learn the fundamental design principles and considerations of operating systems, as well as advanced systems like flash memory, file systems and virtual machine monitors.

Course Information


  • Haibo Chen Office Hour: Tuesday 4pm - 5pm (software building, room 1-307)
  • Zhengwei Qi Office Hour: Monday 2pm - 4pm (software building, room 1-207)

Teaching Assistants


  • Lab 1~6: 50%
  • Final Exam:35% (Labs will be reflected in exam)
  • Homework: 10% (Help you to understand OS Implementation/Labs)
  • Course performance (5%) (Q&A in classroom, Attendance)

Text Books

There are no offical textbooks. We will send you course materials before and after class. However, we recommend students to use the following books as references:

  • xv6: a simple, Unix-like teaching operating system. By Russ Cox Frans Kaashoek Robert Morris. Online
  • Computer Systems: A Programmer's Perspective (2nd Edition) Addison Wesley. By Randal E. Bryant / David R. O'Hallaron

Course Project

Student will build an operating system called JOS, which is an exokernel style operating systems but have Unix-like interfaces. The key difference between JOS and Unix-like OSes is that most parts of Unix functions are implemented as user-level library instead of directly inside the kernel. The entire course project will composed of two parts: assembly preliminaries (adapted from CMU 15-213) and JOS labs (adapted from MIT 6.828):

  • Lab1: Binary Bombing
  • Lab2: Buffer Overflow
  • Lab3: Booting a PC
  • Lab4: Memory Management
  • Lab5:: User Environments
  • Lab6: Preemptive Multitasking

Tentitive Course Schedule

Note that the schedule is tentative and we will change the schedule along with the teaching process. The slides will be available here after each class.

Tuesday Topics/Slides Friday Topics/Slides
Course Intro/Assembly Priliminary-1 Assembly Priliminary-2 (Lab 1 out)
Buffer Overflow Lab1 Due, Lab2 out
Intro to exokernel, jos and xv6 PC hardware and x86 programming (Lab2 Due, Lab3 out)
Virtual Memory Hardware/Software
JOS and xv6 memory layout (Lab3 Due, Lab4 out) Process Creation System call, Interrupt, and Exception Handling
Multiprocessors, Concurrency and locking
Process scheduling Processes and coordination
Scalable Locking (Lab4 Due, Lab 5 Out)
Lock-free coordination Bugs
Race Detection
File Systems Crash Recovery (Lab 5 Due, Lab 6 out)
File system performance and fast crash recovery
Performance and durability Flash File Systems
Rethink Virtual Memory on Flash
Intro to Virtualization & CPU virtualization (Lab 6 Due) Memory Virtualization
I/O and Hardware-assisted Virtualization Final Project Presentation
Final Exams (Sample Final Exams will be available here)

Tools and Resources

os.txt · Last modified: 2012/02/05 09:01 by root