Mailing list: You will be automatically added to the class
mailing list if you are registered for the course. The mailing address
is cascs552a1-l at bu dot edu
Course Summary:
This course covers the fundamental concepts of operating
systems. Topics including OS structure, processes/thread management,
synchronization, deadlocks, file systems, I/O and memory management
will be discussed.
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.
Advanced topics including those based on distributed computing
will be discussed, time permitting. Additionally, case studies based on
a real-world operating system (e.g., Linux) will be covered, where
appropriate, throughout the course.
You will be required to tackle projects that involve kernel-level
programming of existing systems such as Linux, and possibly writing
your own OS abstractions/features on bare-bones hardware. In the latter
case, we will use PC emulation/virtualization tools such as Bochs,
QEMU/KVM and VMWare Workstation/Player, time permitting.
Several projects may require development and use of our own
in-house operating system, called Quest.
Socket programming and abstractions such as remote procedure
calls may be required for some of the projects.
Prerequisites: CS210 (or the consent of the instructor).
Further Information:
"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:
The concept of "threads" will feature as part of this course.
Some useful documentation on threads includes:
Pthreads
Programming, Bradford Nichols, Dick Buttlar & Jacqueline Proulx
Farrell, O'Reilly, ISBN 1-56592-115-1.
Multithreaded Programming with Pthreads, Bil Lewis and Daniel
J. Berg, Sun Microsystems Press, ISBN 0-13-680729-1.
Using a Solaris-based workstation or PC, use "answerbook2" (or
the older "answerbook"), to access Sun's Multithreaded Programming
Guide.
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
as either a 3- or 5-volume collection.