-@node Introduction, Pintos Tour, Top, Top
+@node Introduction
@chapter Introduction
Welcome to Pintos. Pintos is a simple operating system framework for
displayed in the terminal you used to run @command{pintos}. This is
because Pintos sends all output both to the VGA display and to the first
serial port, and by default the serial port is connected to Bochs's
-@code{stdout}. You can log this output to a file by redirecting at the
+@code{stdin} and @code{stdout}. You can log serial output to a file by
+redirecting at the
command line, e.g.@: @code{pintos run alarm-multiple > logfile}.
The @command{pintos} program offers several options for configuring the
from them by @option{--}, so that the whole command looks like
@code{pintos @var{option}@dots{} -- @var{argument}@dots{}}. Invoke
@code{pintos} without any arguments to see a list of available options.
-Options can select a simulator to use: the default is Bochs, but on the
-Linux machines @option{--qemu} selects qemu. You can run the simulator
+Options can select a simulator to use: the default is Bochs, but
+@option{--qemu} selects qemu. You can run the simulator
with a debugger (@pxref{GDB}). You can set the amount of memory to give
the VM. Finally, you can select how you want VM output to be displayed:
use @option{-v} to turn off the VGA display, @option{-t} to use your
terminal window as the VGA display instead of opening a new window
-(Bochs only), or @option{-s} to suppress the serial output to
-@code{stdout}.
+(Bochs only), or @option{-s} to suppress serial input from @code{stdin}
+and output to @code{stdout}.
The Pintos kernel has commands and options other than @command{run}.
These are not very interesting for now, but you can see a list of them
program twice and have it do exactly the same thing. On second and
later runs, you can make new observations without having to discard or
verify your old observations. This property is called
-``reproducibility.'' The simulator we use by default, Bochs, can be set
-up for
+``reproducibility.'' One of the simulators that Pintos supports, Bochs,
+can be set up for
reproducibility, and that's the way that @command{pintos} invokes it
by default.
second of real time. Simulation in real-time mode is not reproducible,
and options @option{-j} and @option{-r} are mutually exclusive.
-On the Linux machines only, the qemu simulator is available as an
+The qemu simulator is available as an
alternative to Bochs (use @option{--qemu} when invoking
@command{pintos}). The qemu simulator is much faster than Bochs, but it
only supports real-time simulation and does not have a reproducible
of the test results.
For project 1, the tests will probably run faster in Bochs. For the
-rest of the projects, they will probably run faster in qemu.
+rest of the projects, they will run much faster in qemu.
+@command{make check} will select the faster simulator by default, but
+you can override its choice by specifying @option{SIMULATOR=--bochs} or
+@option{SIMULATOR=--qemu} on the @command{make} command line.
You can also run individual tests one at a time. A given test @var{t}
writes its output to @file{@var{t}.output}, then a script scores the
specifying @option{VERBOSE=1} on the @command{make} command line, as in
@code{make check VERBOSE=1}. You can also provide arbitrary options to the
@command{pintos} run by the tests with @option{PINTOSOPTS='@dots{}'},
-e.g.@: @code{make check PINTOSOPTS='--qemu'} to run the tests under
-qemu.
+e.g.@: @code{make check PINTOSOPTS='-j 1'} to select a jitter value of 1
+(@pxref{Debugging Versus Testing}).
All of the tests and related files are in @file{pintos/src/tests}.
Before we test your submission, we will replace the contents of that
The original structure and form of Pintos was inspired by the Nachos
instructional operating system from the University of California,
-Berkeley. A few of the source files were originally more-or-less
-literal translations of the Nachos C++ code into C. These files bear
-the original UCB license notice.
+Berkeley.
A few of the Pintos source files are derived from code used in the
Massachusetts Institute of Technology's 6.828 advanced operating systems
course. These files bear the original MIT license notice.
The Pintos projects and documentation originated with those designed for
-Nachos by current and former CS140 teaching assistants at Stanford
+Nachos by current and former CS 140 teaching assistants at Stanford
University, including at least Yu Ping, Greg Hutchins, Kelly Shaw, Paul
Twohey, Sameer Qureshi, and John Rector.
-Example code for condition variables (@pxref{Condition Variables}) is
+Example code for monitors (@pxref{Monitors}) is
from classroom slides originally by Dawson Engler and updated by Mendel
Rosenblum.