Table of Contents

Project 2: Threads

This is not a mandatory homework. It has been posted solely for students who want to work on more problems related to PinOS.

This project is a group homework for four students (in exceptional cases three students).

Project Overview

Welcome to Project 2: Threads! In this project, you will add features to the threading system of PintOS.

In Project 1, each thread that you dealt with (except the init and idle threads) was also associated with a user process, with its own address space, data backed by an executable file, and ability to execute in userspace. Importantly, each thread that corresponded to a userspace process was the only thread in that process; multithreaded user programs were not supported.

In this project, you will overcome this limitation by adding support for multithreaded user programs. Moreover, you will implement an efficient alarm clock and strict priority scheduler. However, for simplicity, you will implement these features only for kernel threads - threads that only execute in kernel mode and have no userspace component.

The details of this assignment can be found below. Even if you read through some of the PintOS documentation during previous projects, we recommend (re)reading through the following sections. This will likely help you understand the required tasks.

Additionally, we suggest you go over Study Guide 1: OS Fundamentals, ‘Threads’ in Study Guide 2, and Study Guide 3: Synchronization, trying to answer all the questions. The Study Guides Scheduling and Starvation might be helpful as well.

This project is the second milestone in a series of group projects designed to be worked on by four students. You are allowed - and moreover required and encouraged - to collaborate inside your group on all parts of the project.

The group projects are designed to incrementally implement more features in PintOS such that any follow-on project will rely on the previous projects being finalized properly.

Project Tasks

Here is a list of documents that we suggest you read once before working on things. This will help to minimize the time you spend on every step between setting up your environment and submitting your work.


Back to top

hkaiser@cct.lsu.edu