Computer Science
>
>

CS167 Operating Systems

Spring 2023

Brown University

CS167 offers comprehensive insights into the principles and intricacies of operating systems. Topics range from multithreaded programming to file system designs. Students will not only grasp theoretical knowledge but also get hands-on experience, particularly through the optional lab CS169, where they can develop an operating system called Weenix.

Course Page

Overview

In this class, you'll have the opportunity to learn both the overarching principles of operating systems as well as the intricacies of how they work.

We'll cover topics including multithreaded programming; managing threads, interrupts, and storage; processor scheduling; operating system structure; virtualization; security; and the design of both local and distributed file systems. You'll develop your skill as a C programmer while simultaneously learning what goes on inside your computer from the moment you power it on.

As part of the class, if you are enrolled in CS167, you may choose to take the (optional) half-credit lab, CS169. If you do so, you will attend the same lectures and complete the written assignments as usual. However, you will only complete the first two programming assignments from CS167, before embarking on an in-depth project wherein you build much of the functionality of a small operating system called Weenix. It is a significant time investment, and you'll still get a lot from the class if you don't take the lab. Some thoughts on taking CS169 from previous students can be found here. CS267 covers the material of both CS167 and 169; it is for graduate students only.

Prerequisites

Skills Needed

  • Ability to write and debug largish programs in C with POSIX threads
    • CSCI 330/1330 or CSCI 300/1310 (you may want to review POSIX threads material from 330 lectures)
  • Basic computer architecture
    • CSCI 330/1330 or CSCI 300/1310

Learning objectives

The Course

  • Implement threads
  • Learn about operating systems
  • Implement one (Weenix)
    • file-system-related components (1670)
    • most of the rest of it (1690, 2670)

Textbooks and other notes

Workload Components

  • Four moderate programming assignments
    • UThreads: simple user-level threads package
    • MThreads: more sophisticated user-level threads package
    • VFS: system calls and high-level file system
    • S5FS: low-level file system
  • One large programming assignment: Weenix
  • combines VFS and S5FS, as well as Processes, Drivers, and Virtual Memory
  • Four homeworks
  • In-class TopHat questions

Textbook

Operating Systems In Depth: Design and Programming, 1st Edition

Other courses in Operating Systems

CS240 Advanced Topics in Operating Systems

Winter 2023

Stanford University

CS 140: Operating Systems

Spring 2020

Stanford University

CSE 333 Systems Programming

Summer 2022

University of Washington

CS 111 Operating Systems Principles

Autumn 2022

Stanford University

CS 140E: embedded operating systems

Winter 2023

Stanford University

Courseware availability

Lecture slides and notes available at Lectures

No videos available

Assignments available at Assignments

Lecture reviews and help sessions available at Resources

Covered concepts