CS 377: Operating Systems - Nachos Projects
UMASS Computer Science, Spring 2011 [Course homepage]
INSTRUCTIONS
A significant element of this class are three programming projects using the (Java version of the) Nachos instructional operating system. Although Java may
seem an odd choice, both the (outdated) C version of Nachos and the Java version focus on OS concepts; they are rather equivalent at a high-level.
TA info
For any questions concerning Nachos projects, please email Tingxin Yan(yan@cs).
Discussions
Our discussion sessions will primary focus on nachos project. However, other topics may also covered during the discussion sessions.
Here is a list of slides and materials used for in-class discussion.
Groups
You must form a group of 3 students for these projects. To declare a group's membership, send e-mail to dganesan [at] cs.umass.edu and yan [at] cs.umass.edu with the group members' names and email addresses. The group declaration deadline is Jan 25. After this date, we will randomly combine remaining students into groups of 3. The final grouping results are here.
Obtaining Nachos
You can download a java distribution of Nachos here. Within that archive you will find the various java
classes necessary to run Nachos.
Installing nachos
Nachos on Linux/Mac OS/Windows+Cygwin:
- Download nachos source from here in your nachos home directory.
- In your home directory, type following commands to unzip and untar the source:
$ tar -zxf nachos-umass-spring11.tar.gz
- This command will create a directory called nachos/ under your home directory.
- type following commands to compile nachos with project 1:
$ cd nachos/proj1
$ make
$ ./../bin/nachos
- Now nachos should be running with project 1.
Nachos on Windows+Eclipse:
(Thanks to Misha for contributing these instructions!)
- Extract the nachos tar to an arbitrary folder (referred to as cs377, you can name it whatever you want)
- In eclipse: New Java Project.
- Select "Create Project From Existing Source"
- Browse for the "cs377" folder and select it. Note: Do NOT select the nachos folder itself. This way the package structure is preserved.
- Click Finish.
- In Eclipse, use the package explorer to browse to nachos/machine/Machine.java.
- Run it (You will get an error saying: "Error loading nachos.conf")
- Click the drop down run menu and select "Run Configurations", Give your run configuration a name (Project1 for example)
- Go to the arguments tab and select "Other" for your working directory.
- Click on "Workspace" and browse for proj1 (The entry should look like "${workspace_loc:nachos/nachos/proj1}").
- Click Run.
PROJECTS
There are three projects that covers three major topics in Operating systems: Threads, Multiprogramming, and Memory Management.
You are advised to start early and get ahead if possible! Each project is weighted equally - 15% of your final grade.
Grading
- The design document will be worth 20% of the project grade, and the code itself will be worth the other 80%. You must turn in your initial design document in order to get a grade for the project. A detailed instructions on how to write a document can be found here.
- Late submission: Sometimes unexpected events make it difficult to get a project in on time. For this reason, each group will have a total of 5 free late days to be used for projects throughout the semester. You can use them however you like --- no explanations are needed. Use late days wisely. After you have used up your late days, any assignment handed in late will be marked off 10% per day - no exceptions whatsoever. Try to save some late days for the last project. Weekend days are counted in the same way as weekdays (e.g. if the project deadline is Friday and you turn it in Sunday, that's two days late).
Submission Instructions
- Projects will be submitted electronically. Projects (design docs, code, and group evaluations) are due at 5:00 pm on the due date. To account for short-term unexpected events like computer crashes, submission problems, and clock skew, we will allow 4 hours of slack and accept projects until exactly 8:59 pm.
- 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.
- Submission site: TBD
milestone Documentation: 2/21; Code: 2/25
due Documentation: 2/28; Code: 3/4
due Documentation: 3/31; Code: 4/7
due Documentation: 4/23; Code: 4/30
Additional Resources
Gnomic Bromides
- Lib.assertTrue() is your new best friend:
- For entry from code which you DID write, it helps you keep track of
invariants you established.
- For entry from code which you DID NOT write, it helps you verify
that you understand the nachos environment.
Note that these can be compiled out so there is essentially no
performance hit.
- Look at the javadoc for the functions you use, and related functions.
It has lots of nachos invariants and secret tips. Reading other nachos
code is useful too, to see what tools are provided to you (lots!).
- When hacking fails, try pencil and paper.
- Prefer parsimony.
Last Update: 3/9 2011, 2:15pm