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.