XINU stands for Xinu Is Not Unix -- although it shares concepts and even names with Unix, the internal design differs completely. Xinu is a small, elegant operating system that supports dynamic process creation, dynamic memory allocation, network communication, local and remote file systems, a shell, and device-independent I/O functions. The small size makes Xinu suitable for embedded environments.
A completely revised and reorganized second edition of the textbook is now available D. Comer, Operating System Design - The Xinu Approach, Second Edition CRC Press, 2015. ISBN 9781498712439.
|
1980-81 | 1981-82 | 1982-83 | 1983-85 | 1985-86 | 1985- | 1986 | 1987 | 1989 | 1988-90 | 1990-91 | 1992 | 1990s | 2008 | 2010-11 | 2011 | 2014 | 2015 | |||
|
The Xinu lab located in the Computer Science Department at Purdue University is
used for both teaching and research. The lab is divided into a set of front-end
machines (standard workstations running Linux) and a set of back-end machines
(machines that are only used to download and test code). Each of the back-end
machines has three connections: a connection to an Ethernet switch that provides
access to the Internet, a connection to a rebooter device that can reboot the
machine when needed, and a connection from the console serial port to a multiplexer.
Software in the lab automates back-end allocation, download, and console interaction,
making it easy for a student to compile an operating system image, allocate an unused
back-end, establish a window that connects to the back-end console port, download
the compiled image into the memory of the back-end, and run the image. The lab makes
it easy for students to experiment with operating systems and protocol software.
There are several recent versions of Xinu available for an x86 architecture
hardware board, an ARM architecture hardware board, and Oracle's (free) VirtualBox
hypervisor.
In our lab, we use two computers for Xinu: a conventional computer used to compile
a Xinu image, and second,, otherwise idle, back-end computer, into which we download
and run the image.
The second edition of the text contains code for both the Intel x86 (Galileo)
and ARM Cortex 8 (BeagleBone Black), and the code is freely available.
Either of the platforms is relatively inexpensive and available from
commercial web sites.
There are several ways to experiment.
For the BeagleBone Black, the quickest was to get started involves using a serial
cable.
Connect the serial cable from the BBB to a PC, download a Xinu image over the
serial cable, and then enter a command that causes the BBB to run the image.
You can download a instructions that explain the above in detail for the BeagleBone Black;
there are two sets:
For the Galileo, the quickest way to get started involves using an SD memory card and a serial
cable.
Connect the serial cable from the board to a PC (inexpensive cables are all that
one needs).
Run a terminal emulator, such as minicom to display the serial
output in a window on the PC.
Plug the SD card into the PC, compile Xinu and load the image onto the
SD card.
Unplug the SD card from the PC and plug it into the experimenter board.
Boot the board, and use the console serial connection to boot the image
from the SD card.
Output from Xinu will be displayed over the serial line.
The second way to experiment takes more time to set up, but allows one to
recompile and download quickly once the pieces are in place.
As described above, a serial line must be connected from the experimenter
board to a PC.
In addition, one must: connect a board to an Ethernet switch, connect a PC
to the same switch, configure the board to boot over the network,
and configure the PC to run DHCP and TFTP server processes that supply
the information needed to boot.
Once all the above has been set up, it is possible to compile Xinu, place
the image in a file on the PC, and then power-cycle the experimenter
board to boot the Xinu image automatically.
We use this approach in the lab to enable a rapid edit-compile-download-test
cycle.
You can download a
document that explains the above in detail for the Galileo board (both Generations 1 and 2).
We enthusiastically endorse the two approaches above because they allow Xinu to
run on real hardware and provide users with the best experience in designing
systems.
For situations in which users cannot afford an experimenter board or prefer
not to touch real hardware, we have a version of Xinu that runs in a Virtual
Machine (VM) environment, which means it can run on a conventional computer
with no extra hardware.
The Virtual Box version is based on code from the second edition of the text,
but has a few differences.
For example, because the emulated console uses port-mapped I/O instead of memory
mapped I/O, the fetch and store operations on CSRs in the Xinu tty driver have
been replaced by calls to macros that either generate port-mapped or memory
mapped refernces (the macros are defined in io.h).
Because the emulated Ethernet differs from the Galileo Ethernet, the Ethernet
driver has been replaced.
Finally, references to other memory-mapped functions have been replaced (e.g.,
the low-level PCI bus functions have been reverted to use the generic x86
version).
If your company has used Xinu in the past or is using Xinu at present, send a note to xinu-info@cs.purdue.edu and we will include your company in the list below.
If your university has used Xinu in the past or is using Xinu at present,
send a note to xinu-info@cs.purdue.edu and we will include your university and the year you started using Xinu in the list below.Experimenting With Xinu
Xinu Code Available For Download:
Versions For The Second Edition Of The Text (the second edition was published
in 2015).
Note: the interrupt mechanisms in the x86 versions has been upgraded from the text to
use a newer x86 interrupt controller.
that contains helpful installation hints.
Older versions of Xinu (especilaly those for other architectures) can be found
here.
Notes From Tom Trebisky:
Tom Trebisky joined the Xinu project in 2016. Tom has been working with
embedded hardware, including BeagleBone and Galileo boards. He created his
own operating system, but we won't talk about that here.
Tom has prepared some notes on booting Xinu on the BeagleBone Black and the
use of uboot as well as notes on the Galileo and its performance.
Tom's notes may be helpful in understanding how to set up Xinu and what
to expect from the hardware.
Click here to read Tom's notes on
the BBB,
and
click here to read Tom's notes on
the Galileo (note the link about performance).
Xinu in Industry
Xinu in Universities
What Others Are Saying
        "The Xinu book is the best operating systems book on the market because it removes the black magic and explains how to build an OS from the ground up. It's not like other books I tried to read -- they gave me a headache. I have already started telling friends how great it is."
-- David Bafumba-Lokilo, Ecole Polytechnique
de Montreal