By the end of this course, you will have a good understanding of the main elements that work together to form an Operating System (OS). You will have significant experience with C programming for low-level OS development, and some additional exposure to low-level application development. You will have acquired familiarity with standard tools for revision control, debugging, and system diagnostics.
While the class combines theory and practice, there will be a focus on practical demonstrations in lecture and extensive hands-on programming experience. Plan to spend 10 +/- 5 hours per week on homework programming, depending on your current proficiency.
Hours and Contact Details
Dr. Jakob Eriksson
|Meets||3:30-4:45 TR, in SES 138|
|Office hours||Tue 2-3 pm, Wed 2-3 pm (in SEO 1309)|
|TA Office Hours||Mon 3-4 pm, Fri 11-12 pm (in SEO 1218)|
xv6 rev 8 source code
This is required reading, and should be brought to exams and class for reference. Printed copies will be handed out in class.
xv6 a simple, Unix-like teaching operating system
Russ Cox, Frans Kaashoek, and Robert Morris
This is a commentary to accompany the xv6 source code. It also covers some OS concepts.
Operating Systems – Principles and Practice 2/e
Anderson and Dahlin
(optional) The C Programming Language
Kernighan and Ritchie
All assignments are done in C. This is an excellent (and classic) introduction to the language.
additional materials will be supplied throughout the course in the form of web page URLs, likely drawn from MIT course 6.828 references.
This class is programming intensive, with all assignments done in C. Basic C and systems programming skills will not be taught in this class, as CS361 is a required prerequisite.
Evaluation will be done through 1 midterm (20 points), 1 (comprehensive) final (30 points) and up to 10 homeworks (total 50 points). Grades will be based on a relative curve, determined after the final exam. Grad student results will not be used when determining the curve.
Consulting with your classmates on assignments is encouraged, except where noted. However, turn-ins are individual, and copying code from your classmates is considered plagiarism. For example, give the question “how did you do X?”, a great response would be “I used function Y, with W as the second argument. I tried Z first, but it doesn’t work”. An inappropriate response would be “here is my code, look for yourself”.
To avoid suspicion of plagiarism, you must specify your sources together with all turned-in materials. List classmates you discussed your homework with and webpages from which you got inspiration or copied (short) code snippets. All students are expected to understand and be able to explain their turned-in materials. Plagiarism and cheating, as in copying the work of others (including material found online), paying others to do your work, etc, is obviously prohibited, is grounds for failing the course, and will be reported.
Topics Covered (DRAFT)
- Purpose, Function and Structure of an OS
- User / Supervisor modes, privileged instructions
- System Calls
- Processes and Context Switching
- Process Management
- Process Creation
- Processes vs. Threads
- CPU Scheduling
- Interrupts, multiprocessing, simultaneous multithreading
- Synchronization mechanisms
- Race conditions and deadlocks
- Memory Management
- Virtual vs. physical memory
- Kernel memory allocators
- Virtual memory and paging hardware
- Swapping / page replacement
- Storage Management
- File systems
- Mass storage devices
- I/O and Device Drivers
- Authentication and Protection