We will be using Pintos for this semester's structured projects.
Project | Hint Slides | Due Date | Time Left |
---|---|---|---|
1 | Sep 11, 11:59pm | 2015-09-11 23:59:59 GMT-04:00 | |
2 | TBP | Oct 2, 11:59pm | 2015-10-02 23:59:59 GMT-04:00 |
3 (MS) | Design Milestone | Oct 6 11:59pm (no extensions) |
2015-10-06 23:59:59 GMT-04:00 |
3 | TBP | Oct 21, 11:59pm | 2015-10-21 23:59:59 GMT-04:00 |
4 (MS) | Design Milestone | Oct 27, 11:59pm | 2015-10-27 23:59:59 GMT-05:00 |
4 | Nov 6, 11:59pm | 2015-11-06 23:59:59 GMT-05:00 | |
Open Ended | Dec 9, 11:59pm |
You may work in teams of 2 students for the projects, but you are not required to. You may not switch groups during a project once you have committed to a team, however you may switch partners after a project.
Submission instructions for all projects, please replace '0' with the appropriate number:
Note: Please issue a "make clean" command before submitting projects 1 through 4.
The submission script will not accept files larger than 500,000 bytes.
Submission Instructions
1. In the 'pintos/src' directory, issue the command
tar cvzf project0-yourpid.tgz *
Note: the "pintos" directory is wherever you keep a working copy of Pintos.
It does not need to be named "pintos".
2. Upload project0-yourpid.tgz using the submission web page.
To access the submission page, log on with your CS SLO account
(that's the same account you use to log on to rlogin.cs.vt.edu).
Alternatively, you may directly submit from the command line
using the command
submit.pl p0 project0-yourpid.tgz
This command is found in ~cs3204/bin (even though you will
submit to the CS 5204 directory).
All of the remaining four projects are posted here together. If you want to think ahead while you write your code, feel free—in fact, we recommend it. But keep in mind that until the deadline for the current project, the details of the future projects are subject to change.
We will be using gitlab this semester to allow git repository management in an honor code compliant way. The use of a git repository hosted on git.cs.vt.edu is required for these projects, even if you work by yourselves. This gitlab instance allows authentication with your SLO id. You need to upload an ssh key before you can start cloning.
Every group should start by forking gback/pintos-2015. Then, use gitlab's facilities to create a group and give your team members access to your fork. Each team member should be able to directly clone your fork and pull/push from it. Make sure to make your forked repository private (it will be public initially after the fork).
The following portions of the documentation are relevant with respect to coding standards in as much as they affect your grade:
Read them carefully, in particular Section
1.2.2.2 Source Code.
You should read everything below before attempting any of the projects: You'll want to read these once you start work on the projects.
Their advice can save you a lot of time:Basic Information about Pintos
Bracketed notations in Pintos source code comments can be looked up in the
Bibliography.
Project 1: Threads
Project 2: Multiprogramming
Project 3: Virtual Memory
Project 4: File Systems
how to boot Pintos on your own PC
Success Criteria: successfully boot a second CPU and demonstrate that both CPUs are used to schedule processes in some of the concurrent p2 workloads (syn-read, syn-write). Note that this project does not include adding support for multi-threading for user processes, which would be optional. Also optional is TLB shootdown.
Success Criteria: Run at least 1 substantial client (e.g. curl) and 1 substantial server program (e.g. telnetd or httpd) on Pintos and interact with it via a common web browser or command line tool. The programs themselves do not need to be full-feature, mini-versions are fine.
Success Criteria: Be able to successfully demonstrate your shell. Optionally, a more complex application can be ported, e.g. a Lua interpreter.