Class location/time: 64-86 Cummington Mall, PSY B41, TTh
2:00-3:15pm
Recommended Text: There is no textbook for the course.
Instead, we will rely on datasheets, the Intel Software
Developer's Manuals, and research papers
Mailing list: We will use piazza for
online discussions
Course Summary:
This is an advanced OS course, focusing on technical papers
and case studies of modern operating systems. It involves a
rigorous study of OS structure, design and implementation for
real-world systems, abstractions, mechanisms and policies for
future system design, address-space protection, scheduling,
synchronization, and inter-process communication.
Additional topics include virtual machines and microkernels,
real-time and multiprocessor systems, memory management, I/O,
power management, and system security.
Case studies will involve working systems, from Linux to our
in-house Quest RTOS and Quest-V partitioning hypervisor, as well
as application use-cases such as DriveOS.
Other systems will be studied through research papers and
source code, where appropriate.
A good understanding of C or C++ is required. A prior
understanding of assembly programming will be useful, especially
x86 assembly, bu this is not prerequisite knowledge.
Prerequisites: CS552 or similar introductory OS course.
If unsure, please consult with the instructor.
The course will use tools such as QEMU/KVM to work with guest
operating systems that we will modify and develop in various
assignments and projects.
Further Information (similar to CS552):
The Quest
RTOS and Quest-V Partitioning Hypervisor SDK
"Linux Device Drivers," by Corbet, Kroah-Hartman, and
Rubini, O'Reilly . This is useful to understand how kernel
modules are implemented in Linux, as well as to find out about
synchronization capabilities, interrupt and device management.
The following links are primarily for those curious to know
how to write their own operating system:
Lots of info on bootloaders, PC emulators and hardware.
This site has come a long way over the years and is very
valuable if you want to write your own OS. My research group
has used this site a lot.
For those wishing to find out more about PC
emulators/virtualizers, the following are particularly relevant:
this has a very good user interface, like VMware's
software. For getting up and running this or one of the
VMware tools is probably easiest but the ones below are all
very good for developing and debugging kernel code.
For those wishing to run a virtual machine on an Apple
machine, especially those using ARM-based Apple Silicon,
this is based on QEMU.
Additional textbooks relevant to this course include:
"Understanding the Linux Kernel", Daniel P. Bovet and Marco
Cesati, O'Reilly, 2001 (ISBN: 0-596-00002-2),
"Advanced Programming in the UNIX Environment", W. Richard
Stevens, Addison Wesley, 2000 (ISBN: 0201563177).
"UNIX Network Programming", Volume 1, W. Richard Stevens,
Prentice Hall, 1998 (ISBN: 0-13-490012-X).
Useful documentation on the Intel 64 and IA-32
architectures is included in the Software Developer's Manuals.
These manuals are split into several volumes, and can be found here.