CS538A/436A
Operating Systems Design and Implementation

~~ University of British Columbia | 2021-W2 ~~

Dr. Reto Achermann

Assistants: Bingyao "Jerry" Wang

Home Operations Project Schedule Tutorials Honesty Code Submission Piazza

Project

During this course, the students will build a fairly complete operating system as the class project. Thus, the project is the central pillar of this course. This page provides some overview of the course project. For detailed project descriptions and other informations see the book in the resource bundle, the schedule, and general rules.

Advice: Stuck? Checkout the Discussion Board for hints, already posted questions, and/or post your own question there.

Teams

The majority of the milestones will be done as a team of 4 students (5 with two or more undergraduate students), while the individual milestones must be completed by each student on their own.

Advice: Look early for team members. Get to know each other during the individual milestones at the beginning of the class.

You will need to work together, this requires some project management and conflict resolution skills (git merges anyone?).

All team members are expected to be able to explain the design and implementation.

Already formed a team? Pick an avatar (team name) and e-mail me with your names and CWLs.

Milestones

The project is divided into a sequence of individual (*) and team milestones that must be completed successfully. This is not a coding interview, the use of third party libraries is permitted with instructor approval.

Overview

M0* - "Hello World!" I like to blink LEDs

M1* - Where are all my resource? (Physical Memory Management)

M2 - Who thought I could run two things at a time? (Process Spawning)

M3 - Hello, You're there? (inter-process communication)

M4 - I'm eating too much memory, can I get some more? (Virtual Memory)

M5 - Look I can do things in parallel! (Multi-core)

M6 - Hello, you're there again? (user-level message passing)

M7-a* - Long distance calls (networking)

M7-b* - If only I could remember (storage)

M7-c* - are phonebooks a thing? (name server)

M7-d* - I can't agree with my sibling (distributed capabilities)

M7-e* - Oh, I can give you commands (shell)

Report

Documentation is always an important part of any project, so the report is in the class project.

The report should describe the overall architecture, design choices that have been made, interesting implementation details, etc.

Note, the report is not an auto-generated API documentation.

Use the report to cite any third-party libraries and code snippets you've integrated into your project.

See Operations for more details on the format.

Final Presentation

The last part of the project is to do a short presentation / demo to the class.

This is intended to be fun and to provide the students a platform to show off their great project work: reflect on the design choices that have been made. What has worked well, what didn't? What would you have done differently. Oh, and did anyone say demo?

See Operations for more details on the format.