This is a frozen snapshot of the main page for this class as it looked at the end of the semester. You can watch my lectures and download PDFs of the slides, but the links to the rest of the course content have been deleted because it's not mine to give away. Professor Peter Chen created the projects, the autograding system used in 482 and most of the rest of the course content. The slides I used were based on decks created by Professor Harsha Madhyastha. This is a great class and I really enjoyed teaching it. But I couldn't have pulled it off without my wonderful staff. --Nicole
EECS 482 SS20 Introduction to Operating Systems
This course will be taught entirely online at "normal speed" over the combined spring and summer semesters. Lectures and labs will be streamed live and recorded on BlueJeans. Office hours will be conducted via Zoom and Google Meet. Exams will be conducted using the Crabster randomized exam server. Links to slides and recordings will be posted as they become available.
Instructors
Faculty | Staff | ||
---|---|---|---|
Nicole Hamilton
(nham) |
Austin Kiekintveld (akiek) |
Brandon Kayes (bkayes)
|
Celine Schlueter (celinesc) |
Email sent to secretemail@umich.edu goes to all of us.
Alumni advisor
We gratefully acknowledge the advice and many other contributions by our volunteer alumni course advisor, Ben Reeves. Ben served as a 482 IA for many semesters before graduating and has been especially helpful in pointing out where all the bodies are buried.
Ben Reeves (bgreeves) |
Lectures
Lectures will be streamed live and recorded on BlueJeans, Mondays and Wednesdays, 3:00 pm to 4:30 pm EDT, except May 25 (Memorial Day), June 24 (midterm) and the week of June 29 (break between semesters and Independence Day).
Introduction
Threads and synchronization
- May 11. Threads
- May 13. Synchronization
- May 18. Lock and CV
- May 20. Producers-consumers and readers-writers
- May 27. Semaphores
- June 1. Thread implementation
- June 3. Create, join and lock
- June 8. Switch invariant, deadlock
Virtual memory
- June 10. Virtual memory
- June 15. Segmentation and paging
- June 17. Eviction
- June 22. Kernel vs. user
- July 6. Process creation and fork (after the midterm and break)
Scheduling
File systems
- July 13. Storage devices
- July 15. File systems
- July 20. Caching and ordering updates
- July 22. Transactions and LFS
- July 27. File systems recap
Networks and distributed systems
- August 4. Bonus lecture on sockets and servers
Download LinuxGetUrl, LinuxGetSsl and LinuxTinyServer.
Virtual machines
Exams
- June 24. Midterm. Conducted online 3:00 pm to 5:00 pm EDT using the Crabster exam server. (26%)
- August 20. Final exam. Conducted online 3:00 pm to 5:00 pm EDT using the Crabster exam server. (26%)
Projects
- May 22. Register your github username and declare your project group membership.
- May 27. Multi-threaded programming. (3%)
- June 22. Thread library. (15%)
- July 29. Memory manager. (15%)
- August 17. Network file server. (15%)
Labs
Labs will be streamed and recorded via Zoom, Fridays 11:30 am to 12:30 pm EDT, beginning May 8, except July 3 (Independence Day) and July 24. Your lab assignments are not graded; they are here to help you. You don't have to do them, but if you don't, you'll likely have other problems passing the class. (Join URL)
- May 8. Getting started with the tools
- May 15. Threads and race conditions
- May 22. Monitors
- May 29. RAII and pImpl
- June 5. Semaphores
- June 12. Deadlocks
- June 19. Sample midterm 1 and sample midterm 2
- June 26. Virtual memory
- July 10. Memory management
- July 17. File systems
- July 31. Sockets
- August 7. Remote procedure calls
- Tuesday, August 18, 7:00 pm to 9:00 pm. Sample final 1 and sample final 2
Resources
- Student information
- Course syllabus
- Canvas
- Our Piazza forum
- Offices hours queue
- Project FAQ
- Coping with hitchhikers and couch potatoes on teams
- An introduction to programming with threads
- Advanced reading: Implementing Condition Variables with Semaphores
- Programming with sockets
- C++ reference
- CAEN
- ITS Computing Sites
- EECS 482 Git tutorial
- Git reference and Git book.
- Make tutorial