[description] [textbook] [timeline] [xinu lab at Purdue] [experimenting with xinu] [code available for download] [xinu in industry] [xinu in universities] [what others are saying] [contact us]


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.

Xinu Development Timeline

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
Digital Equipment Corporation donates LSI-11 computers and project starts to explore how to integrate network protocol software into an operating system

The Xinu Lab at Purdue

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.

Experimenting With Xinu

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).

Xinu Code Available For Download:

Notes From Tom Trebisky:

Xinu in Industry

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.

Xinu in Universities

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.

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