CS 537 Intro to Operating Systems - UW Madison, Spring 2019

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

Schedule

Class Date Reading Notes Notes
1/22 Preface | Dialog | Introduction Slides | Code Project 1a out
Virtualization
1/24 Dialog | Process | API | Mechanism Slides | Code
1/29 Scheduling | Multi-level Feedback Queue Slides | Slides+Notes Project 1a due.
1/31 CPU Summary | Address Spaces Slides | Slides+Notes Project 1a due. Project 1b out
2/5 Address Translation | Segmentation Slides | Slides+Notes
2/7 Paging Slides | Slides+Notes
2/8 Project 1b due. Project 2a out
2/12 TLBs Slides | Slides+Notes
2/14 Paging: Smaller Tables Slides | Slides+Notes
2/15 Project 2a due.
2/18 Project 2b out
2/19 Beyond Physical Memory: Mechanisms | Policies | VM Review
Concurrency
2/21 Dialogue | Introduction
2/26 Locks
2/27 Project 2b due. Project 3 out
2/28 Concurrent Data Structure
3/5 Condition Variables
3/7 Semaphores | Deadlock (part)
3/11 Project 3 due
3/12 Deadlock (finish) | Midterm Review
3/13 Midterm exam from 5:15pm to 6:45pm. Van Vleck B102, B130, B215
3/14 Multi-cores | Summary
3/19, 3/21 Spring Break
Persistence
3/26 IO+Disks Project 4a out
3/28 Disk Scheduling
4/2 RAID
4/4 Filesystems Project 4a due. Project 4b out
4/9 Filesystems Implementation
4/11 FFS
4/16 Journalling Project 4b due. Project 5a out
4/18 Log Structured FS
Advanced Topics
4/23 SSDs Project 5a due. Project 5b out
4/25 NFS
4/30 VMMs Project 5b due
5/2 Review, Summary
5/8 Final exam 2:45PM - 4:45PM, Room TBD

Additional policies

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.

Exceptional circumstances policy: 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.