Course Syllabus

NOTE: Some links in this syllabus page may only be accessible to currently enrolled students.

We use many tools in this course, including (but not limited to):

  • VScode
  • C
  • Python
  • WSL/Linux/Mac
  • ssh
  • gdb
  • gcc
  • qemu

These, and several others, are laid out in great detail in the Tools and Tips page. It is one of the most important foundational modules in the entire course, so please pay attention and do what it asks you to do.

When you need to get additional help on concepts in this course, we recommend the following priority, though of course this will also depend on your own preference!

  1. Search/Post on Ed Discussions and/or Teams
  2. Participate in Office Hours. No scheduling necessary, just drop in! Details follow.
  3. Schedule free personalized tutoring with our College of Engineering student tutors. Make an appointment by navigating to

Office Hours

TA Office Hours are held via the class-specific Microsoft Teams Team. For details on getting set up on Teams, please go Teams - How To.
This will walk you through getting logged in to the class Team.

Listing by Day (all times U.S. Pacific Time, UTC-08:00) (to be filled in during week 1): 



Office Hour Time  



Communication Policy - Kevin McGrath

Please post all course-related questions in the appropriate channels in either Teams or Ed Discussions so that the whole class may benefit from your conversation.  Not all posts require a reply from the instructor/TA and often it is better for students to hash out an answer to a question.

Please email your instructor only for matters of a personal or private (grading) nature.  The instructor or a TA will reply to most course-related questions within 24-48 hours.

Do not use the Canvas messaging utility to contact me. Please use email. 

Technical Questions

If you have a technical issue or question when using Canvas, 24/7 support is available in Canvas via chat, phone, or e-mail through the Help link in the menu on your left .

Additional technical support (use of software/browsers) can be accessed through the OSU Computer Helpdesk.

Academic or Student Support Services

For all other academic and student support services, refer to the Student Services link found in the course menu.

The following services are available to all Ecampus students:

Accessibility Tools for Canvas

The following tools are available within your Ecampus course. 

ReadSpeaker - is a tool that reads text on Canvas course pages aloud.

TextAid - is an additional tool that allows users to have nearly any text highlighted and read aloud, including documents, Web sites, text composed by a user, and more. For more information, please visit ReadSpeaker Text Aid.

The syllabus can be found here (PDF). The course calendar is available below.

Operating Systems II is a course about the internals of operating systems. While many of the projects will be implemented in xv6, the concepts will be discussed in terms of modern operating systems, such as Linux, FreeBSD, and Windows (when appropriate). This class contains a significant amount of content. Each week contains a collection of highlights of the topics at hand in the form of either written and video content, or just written content. Each week references the relevant chapters in the textbook.

While the majority of the required reading comes from the OSTEP book from the University of Wisconsin, other references were consulted when creating the content for this course. Some excellent sources are:

  • Operating Systems in Three Easy Pieces (OSTEP), by Remzi H. Arpaci-Dusseau and Andrea C. Arpaci-Dusseau. [REQUIRED, FREE]
  • The Linux Programming Interface, Michael Kerrisk [OPTIONAL, ebook available through the OSU Library]
  • Operating Systems Design 2/e, Douglas Comer [OPTIONAL]
  • Linux Kernel Development 3/e, Robert Love [OPTIONAL]
  • The Design and Implementation of the FreeBSD Operating System 2/e, Marshall Kirk McKusick, et al. [OPTIONAL]
  • Modern Operating Systems 3/e, Andrew Tannenbaum [OPTIONAL]
  • Probably some more that I'm currently forgetting and have already put on my shelf.

In other words, the course material draws from many sources, so don't be shocked if I mention something that is not in the OSTEP book!

The course learning objects are:

  • Design, implement, and test operating system functions within a large and open source code base.
  • Select appropriately among processes, user threads, or kernel threads to solve a concurrency problem.
  • Explain why synchronization is necessary for a concurrent process scenario, and design and implement synchronization solutions.
  • Apply appropriate algorithms to avoid deadlock for a given group of concurrent processes.
  • Explain the strengths and weaknesses of several CPU scheduling algorithms with respect to wait time, turnaround time, throughput, and context-switching implementation challenges.
  • Explain various mechanisms for protection of memory, the operating system, and system/user files.
  • Map virtual addresses to physical addresses.
  • Analyze program data access patterns that may impact the performance of a virtual memory system.
  • Explain various disk block allocation/free-space management strategies, and compute access time for various disk scheduling algorithms.

Course Summary:

Date Details Due