CS 5600 - Computer Systems

Project 1: Threads in Pintos

This project is due at 11:59:59pm on September 24, 2014.


In this assignment, you will begin to familiarize yourself with the Pintos "teaching" operating systems. Pintos comes with a very minimal threading system for managing concurrent threads of execution and their associated contexts. Your job is to enhance the threading system to improve its efficiency and safety by implementing standard locking and synchronization mechanisms. The complete description of this assignment and technical specifications can be found here.


Your project will graded based on the Pintos test results and the design quality of your code, each of which comprises 50% of your grade. Your code must compile and run on the CCIS Linux machines: we cannot and will not grade code that is running on your personal machine. You must include a design document named pintos/src/userprog/DESIGNDOC in the userprog/ directory of your submission. Examples of how to complete the design document can be found in the Pintos documentation here, and a blank template design document for this project can be downloaded here. For more details on how we will grade your project, see the Pintos grading documentation.

Submitting Your Project

If you have not done so already, register yourself for our grading system using the following command:
$ /course/cs5600f14/bin/register-student [NUID]
NUID is your Northeastern ID number, including any leading zeroes.

Before turning in your project, you and your partner(s) must register your group. To register yourself in a group, execute the following script:

$ /course/cs5600f14/bin/register project1 [team name]
This will either report success back or will give you an error message. If you have trouble registering, please contact the course staff. You and your partner(s) must all run this script with the same [team name]. This is how we know you are part of the same group.

To turn-in your project, you must submit your (thoroughly documented) code and design document. You submit your project by using the turnin script to submit your pintos directory. The turnin script takes two arguments: the name of the project (in this case, project1), and the directory of files you want to submit. For example, you could execute the following:

$ cd ~/pintos/src/userprog/
$ make clean
$ cd ~
$ /course/cs5600f14/bin/turnin project1 pintos/
The script will print out every file that you are submitting, so make sure that it prints out all of the files you wish to submit! Only one group member needs to submit your project. Your group may submit as many times as you wish; only the last submission will be graded, and the time of the last submission will determine whether your assignment is late.