MPS and µMPS
Home Page

Introduction | TINA & Kaya | Further Developments | Acknowledgements
MPS | µMPS | SF Project Page


MPS and µMPS are general-purpose computer system simulators based on MIPS R3000 processor.

Together with the main processor, RAM, ROM, disks, tapes, printer and terminal interfaces are carefully emulated and fully configurable; non-volatile memory units may be retained between simulations.

µMPS is an evolution of the original MPS project, to add support to physical memory addressing, ethernet interfaces,
and to provide a slicker user interface.

Both feature a full-fledged graphic user interface running under X Window, complete sources, documentation, and experimental projects on operating system development. They have been successfully ported on several platforms.

For any question, feel free to contact the developers.

 TINA and Kaya

TINA and Kaya are projects on experimental kernel development which use MPS and  µMPS.

TINA and its variants (AMIKE, etc.) has been used as lab project assignment for students of CS Lab2 course on operating systems at University of Bologna since 1998.

Kaya has been used as lab project assignment for students of CSCI 320 course at Xavier University in Cincinnati (Ohio, USA) since 2004.

Both project specifications were taken from those for HOCA operating system.

The first phase of TINA involves the writing of two modules that are later used in the nucleus to implement the process queue and the semaphore abstractions. The first module is a process queues management module, while the second is an active semaphore list module; they also serve as introduction to C language and the allow the students to get accustomed with the simulator.

The second phase involves building the routines that implement the notion of asynchronous sequential threads and processes, a pseudo-clock and the synchronization primitives.

TINA has a monolithic kernel, where system calls execute as reentrant privileged code in the time slices of the requesting processes. Very few system calls ought to be implemented: process creation and termination, P and V on general semaphores, I/O wait, pseudo-clock tick wait, and pass-up of traps to handlers defined by each process; this allows the creation of further layers of system management.

Both phases were provided with some simple modules to allow code testing before submission; support libraries, BIOS and documentation were handed down to students together with the simulator.

Kaya has a similar layout, but requires an additional phase, where virtual memory and I/O management are implemented.

The Student Guide to the Kaya Operating System Project is publicly available.

To get project assignment descriptions, support code and sample solutions to the project assignments, please write directly to the authors of TINA and Kaya.


MPS and especially µMPS will be used as development tools of in several courses for the next years. Here is a set of possible exercises: We think that MPS and µMPS features make them suitable for many lab projects, from computer architecture and assembly language programming, to operating systems development, resource management schemes, and real-time algorithms testing.

A network interface card device, based on VDE project, has been added to µMPS: this allows to build a network of µMPS machines.

New and more specialized projects about operating systems will then be possible; these new features will broad the range of experimental projects to inter-machine communication, parallel and distributed computing issues.


The original developer of MPS and µMPS would like to thank:

Back to top