CS 460: Operating Systems
Montana State University, Fall 2019About the Course
This course introduces students to the design of operating systems. Students will be exposed to a wide variety of topics, including: processes, threads, concurrent programming, scheduling, memory, files, I/O management, and security issues. The course will conclude with a series of advanced topics.
Logistics
Lectures: Barnard Hall 108 | Monday, Wednesday, Friday 8:00–8:50 a.m.
Textbook: Operating Systems: Internals and Design Principles (9th Edition), by William Stallings — (Amazon)
D2L: https://ecat.montana.edu/d2l/home/553509
Instructor: Dr. Travis Peters | travis.peters1@montana.edu | NAH 253A | x4296
Office Hours: NAH 253A | Monday, Wednesday, Friday 9:00–10:00 a.m. and by appointment.
If you’d like to meet with me outside of office hours, please contact me and we’ll set up a time. Also, I hang around my office quite a bit so if my office door is open, feel free to drop in.
Grader: Gerard Shu Fuhnwi | gerard.shufuhnwi@student.montana.edu
Office Hours: Barnard Hall 259 | Monday, Wednesday 1:10–2:10 p.m.
For more information on getting help, visit the Student Success Center website.
Resources
- (Required) Textbook: Operating Systems: Internals and Design Principles (9th Edition), by William Stallings — (Amazon)
- (Optional) Textbook: zyBook - Operating Systems
- Sign in or create an account at learn.zybooks.com
- Enter zyBook code:
MONTANACSCI460PetersFall2019 - Subscribe. NOTE: A subscription is $58. Students may begin subscribing on Aug 29, 2019 and the cutoff to subscribe is Dec 03, 2019. Subscriptions will last until Dec 27, 2019.
Technical Resources
- System Programming Overview / Programming in C Refresher #SysProgramming #Programming
- C and C++ in 5 days #Programming
- An Introduction to C Programming for Java Programmers #Programming
- A Nice
MakefileTutorial #Programming - The Linux Kernel Module Programming Guide #SysProgramming
- A Tiny Guide to Programming in 32-bit x86 Assembly Language #SysProgramming
- PLT and GOT - the key to code sharing and dynamic libraries #SysProgramming
- POSIX Threads Programming #Assignment1
- The 101 of ELF files on Linux: Understanding and Analysis
Reference Resources
- Browse the Linux Source Code (thanks @bootlin!)
- The C Cheat Sheet #Programming
- Summary of GCC Flags (Options) #Programming
- x86 and amd64 instruction reference
Research Resources
- Reading a computer science research paper
- How to give a technical presentation (how to give a scientific talk)
- Efficient Reading of Papers in Science and Technology
Interesting OS-Related Papers
- A
fork()in the road - HotOS’19 - CheriABI: enforcing valid pointer provenance and minimizing pointer privilege in the POSIX C run-time environment - ASPLOS’19 summary
- Compress Objects, Not Cache Lines: An Object-Based Compressed Memory Hierarchy - ASPLOS’19 summary
- Granular Computing - HotOS’19
- Practical Safe Linux Kernel Extensibility - HotOS’19
- My VM is Lighter (and Safer) than your Container - SOSP’17
- Efficient Lock-Free Durable Sets - OOPSLA’19
- Twizzler: An Operating System for Next-Generation Memory Hierarchies
Prerequisites
Prior to taking this course, you should have fulfilled the following CSCI prerequisites: CSCI 232, and CSCI 361 or EELE 371.
If you do not have any of the above prerequisites, you should touch base with me as soon as possible.
Questionnaire
I would like to know a little about you. Please fill out this Questionnaire as soon as possible.
Schedule
This is a tentative schedule that is subject to change with minimal notice. The schedule will be altered as the term progresses.
Below is the calendar for this course. It is the responsibility of the students to frequently check this web-page for schedule, readings, and assignment changes. As the professor, I will attempt to announce any change to the class, but this web-page should be viewed as authoritative. If you have any questions, please contact me.
Unless otherwise indicated, references are to the textbook Operating Systems: Internals and Design Principles (9th Edition), by William Stallings.
Feedback is always appreciated regarding typos, suggestions for more detailed explanations, additional examples, etc.
Other stuff from class: Makefile Vagrantfile
| Date | Topics & Lectures | Reading | Assignments |
|---|---|---|---|
| Week 1 | Introduction; Week 1 will be led by Professor Binhai Zhu. | Chapters 1 & 2 | |
| 08/26/2019 | Introduction & Course Overview; History of OS Development (Part I). slides | Chapter 2 | HW1 (Due 09/13) |
| 08/28/2019 | Class Cancelled. | ||
| 08/30/2019 | History of OS Development (Part II); Early Memory Management: static and dynamic partition, memory deallocation. slides |
7.1-7.2 | |
| Week 2 | Review and High-Level OS Concepts | ||
| 09/02/2019 | No Class. Labor Day. | ||
| 09/04/2019 | OS Reboot: Introduction Revisited + Week 1 Review slides | Questionnaire | |
| 09/06/2019 | Computer System Overview & Operating System Overview slides | Chapter 1 & 2 | |
| Week 3 | Processes, Threads | Chapters 3–6 | |
| 09/09/2019 | Class Cancelled. | ||
| 09/11/2019 | Processes (Part I). slides | 3.1, 3.2 | |
| 09/13/2019 | Processes (Part II). slides fork_bomb.c | 3.3-3.5 | |
| Week 4 | |||
| 09/16/2019 | Processes (Part III). slides | ||
| 09/18/2019 | Processes & Threads. slides | 4.1, 4.2, 4.3, 4.6 | |
| 09/20/2019 | Some Review of Processes & Threads. slides | HW2 (Due 10/11) | |
| Week 5 | Concurrency | ||
| 09/23/2019 | Concurrency: Mutual Exclusion & Synchronization (Part I) slides | 5.1-5.9, Intro to Threads | |
| 09/25/2019 | Concurrency: Mutual Exclusion & Synchronization (Part II) slides threads01.c threads02.c | ||
| 09/27/2019 | Concurrency: Mutual Exclusion & Synchronization (Part III) slides | PA1 (Due 10/16) | |
| Week 6 | |||
| 09/30/2019 | Finish Concurrency: Mutual Exclusion & Synchronization (Part IV) slides | 6.1-6.6 (6.7-6.8) | HW3 (Due 10/18) |
| 10/02/2019 | Concurrency: Deadlock & Starvation (Part V) slides | (Extra) Synchronization + Deadlock | |
| 10/04/2019 | Exam Review — Come with questions and topics you’d like to review! | ||
| Week 7 | |||
| 10/07/2019 | Exam #1 Sample Exam Coversheet | ||
| 10/09/2019 | Class Cancelled. | ||
| 10/11/2019 | Review Exam #1 Results (exam & feedback available on Gradescope) MINIMUM 34.5%, MEDIAN 72.75%, MAXIMUM 91.5%, MEAN 67.48%, STD DEV 17.27% |
||
| Week 8 | Scheduling | Chapters 9 & 10 | |
| 10/14/2019 | Scheduling (Part I) slides | 9.1-9.2 (9.3) | |
| 10/16/2019 | Scheduling (Part II) slides | 10.1-10.2 (10.3-10.5) | |
| 10/18/2019 | Scheduling (Part III) slides | HW4 (Due 10/25) | |
| Week 9 | Memory Management & Virtual Memory | Chapters 7 & 8 | |
| 10/21/2019 | Memory (Part I) slides | 7.1-7.2 | |
| 10/23/2019 | Memory (Part II) slides | 7.3-7.4 | |
| 10/25/2019 | Memory (Part III) slides | 8.1-8.2 (8.3,8.4,8.6) | HW5 (Due 11/01) PA2 (Due 11/11) |
| Week 10 | File Systems & I/O | Chapters 11 & 12 | |
| 10/28/2019 | Memory (Part IV) slides | ||
| 10/30/2019 | I/O & Files (Part I) slides | ||
| 11/01/2019 | I/O & Files (Part II) slides | Project Proposal Due! HW6 (Due 11/08) |
|
| Week 11 | OS Security. Potential Special Topics: Embedded Systems, IoT, Mobile OS, Networks, VMs, Containers, Side-Channel Attacks |
Chapters 13–16 | |
| 11/04/2019 | Hold for Guest Lecture - Will Peteroy, CEO @ icebrg.io - Breaking and Securing an OS slides | DEP & ASLR I / DEP & ASLR II / 0days | |
| 11/06/2019 | Exam Review — Come with questions and topics you’d like to review! | ||
| 11/08/2019 | Exam #2 Sample Exam Coversheet | PA3 ( |
|
| Week 12 | |||
| 11/11/2019 | No Class. Veteran’s Day. | ||
| 11/13/2019 | Hold for Guest Lecture - Daniel Pagan, OS Enthusiast & Pen Tester @ IBM X-Force Red slides | ||
| 11/15/2019 | Review Exam #2 Results (exam & feedback available on Gradescope) MINIMUM 51.5%, MEDIAN 85.0%, MAXIMUM 97.0%, MEAN 81.93%, STD DEV 11.13% |
||
| Week 13 | |||
| 11/18/2019 | OS Wrap-Up slides | ||
| 11/20/2019 | Project Presentations. | ||
| 11/22/2019 | Class Cancelled. |
||
| Week 14 | |||
| 11/25/2019 | Class Cancelled. |
||
| 11/27/2019 | No Class. Thanksgiving. | ||
| 11/29/2019 | No Class. Thanksgiving. | ||
| Week 15 | |||
| 12/02/2019 | Project Presentations. | ||
| 12/04/2019 | Project Presentations. | ||
| 12/06/2019 | Project Presentations. (Last Day of Class.) | ||
| Week 16 | |||
| 12/12/2019 | Project Presentations. (Official Final Exam Slot — 8:00am - 9:50am.) | Project Due! PA3 Due! |
Schedule Legend: HW = Homework, P = Programming Assignment, E = Exam.
Grading
The course will involve a variety of assignments, exams, and a project. Unless otherwise noted by the instructor, all work in this course is to be completed independently. If you are ever uncertain of how to complete an assignment, you can go to office hours or engage in high-level discussions about the problem with your classmates on the Piazza boards.
- Participation: 10%
- Programming Assignments: 30%
- Homework: 10%
- Exams: 30% (2 exams, 15% each)
- Project: 20%
If a scheduling conflict prevents you from taking an exam at the scheduled time, you must let me know at least one week before the exam.
There is no final exam for the course, but there is a final project.
Will the course grades be curved?
No. I’ve studied the topic and in my current understanding (thanks to great insights and research by others), applying a curve does more harm than good in the long run.
Assignments
Homework in this course comes in two forms: short assessments of comprehension based on textbook readings, paper readings, material covered in class, etc., and programming assignments that provide opportunities to gain hands-on experience with select topics from the course.
Handing in Assignments
Unless otherwise stated, everything will be submitted through D2L, and is due by 10pm on the due date.
Even when an assignment has some written exercises, you are required to either type in a file or scan your written work and submit it electronically.
To submit output from your program, submit a copy-pasted file in plain text format and/or a screenshot, as appropriate.
For plain text, you can use an editor like Sublime, TextEdit, NotePad, Emacs, or even Word, but be sure to save as plain text.
If an assignment requires you to submit multiple files, zip all the files into a single zip file and submit that. If you have to revise your submission, submit your new zip file once more, with VX appended (V2 for Version 2, V3 for Version 3, etc.); only the last version will be graded.
Late Penalties
You are allowed at most one late submission (up to 48 hours) with no penalty – no excuse required.
To use your free late pass, indicate in your submission that you are electing to use your free pass (e.g., in a comment on your submission in D2L).
Note that you cannot change this decision later.
Once your pass is used (or you fail to indicate that you are using your free pass), the penalties for late submissions are as follows:
- < 8 hours: 10%
- < 24 hours: 20%
- < 48 hours: 40%
- ≥ 48 hours: no credit.
Note: this cannot be used to receive full credit on any assignment checkpoints.
Exams
There will be two in-class exams. If you are unable to attend class on these days, you must meet with me at least 1 week prior to the scheduled date of the exam to arrange an alternative date/time/location to take the exam.
Exam #1 will be held in class on 10/07/2019. Topics covered up to the class prior to the exam are all in-scope for this exam. (In other words, all topics covered in the first half of this course are fair game.) Sample Exam Coversheet
Exam #2 will be held in class on 11/08/2019. Topics covered between the first exam and up to the class prior to the exam are all in-scope for this exam. (In other words, all topics covered in the second half of this course are fair game.) Sample Exam Coversheet
Gradescope
We will be using Gradescope to evaluate exams this term, which allows us to provide fast and accurate feedback on your work. Exam grades will be returned through Gradescope. As soon as grades are posted, you will be notified immediately so that you can log in and see your feedback. You may also submit regrade requests if you feel we have made a mistake.
MSU has an institutional license with Gradescope, so you can use your NedID to login: https://www.gradescope.com/saml.
Project
Students will complete an OS-related project in the final weeks of this term. Students taking this course will be divided into groups of 2-4 people. (1-person teams are permissible, but groups of 2-4 people are preferable.) Each group will choose, propose, and implement an OS-related project; groups will also present a live demo and write a report about the project. The evaluation of the project is based on the report, quality, presentation, and participation. Each member of the same group should participate in the presentation/demo and will receive the same mark.
Click here to go to the official project page…
Sample Solutions
Any sample solutions that are released will be posted on D2L.
Course Expectations
The expectations for the course are that students will attend every class, do any readings assigned for class, and actively and constructively participate in class discussions. Class participation will be a measure of contributing to the discourse both in class, through discussion and questions, and outside of class through contributing and responding to the D2L forum.
Laptops and Phones
Out of respect for your classmates, I ask that you turn off all laptops, tablets, and phone screens for the duration of each class!
I have heard of various ways of dealing with the distractions that laptops cause during lecture: laptop zones, laptop permission forms, and the honor system. None worked. I also have a hard time saying “no laptops” since I know that some people do use them to take notes and follow along with live coding examples, etc. Here’s what I propose:
If you are someone that absolutely needs their laptop during lecture and you can’t part with it for 3 hours per week, then by all means, use your laptop. If you can manage to go through lecture without your laptop, I believe you will learn more and ultimately take more away from this class. There is recent research that attests to the negative impacts of learning and retention when multitasking. It has also been shown that writing notes by hand rather than on a laptop engages different cognitive processes and has direct (positive) consequences for learning.
Getting Help
Read: How To Ask Questions The Smart Way, Eric Steven Raymond
- If you visit me or any of the course staff for help with a program that you are writing, make sure that you can get to an electronic copy of your program. That way, we can try to compile and run it. It’s nice to have a printed version of your program, but we cannot compile and run a printed version.
- When you email a program to one of us, you just need to add your program as an attachment to your email, along with additional information as to what problems you have observed. If you have multiple files, I prefer it in a zipped folder with a Makefile or easy-to-understand instructions on how to compile and run your program.
- When you email a question, please be as specific as possible, and tell us what you’ve done to try to figure out a solution for yourself. We reserve the right to not answer emails that say nothing more than “My program doesn’t work; where is the problem?”
- Please do not share detailed solutions in public settings (e.g., class, office hours, discussion forums), unless an assignment or project indicates that you can work with others.
- Please try to prepare before getting help in office hours or by email; course staff can be much more helpful if you’ve already made a solid effort at solving the problem you are working on, and can articulate what you have tried and what you are thinking.
Academic Honesty
Please review MSU’s Code of Conduct, Policies, Regulations, & Reports.
A couple of clarifications and additions:
TL;DR Although you may discuss and design with others, the work you hand in (e.g., code, write-ups) must be entirely your own. Anything you submit that did not originate from you must be accompanied by attribution. Also, please do not share solutions or detailed information about solutions (e.g., specific code) with others.
Religious Observances
Some students may wish to take part in religious observances that occur during this academic term. If you have a religious observance that conflicts with your participation in the course, please meet with me as soon as possible to discuss appropriate accommodations.
Accommodations & Disabilities
If you have a documented disability (including “invisible” disabilities such as chronic diseases and learning disabilities) for which you are or may be requesting any accommodation(s), I encourage you to reach out to me and the Office of Disability Services (ODS) as soon as possible.
If you have a need for accommodations on exams, please see information on the MSU’s Testing Services website.