TINA
From VirtualSquare
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.
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.
To get project assignment descriptions, support code and sample solutions to the project assignments, please write directly to the authors of TINA

