CS 537 Intro to Operating Systems - UW Madison, Fall 2024

Welcome to CS 537! This course will introduce you to the the broad field of operating systems. Operating systems include a wide variety of functionality. This is an introductory course and topics we will cover include basic operating system structure, process and thread synchronization and concurrency, file systems and storage servers, memory management techniques, process scheduling and resource management, and virtualization. The learning outcomes for this course are that at the end of the course you will be able to:

Logistics

Materials

We will be using the free OS textbook Operating Systems: Three Easy Pieces. You can also buy a printed copy if you like from the same website.

For the programming projects, there are two textbooks that are recommended but not required

Pre-requisites

This course assumes familiarity with basic computer organization (e.g., processors, memory, and I/O devices as covered in CS354) and data structures (e.g., stacks and hash tables as covered in CS367). You will need to be able to program in C (not C++, not Java, not Python, not Javascript, not Ruby, etc.) to perform the assignments in the course. We will spend some time covering background, but learning C on your own is important and valuable.

Components

Exam conflicts

If you cannot make the listed exam date please fill out this Google form by October 1st 2024.

Grading

Here is a numerical scale for grades. Based on difficulty of projects and exams, the actual cutoffs used may be lower than these.

A: 93-100, AB: 87-92.99, B: 82-86.99, BC: 78-81.99, C: 70-77.99, D: 60-69.99, F: 0-59.99

Integrity Policy

In addition to the UW-Madison integrity policy, please read the following collaboration guidelines for programming projects. Discovery of code sharing will lead to failure of the assignment/course, disciplinary probation, or suspension.

Inclusion

In our class we strive to create an environment where everyone willing to do their part can learn and thrive. You should always feel free to ask a question: asking and pondering questions is how we learn. Being confused is unfailingly an opportunity to advance our knowledge. Please, commit to helping create a climate where we treat everyone with dignity and respect. Listening to different viewpoints and approaches enriches our experience, and it is up to us to be sure others feel safe to contribute. Creating an environment where we are all comfortable learning is everyone’s job: offer support and seek help from others if you need it, not only in class but also outside class while working with classmates.

Exceptional circumstances

In case you are having personal problems or any other issues outside the course that are affecting your performance in the course, please email or talk to the instructor during office hours as soon as possible. The course staff is here to help you do your best in the course and we will try to make necessary accomodations. However please note that timely communication is very important and we might not be able to help you if we dont know you have a problem.

Tentative Schedule (Subject to change)

Prof. Oliphant Slide Repository

Shivaram Lecture Videos (UW Madison login required)

</td>
Class Date Reading Shivaram Slides Notes
9/5 Preface | Dialog | Introduction Slides | Slides+Notes
9/6 Project 1 out
Virtualization
9/10 Dialog | Process | API | Mechanism Slides | Slides+Notes
9/12 Scheduling | Multi-level Feedback Queue Slides | Slides+Notes
9/13 Project 1 due. Project 2 out
9/17 Multi-level Feedback Queue | CPU Summary | Address Spaces Slides | Slides+Notes
9/19 Address Spaces | Address Translation | Segmentation Slides | Slides+Notes
9/24 Segmentation | Paging Slides | Slides+Notes Project 2 due. Project 3 out
9/26 TLBs Slides | Slides+Notes
10/1 Paging: Smaller Tables Slides | Slides+Notes
10/3 Beyond Physical Memory: Mechanisms | Policies | VM Review Slides | Slides+Notes
10/8 Review for Midterm 1 Slides | Slides+Notes Project 3 due
Concurrency
10/10 Dialogue | Introduction Slides | Slides+Notes
10/14 to 10/18 Code Review Week
10/15 Locks Slides | Slides+Notes Midterm 1 from 5.45pm to 7.15pm
10/17 - Updated Locked Data Structures Slides | Slides+Notes Project 4 out
10/22 - Updated Condition Variables Slides | Slides+Notes
10/24 - Updated Semaphores Slides | Slides+Notes
10/29 Deadlock Slides | Slides+Notes
10/31 Review for Midterm 2 Slides | Slides+Notes
Persistence
11/5 IO Devices | Disks Slides | Slides+Notes Project 4 due. Project 5 out.
11/7 Filesystems Slides | Slides+Notes Midterm 2 from 5.45pm to 7.15pm
11/12 Filesystems Implementation | FFS Slides | Slides+Notes
11/14 Journalling Slides | Slides+Notes
11/19 Log Structured FS Slides | Slides+Notes Project 5 due. Project 6 out
11/21 Flash-based SSDs Slides | Slides+Notes
Advanced Topics
11/26 Virtual Machines | Chapter 1, 2 Virtualization book | Xen Slides | Slides+Notes
11/28, 12/1 Thanksgiving break!
12/3 Multiprocessor Scheduling | Section 2 of CFS vs ULE Schedulers Slides | Slides+Notes Project 6 due
12/5 Distributed Systems Slides | Slides+Notes
12/6 Project 6 due
12/10 Review, Summary Slides | Slides+Notes
12/19 Midterm 3 Time 10:05 AM to 12:05 PM (Room TBD)