RT-MINIX: Real-Time MINIX



Introduction

A real-time system is one in which, in addition to the logical correctness of results, the timeliness is also of critical importance. As many other computer applications, real-time systems are usually built by using the services offered by an operating system. In this case, the services provided should be slightly different than the case for traditional applications. It should provide basic support for predictability, satisfaction of real-time constraints, fault tolerance and integration between time-constrained resources and scheduling.

The RT-MINIX project was initially developed in 1993 by Gabriel A. Wainer, and it was devoted to provide programming facilities to develop hard real-time software. Under RT-MINIX, the programmer was allowed to define timing constraints for the tasks, letting the OS to execute them in a timely fashion. In this way, productivity, security and development costs can be improved. Several real-time services were added. First, Rate Monotonic and Earliest Deadline First scheduling were included. To allow these changes, several data structures in the operating system were modified (to consider tasks period, execution time and criticality). A new multiqueue scheme was defined, so as to accommodate real-time tasks along with interactive and CPU-bound tasks. Between 1994 and 1995 we published the initial results of this project.

A new set of signals was added to indicate special situations, such as missed deadlines, overload or uncertainty of the schedulability of the task set. All these services were made available to the programmer as a complete set of new system calls.

Several work was done using the tool, spanning from the testing of new scheduling algorithms to kernel modifications. In despite of this fact, several additional features were identified to be added to original environment. Recently, the need to integrate the previous work in a new version for the operating system arisen.

The project was continued in 1998, where new techniques related with sensor replication for fault-tolerance and new I/O drivers for A/D devices. Recently, the RT kernel was completely reorganized including a new set of fault-tolerant scheduling algorithms (results about this effort to come in early April 2002).

This was one of the first efforts in developing a real-time kernel on an open-source operating system. It is an excellent source for practice in educational institutions and research centers, as Minix OS kernel is thoroughly documented in Andrew Tanenbaum's books, and the source code is available for everyone with a copy of the book. The kernel is so well organized that anyone with some previous experience in programming C and Assembly language can face modifications to the OS to provide new RT services. We have used the results of this project in earlier research, and our ideas were  later used by different developers of Linux-based RT kernels.

Feel free to download the source code and to change it at will (if you want your changes to be linked or included in this page, let us know).

Download and Installation instructions

Current Release (v2.0)

The release archive is available for installation and use under MINIX 2.0.0.

Copy the file to /usr. Use uncompress rt-minix.tar.Z to uncompress the archive. This will create a new file, rt-minix.tar. Modify the orginal source code files using tar xvf rt-minix.tar. This action will copy all the files inside the package to their proper location.

Then enable the real-time services in the file /usr/include/minix/config.h by changing the value of ENABLE_REALTIME to 1. Build the kernel (type make hdboot in the /usr/src/tools directory to recompile all the related files and get a new kernel). After that, rebuild the system libraries to provide the real-time extensiones to user applications (type make all and then make install in the /usr/src/lib directory). If you plan to use the sensing algorithms, enable the joystick support (type MAKEDEV joystick under /dev, and then check the newly created devices typing ls -l j* under /dev)

Now it´s time to boot into the new operating system and start playing (type halt at the prompt to shutdown the operating system, and then type boot when the bootloader prompt appears).

Examples

There is also a package to install several real-time tests, examples and applications. The release archive is available for installation and use under RT-MINIX 2.0.

Copy the file to /usr/local. Use uncompress rt-apps.tar.Z to uncompress the archive. This will create a new file, rt-apps.tar. Now use tar xvf rt-apps.tar to create a new directory (/usr/local/rt) with three new subfolders (sensing, scada and samples) and to copy all the files inside the package to their proper location. In each of these subdirectories, use make all to create all the example programs. Please refer to the README files for more instructions.

Remember that, before compiling these examples, you must rebuilt the libraries, as stated in the previous section (Current release).

Related Papers and Presentations

During the development of this project, several reports were produced in order to document the status and goals that have been achieved so far.

P. Rogina M. Sc. thesis focused on Fault Tolerance techniques applied to Real-Time Systems. RT-MINIX was intensely used as a platform for robust sensing algorithms' implementation and testing.

Related Links

MINIX main site

The main site for distribution of Minix. All distributions are available here.

MINIX Resources

The World Wide Web resources guide for Minix users. Minix on the Net provides information about the small educational operating system developed by Andrew S. Tanenbaum. There are lot of pointers to all the web resources, news from usenet newsgroup comp.os.minix, and documents.

DIAPM RTAI

The Realtime Linux Application Interface for Linux lets you write applications with strict timing constraints for this widely used operating system. Like Linux itself this software is a community effort. RTAI supports several architectures.

KURT

Kansas University RealTime: a firm real-time system that allows for explicit scheduling of any real-time events, including processes; based on Linux. It contains source code and patches for download, documentation, and links to projects which currently employ this software.

Google sources on Real-Time Linux

Google sources on Embedded Linux

Contacts and Mailing List

Please send all bug-reports/questions/suggestions to gabrielw@dc.uba.ar. Comments are welcome on how we can improve this system and/or this document.

Copyright and Credits

This software is the result of research work at Departamento de Computación, FCEyN, Universidad de Buenos Aires. I coordinated the latest updates while working at Carleton University, in Ottawa, ON, Canada (Department of Systems and Computer Engineering). It may be used and distributed according to the terms of the MINIX License, incorporated herein by reference. Neither the institution mentioned above or the authors accept any liability whatsoever for the use of this product. 

Authors:

The software was originally developed by Gabriel Wainer in 1993-94. Later, some of his students worked on the development of modules, programs and examples using different MINIX distributions (1.5, 1.7.0, 2.0.0). This is a list of participants in the current version of the software:

Please send bug-reports/suggestions/comments to gabrielw@dc.uba.ar


Pablo J. Rogina

Last modified: Tue Apr 01 2003