This course is an introduction to operating systems. An operating system is a layer of low-level software that runs directly on computer hardware and below running applications. It's purpose is to:
- Provide abstractions to hide the messiness and complexities of hardware to simplify application programming.
- Provide virtualization so that each application runs as if it is the only application running on the hardware, even if multiple applications run simultaneously.
- Provide isolation so that one running application cannot access, or modify, the state or behavior of another running application, whether accidentally or maliciously.
The high-level goals of this course is to have students understand the design and implementation of operating systems software. Topics include: introduction to operating systems concepts, process management, memory management and file systems. Time permitting, we will discuss additional topics. The laboratory exercises will require implementing software that helps understand core operating system concepts. You can also check the course description in the academic calendar.
The learning outcomes of the course include:
- Understand the design requirements of operating systems.
- Understand basic operating systems concepts, including threads, synchronization, scheduling, memory management, and file systems.
- Implement software that helps clarify operating systems concepts.
- Gain significant implementation and debugging experience in the C programming language.
- Learn to use software management tools, including, make, git.
|L0101||Ashvin Goelemail@example.com||Course administrator|
|L0102, L0103||Jonathan Eyolfsonfirstname.lastname@example.org|
Course announcements and course discussion will be on the Piazza web site. Please sign up for this course on Piazza. You should post any questions about the course on Piazza before sending individual mails to the TAs or the instructors.
You can provide course feedback by posting private notes on Piazza. These notes are only visible to instructors and TAs.. Note that we do not allow posting anonymous notes.
As a student, you should feel free to answer questions posed by other students on Piazza. In fact, we will assign 3 extra bonus marks to the five students who qualitatively contributed the most by answering other students' questions.
Course quizzes, grades and course evaluations will be available at the UofT Quercus website.
The suggested text book for this course is: Modern Operating Systems (4th Edition) by Andrew Tanenbaum.
The instructors recommend the following book highly: Operating Systems: Three Easy Pieces by Remzi H. Arpaci-Dusseau and Andrea C. Arpaci-Dusseau. You can access freely available chapters of the book from the book website or support the authors by buying it.
The course schedule in shown in the table below.
|Instructor||Time and Location|
|Section 1: Prof. Ashvin Goel|
|Lectures||Tue 12-1pm (SF3202), Thu 12-1pm (SF3202), Fri 12-1pm (SF3202)|
|Office hour||Thu 1-2pm (SF2001B)|
|Section 2: Prof. Jonathan Eyolfson|
|Lectures||Mon 9-10am (GB220), Wed 9-10am (GB220), Thu 9-10am (GB220)|
|Office hour||Thu 2-3pm (BA5110)|
|Section 3: Prof. Jonathan Eyolfson|
|Lectures||Mon 1-2pm (GB119), Tue 2-3pm (GB119), Thu 1-2pm (GB119)|
|Office hour||Tue 3-4pm (BA5110)|
The labs and the final exam for all the sections will be held at the same time as shown below.
|Time and Location|
|Labs||Tue 9-12pm (GB243, GB251), Wed 3-6pm (GB243, GB251), Fri 12-3pm (GB243, GB251)|
|Online Quizzes||Sep 29 8-9pm (Thu), Oct 20 8-9pm (Thu), |
|Final Exam||Dec 12, 9:30am-12:00pm|
Lectures: Your may attend the lectures for any of the sections but please do not switch lectures because the sections may not be synchronized.
Tutorial: There are no tutorials in this course.
Office Hour: The purpose of the office hour is to get clarifications on the lecture material. The instructors will be available for office hour weekly to meet with students individually or in small groups. No new material will be covered in the office hour.
Lab Sessions: The labs are designed so that they can be done online. However, you can attend one three-hour lab session each week to discuss lab-related questions and get one-on-one help with TAs during part of the lab sessions. Labs are marked by TAs outside the lab sessions, so attending the lab sessions is not mandatory.
Quizzes: There will be three online quizzes during the term. Each quiz will be 45 minutes long, with 15 additional minutes provided for uploading your answers.
Final Exam: The details of the final exam will be announced later.
Marking and Evaluation
There will be several labs and quizzes during the term. There will also be a final exam during the final exam period. The details of the quizzes and final exam will be provided in class and on the course web site. The composition of the final mark is as follows:
- Lab assignments: 30%
- Quizzes: 30% (equally weighed)
- Final exam: 40%
A repository of past exams is available on the lab machines in the
/cad2/ece344f/exams directory. The exam questions are organized by year and also by specific course topic. These files are in the PDF file format. You can view the files on the lab machines using a PDF reader, or you can copy these files to your home machine and view them there.
We do not provide or mark problem sets in the course. The repository of past exams is your best resource for preparing for exams. Answers for most questions have been provided. Feel free to get additional clarifications about the questions or their answers on the Piazza website.
Students will have a week to contest a grade. Please submit a short explanation justifying the reasons for resubmission.
The following is a list of the topics, and the corresponding reference in the Modern Operating Systems (Tanenbaum) book. Please keep in mind that this list of topics is tentative and is intended to serve as a general guide only.
|1. Introduction to OS Concepts||Week 1||Textbook Chapter 1|
|2. Process Management||Textbook Chapter 2|
|Threads and Processes||Weeks 2 and 3|
|Mutual Exclusion||Week 4|
|Process Management System Calls||Week 6|
|3. Memory Management||Textbook Chapter 3|
|Introduction to Memory Management, Paging||Week 7|
|TLB, Demand Paging||Week 8|
|Memory Management System Calls||Week 9|
|Page Replacement||Week 10|
|4. I/O and File Systems||Textbook Chapters 4, 5|
|File Systems||Week 11|
|File System Consistency||Week 12|
|5. Introduction to Cloud Computing, Virtualization||Time permitting||Instructor's notes|
Students are encouraged to discuss with one another issues and problems that arise in the course of solving the lab assignments. However, plagiarism and cheating will not be tolerated under any circumstances. Cheating includes, but is not limited to, generating expected output in an attempt to fool the automated marking script. It is also an offense to allow others to copy and submit your work for credit, whether with or without your knowledge. So, it is your responsibility to protect your work from being copied by others.
We will check all submitted code to ensure that it is not similar to others.
A reasonable rule of thumb to follow during a discussion is that nobody should leave the discussion with written notes of what was said. It is unlikely that two individuals that have discussed various approaches to a problem will write highly similar programs unless one or both have a written record of what was said.
For more details, please refer to the Academic Integrity web site at the university.
Accommodations and Mental Health Support
If you have a learning need requiring an accommodation, the University of Toronto recommends that students register as soon as possible with Accessibility Services.
The University of Toronto and the Faculty of Applied Science & Engineering offer a wide range of free and confidential services that can assist you with health and mental health challenges. If you find yourself feeling distressed and in need of more immediate support resources, consider reaching out to the counsellors at My Student Support Program (MySSP) or visiting the Feeling Distressed webpage.
Once you have taken this course, here is some information about follow-on courses that may interest you.