5. The kaneton portability system
We will describe in the section the specific kaneton portability system.
The portability can be implemented through two different ways in kernels.
The first way consists in the development of an entire part, functionality of the kernel for a specific architecture. For example, let's consider the memory manager. The memory manager source file will be totally re-developed for each architecture on which the kernel will be ported. This system leads to source code parts redundancy but also to the best performances since it is possible to use every external architecture facilities to optimise the kernel execution on this architecture.
The second way consists in the design of an architecture interface defining the common architecture operations like
install_page_directory() etc. This system is better than the first from the redundancy point of view. Nevertheless, optimisations are more difficult to implement. Moreover, it is still possible for an architecture not to fill in this interface. Then, the kernel would not be able to be ported on this architecture.
The kaneton designers were not satisfied by these two solutions and so decided to adapt the second solution to the kaneton microkernel design.
The kaneton solution consists in a kind of extension of the second solution in which no interface is designed. Rather, every time an object is created, modified or destroyed, the machine-dependent source code is called to permit it to perform some operations on the object or on everything else.
This pseudo interface is better than the previous ugly and static one. Nevertheless, there still exists the possibility of an architecture not filling in this portability system.
For the kaneton microkernel we decided to use this system because it provides the most dynamic, moldable portability system. This system is experimental but seems absolutely correct. Theoritically, this system is the best because there is no redundancy and there are no constraints for the machine-dependent source code.
Moreover, this portability system is not intrusive, meaning that there is no need to modify a single line of the machine-independent source code to port kaneton on another microprocessor architecture.
The kaneton microkernel project was created in a pedagogical way.
Indeed, the kaneton authors provides many materials for the kaneton microkernel development including complete documentation and assignments.
Moreover, documentation on specific architectures are also provided to help students in a precise implementation.
In addition, the kaneton authors are developing a microkernel reference as a basis for future development in distributed systems.
This reference implementation was written using the C language and modern tools.
The current kaneton microkernel reference implementation is being ported on Intel 32-bit architectures and MIPS 32-bit architectures.
The kaneton microkernel is based on a simple paradigm which allows programmers to manage memory and execution context as they want to.
A special interest was ported on parallel and distributed programming providing complete primitives to manage priorities on many levels: thread, task etc.. but also via a complete message passing interface.
The set manager is used to make the kernel source code very elegant and then understandable by everyone including students. Moreover, the data structure management is centralized in a unique point limitating the bugs and increasing the possible optimizations.
The kaneton portability system was designed to perfectly fit the kaneton microkernel requirements. Indeed, this portability system is not intrusive and allows kaneton to be ported on many different architectures.
Finally, the kaneton microkernel uses modern concepts like capabilities which open many ways to new security management but also increase the reliability and flexibility.
For more information on the kaneton microkernel project, please refer to the official kaneton website.
To the kaneton people especially Jean-Pascal Billaud, Cedric Aubouy, Fabien Le-Mentec, Matthieu Bucchianeri, Renaud Voltz and friends.