Projects
Nachos Code Distributions
The Java version of Nachos is available for you to download here: nachos-java.tar.gz (112 Kb gzipped
tarfile). You can unpack this file using the command
gzcat nachos-java.tar.gz | tar xf -
which will create the directory nachos.
See the file README contained within the tarfile for
information on using and compiling the code.
Java Distributions
The Java version of Nachos requires Java SE Java Development Kit 1.5 or
later. If you are not using an instructional machine, you can download
the appropriate Java SE JDK for your machine from here: http://www.oracle.com/technetwork/java/javase/downloads/index.html.
MIPS Cross-compilers
Nachos executes user applications on a simulated MIPS computer. In
order to compile these programs, you need a MIPS cross-compiler. One is
already installed on the instructional machines; if you are not using
an instructional machine, you must download and install the appropriate
cross-compiler from this page.
Projects
There are three projects. Each project has three components:
- A design document. You will meet with your TA to discuss your
design about 7-10 days before your code is due for each project (phase) of Nachos.
- Project code.
- Project group member evaluations.
Group assignment for Nachos Projects
General Project Information
Project Grading
The design document will be worth 40% of the project grade, and the code itself
will be worth the other 60%. You must turn in your initial design
document in order to get a grade for the project.
Project Deadlines
You should submit assignments as early as possible to avoid submission
problems. You can submit multiple times, however, only the last
submission will be graded.
Assignments (design docs, code, and group evaluations) are due by
11:59pm on the due date.
Submission Instructions
- Include your initial and final design document, a README file listing the files changes under projx folder (where x = 1, 2 ,3 for the 1st, 2nd and third project).
For the initial design documen, we expect you to provide a high-level description of your solutions to each task.
For the final design document, you should provide the following information:
- A high-level description of your solution, including design decisions and data structures
- Declarations for all new classes, procedures, and global/class variables
- Descriptions of all new procedures, including the purpose of the procedure, and an explanation of how it works and/or block diagram/pseudocode (NOT the actual code)
- (New for Project 2-3) Contributions from the team members (for each member, describe the list of tasks
involved and contributions made. Rate each member on the scale of 5 with 5 being the highest along the following
metrics: participation in project discussion, participation in design document,
participation in code development).
- Commit your codes and test cases (if applicable) to the respository (one submission per group)
Project Description
- Project #1: Threads and Synchronization
- Project #2: Scheduling and system calls
- Initial design due March. 7th
- Design document discussion (March 10th - March 15th), Group 1 - 12 (Ala), Group 13 - 23 (Qiang), Group 24 - 36 (Zhaofei)
- Code & final design document due March 17th
- Autograder test cases (Only test cases for priority scheduling are provided.)
- Project #3: Memory management (Note changes in deadlines and project description)
- Initial design due April 2nd
- Design document discussion (April 2nd - April 8th), Group 1 - 12 (Qiang), Group 13 - 23 (Zhaofei), Group 24 - 36 (Ala)
- Code & final design document due April 9th ( extended to April 18th)