In this course, we will study the three main concepts of modern operating systems design: Virtualization, Concurrency, and Persistence. We will also study how they are implemented in practice. We will use the Rust programming language as a tool for investigating these concepts.
At the end of this course, you will be expected to be able to:
Letter grade | Points to achieve |
---|---|
A | 900 |
B | 800 |
C | 700 |
D | 600 |
Assignment Category | Total Value |
---|---|
Programming Assignments (10) | 300 |
Redox Presentations (2) | 100 |
Midterm Exam | 150 |
Final Project | 200 |
Final Exam | 250 |
Date | Day | Topic/Activity | Reading | Assignment Out | Assignment Due |
---|---|---|---|---|---|
1/16 | Wednesday | Overview Three Pieces of OS Command Line | Introduction to Operating Systems | Shell Assignment #1 | None |
1/18 | Friday | Command-Line Shell Processes Pipes I/O Redirection | Virtualization Processes | Shell Assignment #2 | Shell Assignment #1 |
1/21 | Monday | Martin Luther King, Jr. Day | None | None | None |
1/23 | Wednesday | Rust Command-Line Arguments | Rust Example Rust: Common Programming Concepts (3.1-3.5) | Rust Programming #1 | Shell Assignment #2 |
1/25 | Friday | Ownership, Lifetimes, Borrowing File Systems | Ownership (4.1-4.3) Files and Directories | None | None |
1/28 | Monday | Structs, Enums | Structs (5.1-5.3) Enums (6.1-6.3) Packages, Crates, Modules (7.1-7.2) | Rust Programming #2 | Rust Programming #1 |
1/30 | Wednesday | Networking, Collections, Error Handling | TcpStream Common Collections (8.1-8.3) Error Handling (9.1-9.3) | None | None |
2/1 | Friday | Generics, Pointers | Generics (10.1-10.3) Pointers (15.1-15.6) | None | None |
2/4 | Monday | Processes Threads | Concurrency and Threads Fearless Concurrency (16.1-16.4) | Web Server #1 | Rust Programming #2 |
2/6 | Wednesday | Server-side sockets Unit Testing | TcpListener Unit Testing (11.1-11.3) | None | None |
2/8 | Friday | Address Spaces | Address Spaces | None | None |
2/11 | Monday | Creating Processes | Processes in Rust Process API | Rust Shell Implementation #1 | Web Server #1 |
2/13 | Wednesday | File Descriptors | Stdio Pipes nix crate | None | None |
2/15 | Friday | More Rust | Iterators and Closures (13.1-13.4) Object-Oriented Programming (17.1-17.3) Advanced Pattern-Matching (18.1-18.3) | Rust Shell Implementation #2 | Rust Shell Implementation #1 |
2/18 | Monday | Executing Processes | Direct Execution | None | None |
2/20 | Wednesday | File System Implementation | File System Implementation | None | None |
2/22 | Friday | Review for Midterm | None | None | Rust Shell Implementation #2 |
2/25 | Monday | Midterm Exam | None | None | None |
2/27 | Wednesday | Performance Analysis | None | Web Server #2 | None |
3/1 | Friday | Programming to the Bare Metal | Freestanding Rust Binary A Minimal Rust Kernel VGA Text Mode Unit Testing | None | None |
3/4 | Monday | Exceptions and Interrupts | Integration Tests CPU Exceptions Double Faults Hardware Interrupts | None | None |
3/6 | Wednesday | Memory Hierarchy Caching Address Translation | Hierarchy of Memory and Caches Address Translation | None | None |
3/8 | Friday | Segmentation Paging | Rust: The Stack and the Heap Segmentation Paging | Bare Metal Programming #1 | Web Server #2 |
3/11 | Monday | Translation Lookaside Buffers Implementing Paging | TLBs Implementation of Paging | None | None |
3/13 | Wednesday | Swapping | Swapping Mechanisms Swapping Policies | None | None |
3/15 | Friday | Free Space Management | Free Space Management | None | Bare Metal Programming #1 |
3/18 | Monday | Spring Break | None | None | None |
3/20 | Wednesday | Spring Break | None | None | None |
3/22 | Friday | Spring Break | None | None | None |
3/25 | Monday | Redox | Redox Book, Chapters 1 and 2 | Bare Metal Programming #2 | None |
3/27 | Wednesday | Redox | Redox Book, Chapters 4, 5, 6 | None | None |
3/29 | Friday | Final Project Overview Flash Drives | Flash-based SSDs | Final Project Proposals | None |
4/1 | Monday | Redox Presentation #1 | None | None | Bare Metal Programming #2 |
4/3 | Wednesday | Redox Presentation #2 | None | None | None |
4/5 | Friday | Final Project Topic Presentations | None | None | Final Project Topic Documents |
4/8 | Monday | Redox Presentation #3 | None | None | None |
4/10 | Wednesday | Redox Presentation #4 | None | None | None |
4/12 | Friday | Progress Reports | None | None | Final Project Progress Report #1 |
4/15 | Monday | Redox Presentation #5 | None | None | None |
4/17 | Wednesday | Redox Presentation #6 | None | None | None |
4/19 | Friday | Progress Reports | None | None | Final Project Progress Report #2 |
4/22 | Monday | Redox Presentation #7 | None | None | None |
4/24 | Wednesday | Redox Presentation #8 | None | None | None |
4/26 | Friday | Review for Final Exam | None | None | None |
4/29 | Monday | Project Presentations | None | None | Final Project |
5/7 | Tuesday | Final Exam Period (8:30-11:30 am) | None | None | Final Exam |