new: Sartoris-based system programming tutorial available here.
The Sartoris Project aim is to
develop a portable microkernel and a set of operating system services that
support:
-
The efficient implementation of
local system calls.
-
Concurrent execution of several
OS 'personalities', ie a UNIX environment and a native microkernel-based
interface.
-
Simple and elegant integration
of distributed operating system components.
The microkernel implements a
minimal system call set, that presents the following abstractions to the
operating system:
-
Tasks. A task is composed
by a virtual address space, a set of inter task communication objects, and a
set of permissions for accessing the input/output address space.
-
Threads. A thread is a
path of execution within a task. The interrupt handling in a Sartoris-based
system is performed using interrupt-driven threads.
-
Messaging. The
microkernel implements an asynchronous fixed-length inter-task messaging
system.
-
Shared memory. The
microkernel memory-sharing mechanism allows a task to share portions of its
address space with other tasks in a secure way. In systems that support paging,
this will be implemented using memory aliasing.
Currently, we have a working
implementation of the microkernel for the x86 family of processors.
We are also porting the
microkernel to a x86-like architecture, simulated using single process in a
Linux machine. We are interested in producing a tool that can be used in
operating systems teaching.
The minimalization of the kernel
moves most of the operating system design issues to the operating system
servers framework. Currently, we have implemented a toy unix-like operating
system to stress the microkernel, named Oblivion, and a more feature complete multi-server system, Asgard.
Formal verification in operating
systems is another area of interest to the project, but we have not addressed
that issue yet.