Due: Thursday, January 8, at 11:59pm
Submission of this assignment will satisfy the UCSD Commencement of Academic Activity requirement (i.e., #FinAid). Those students who do not complete
this assignment in a timely fashion will
Nachos is a Java application written to perform the functions of a real operating system. The details of how the operating system implements concepts such as threading, virtual memory, and processes are exposed to you. All of the source code implementing the Nachos operating system is included with the distribution. However, this baseline implementation does not implement some very useful features. During the quarter, you will complete the missing portions of the operating system and use the functionality in your projects.
In this pre-project you will familiarize yourself with compiling and running Nachos. The tutorial below should not take that much time; if you seem to be having serious problems, check Piazza to see if others have reported the same problem and post a note if not.
$ ssh account@ieng6.ucsd.edu To begin work for one of your courses [ CSE220_WI26_A00 ], type its name at the command prompt. (For example, "CSE220_WI26_A00", without the quotes). $ CSE220_WI26_A00 [...] - Prepping CSE220_WI26_A00
Also take some time to read the instructions for all projects on the main projects page.$ wget 'https://cseweb.ucsd.edu/classes/wi26/cse220-a/projects/nachos-cse220-wi26.tar.gz' $ tar xvfz nachos-cse220-wi26.tar.gz
You can safely ignore any compiler warnings. Then run the nachos program:$ cd nachos/proj0 $ make
The nachos command is a script that invokes the Java VM to run Nachos. It should already be in your path, and you can also find the script in bin/nachos. Running the program causes the methods of nachos.threads.ThreadedKernel to be called in the order listed in threads/ThreadedKernel.java:$ nachos
Your session should resemble the following (but does not have to be exactly the same):
$ cd nachos/proj0 $ make $ nachos (equivalent to ../bin/nachos) nachos 5.0j initializing... config interrupt timer user-check grader *** thread 0 looped 0 times *** thread 1 looped 0 times *** thread 0 looped 1 times *** thread 1 looped 1 times *** thread 0 looped 2 times *** thread 1 looped 2 times *** thread 0 looped 3 times *** thread 1 looped 3 times *** thread 0 looped 4 times *** thread 1 looped 4 times Machine halting! Ticks: total 2130, kernel 2130, user 0 Disk I/O: reads 0, writes 0 Console I/O: reads 0, writes 0 Paging: page faults 0, TLB misses 0 Swap: COFF reads 0, swap reads 0, swap writes 0, swap skips 0 Network I/O: received 0, sent 0
Now go back up into the source directories (e.g., machine, threads, userprog, etc.) and trace the execution path by hand to find where the output is coming from (i.e., which classes are generating those output statements). Your job will be simple for this initial project, just modifying a print statement. Specifically, change the Nachos print statement:
to*** thread n looped m times
*** awesome thread n looped m times
And that's it. There are no tricks or edge cases, you just need to follow the instructions.
For this project, each student must submit their project using a
script we provide. Go to your top-level nachos directory (not the
nachos/proj0/nachos subdirectory) and run
the submit-proj0 script:
$ cd .. [assuming still in nachos/proj0 dir, cd up to the nachos/ dir]
$ pwd [make sure we're in the nachos/ dir]
/home/linux/ieng6/CSE220_WI26_A00/<account>/nachos
$ ls [doubly make sure we're in the nachos/ dir]
ag machine network proj1 proj3 security threads vm
bin Makefile proj0 proj2 README test userprog
$ submit-proj0
$ ls -l proj0.tar.gz
-rw-r----- 1 account CSE220_WI26_A00 NNN Jan 7 10:23 proj0.tar.gz
If you get a "command not found" error when running submit-proj0, make sure you have prepped for CSE 220 and also see the troubleshooting tips page.
The output of submit-proj0 should resemble the following. The output will not be exactly the same (e.g., file sizes will differ), and that's ok!
Input your pid:
Input your ucsd email:
The following files will be included with this turnin:
=======================================
proj0.tar.gz
=======================================
Total files: 1
Do you want to proceed? (yes/no): yes
Creating turnin...
NNN bytes written
Turnin created successfully:
/home/linux/ieng6/CSE220_WI26_A00/turnin.dest/account_2026010*_NNNNN.tar.gz
If you're feeling paranoid, you can verify that the number of bytes copied (bytes written) NNN is just slightly larger than the size of your proj0.tar.gz file (source file size). If it is, then everything worked and you have successfully turned in project 0. There are no tricks or edge cases to test for, you just need to follow the instructions.
You will have until the posted due date to submit the project. You can submit as many times as you like. The last version submitted before the due date will be the one accepted. The script submits your project but does not grade it. We will grade all submissions after the deadline, and we will notify everyone when we have posted the scores to canvas (the project 0 score will be empty in canvas until we grade and post the scores).
If you encounter problems with your account (command not found, disk quota exceeded, ssh fails, etc.), see these troubleshooting tips.
Last updated: 2026-02-10 09:53:23 -0800 [validate xhtml]