Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

first commit

  • Loading branch information...
commit 6d024a8942dcfdae768fbcead06e9aed7eb8b1d5 0 parents
@lqhl authored
Showing with 270 additions and 0 deletions.
  1. +270 −0 README
270 README
@@ -0,0 +1,270 @@
+ Nachos for Java README
+
+Welcome to Nachos for Java. We believe that working in Java rather than
+C++ will greatly simplify the development process by preventing bugs
+arising from memory management errors, and improving debugging support.
+
+Getting Nachos:
+
+Download nachos-java.tar.gz from the Projects section of the class
+homepage at:
+
+ http://www-inst.EECS.Berkeley.EDU/~cs162/
+
+Unpack it with these commands:
+
+ gunzip -c nachos-java.tar.gz | tar xf -
+
+Additional software:
+
+Nachos requires the Java Devlopment Kit, version 1.5 or later. This is
+installed on all instructional machines in:
+ /usr/sww/lang/jdk-1.5.0_05
+To use this version of the JDK, be sure that
+ /usr/sww/lang/jdk-1.5.0_05/bin
+is on your PATH. (This should be the case for all class accounts
+already.)
+
+If you are working at home, you will need to download the JDK.
+It is available from:
+ http://java.sun.com/j2se/1.5/
+Please DO NOT DOWNLOAD the JDK into your class account! Use the
+preinstalled version instead.
+
+The build process for Nachos relies on GNU make. If you are running on
+one of the instructional machines, be sure you run 'gmake', as 'make'
+does not support all the features used. If you are running Linux, the
+two are equivalent. If you are running Windows, you will need to
+download and install a port. The most popular is the Cygnus toolkit,
+available at:
+
+ http://sources.redhat.com/cygwin/mirrors.html
+
+The Cygnus package includes ports of most common GNU utilities to
+Windows.
+
+For project 2, you will need a MIPS cross compiler, which is a
+specially compiled GCC which will run on one architecture (e.g.
+Sparc) and produce files for the MIPS processor. These compilers
+are already installed on the instructional machines, and are
+available in the directory specified by the $ARCHDIR environment
+variable.
+
+If you are working at home, you will need to get a cross-compiler
+for yourself. Cross-compilers for Linux and Win32 will be available
+from the CS162 Projects web page. Download the cross compiler
+distribution and unpack it with the following command:
+
+ gunzip -c mips-x86-linux-xgcc.tar.gz | tar xf -
+
+(Substitute the appropriate file name for mips-x86.linux-xgcc in the
+above command.) You need to add the mips-x86.linux-xgcc directory to
+your PATH, and set an environment variable ARCHDIR to point to this
+directory. (Again, this has already been done for you on the
+instructional machines.)
+
+Compiling Nachos:
+
+You should now have a directory called nachos, containing a Makefile,
+this README, and a number of subdirectories.
+
+First, put the 'nachos/bin' directory on your PATH. This directory
+contains the script 'nachos', which simply runs the Nachos code.
+
+To compile Nachos, go to the subdirectory for the project you wish
+to compile (I will assume 'proj1/' for Project 1 in my examples),
+and run:
+
+ gmake
+
+This will compile those portions of Nachos which are relevant to the
+project, and place the compiled .class files in the proj1/nachos
+directory.
+
+You can now test Nachos from the proj1/ directory with:
+
+ nachos
+
+You should see output resembling the following:
+
+ nachos 5.0j initializing... config interrupt timer elevators 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 24750, kernel 24750, user 0
+ Disk I/O: reads 0, writes 0
+ Console I/O: reads 0, writes 0
+ Paging: page faults 0, TLB misses 0
+ Network I/O: received 0, sent 0
+
+This is the correct output for the "bare bones" Nachos, without any of
+the features you will add during the projects.
+
+If you are working on a project which runs user programs (projects 2-4),
+you will also need to compile the MIPS test programs with:
+
+ gmake test
+
+Command Line Arguments:
+
+For a summary of the command line arguments, run:
+
+ nachos -h
+
+The commands are:
+
+ -d <debug flags>
+ Enable some debug flags, e.g. -d ti
+
+ -h
+ Print this help message.
+
+ -s <seed>
+ Specify the seed for the random number generator
+
+ -x <program>
+ Specify a program that UserKernel.run() should execute,
+ instead of the value of the configuration variable
+ Kernel.shellProgram
+
+ -z
+ print the copyright message
+
+ -- <grader class>
+ Specify an autograder class to use, instead of
+ nachos.ag.AutoGrader
+
+ -# <grader arguments>
+ Specify the argument string to pass to the autograder.
+
+ -[] <config file>
+ Specifiy a config file to use, instead of nachos.conf
+
+
+Nachos offers the following debug flags:
+
+ c: COFF loader info
+ i: HW interrupt controller info
+ p: processor info
+ m: disassembly
+ M: more disassembly
+ t: thread info
+ a: process info (formerly "address space", hence a)
+
+To use multiple debug flags, clump them all together. For example, to
+monitor coff info and process info, run:
+
+ nachos -d ac
+
+nachos.conf:
+
+When Nachos starts, it reads in nachos.conf from the current
+directory. It contains a bunch of keys and values, in the simple
+format "key = value" with one key/value pair per line. To change the
+default scheduler, default shell program, to change the amount of
+memory the simulator provides, or to reduce network reliability, modify
+this file.
+
+Machine.stubFileSystem:
+ Specifies whether the machine should provide a stub file system. A
+ stub file system just provides direct access to the test directory.
+ Since we're not doing the file system project, this should always
+ be true.
+
+Machine.processor:
+ Specifies whether the machine should provide a MIPS processor. In
+ the first project, we only run kernel code, so this is false. In
+ the other projects it should be true.
+
+Machine.console:
+ Specifies whether the machine should provide a console. Again, the
+ first project doesn't need it, but the rest of them do.
+
+Machine.disk:
+ Specifies whether the machine should provide a simulated disk. No
+ file system project, so this should always be false.
+
+ElevatorBank.allowElevatorGUI:
+ Normally true. When we grade, this will be false, to prevent
+ malicious students from running a GUI during grading.
+
+NachosSecurityManager.fullySecure:
+ Normally false. When we grade, this will be true, to enable
+ additional security checks.
+
+Kernel.kernel:
+ Specifies what kernel class to dynmically load. For proj1, this is
+ nachos.threads.ThreadedKernel. For proj2, this should be
+ nachos.userprog.UserKernel. For proj3, nachos.vm.VMKernel. For
+ proj4, nachos.network.NetKernel.
+
+Processor.usingTLB:
+ Specifies whether the MIPS processor provides a page table
+ interface or a TLB interface. In page table mode (proj2), the
+ processor accesses an arbitrarily large kernel data structure to do
+ address translation. In TLB mode (proj3 and proj4), the processor
+ maintains a small TLB (4 entries).
+
+Processor.numPhysPages:
+ The number of pages of physical memory. Each page is 1K. This is
+ normally 64, but we can lower it in proj3 to see whether projects
+ thrash or crash.
+
+Documentation:
+
+The JDK provides a command to create a set of HTML pages showing all
+classes and methods in program. We will make these pages available on
+the webpage, but you can create your own for your home machine by doing
+the following (from the nachos/ directory):
+
+ mkdir ../doc
+ gmake doc
+
+Troubleshooting:
+
+If you receive an error about "class not found exception", it may be
+because you have not set the CLASSPATH environment variable. Add the
+following to your .cshrc:
+
+ setenv CLASSPATH .
+
+Credits:
+
+Nachos was originally written by Wayne A. Christopher, Steven J.
+Procter, and Thomas E. Anderson. It incorporates the SPIM simulator
+written by John Ousterhout. Nachos was rewritten in Java by Daniel
+Hettena.
+
+Copyright:
+
+Copyright (c) 1992-2001 The Regents of the University of California.
+All rights reserved.
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose, without fee, and without written
+agreement is hereby granted, provided that the above copyright notice
+and the following two paragraphs appear in all copies of this
+software.
+
+IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY
+FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
+ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF
+THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES,
+INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE
+PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY OF
+CALIFORNIA HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES,
+ENHANCEMENTS, OR MODIFICATIONS.
+
Please sign in to comment.
Something went wrong with that request. Please try again.