GSoC/GCI Archive
Google Summer of Code 2009

MINIX 3

Web Page: http://www.minix3.org/soc-2009

Mailing List: http://groups.google.com/group/minix3

We are the MINIX 3 research group at the Vrije Universiteit. Our goal is to develop a highly reliable and dependable (multiserver) open-source operating system that can survive software failures and repair itself. The ultimate goal is to build an operating system with a mean time to failure comparable to a TV set, which is to say, that the average user never experiences even a single failure during the entire period he or she owns the device.

MINIX has evolved over the years. It started out as an educational tool, but has now become a serious system that could be used for applications where high reliability is important. While not as complete as Linux, it does have two C compilers (including gcc), compilers for other languages, many shells, and well over 500 of the standard UNIX programs.  Using it is like using any other UNIX system, except most people just run X11 rather than a GUI (although we do have a simple GUI).

It is also faster than you might imagine. Building the complete operating system from scratch (about 125 compilations) takes about 10 seconds on a standard PC. Go to www.minix3.org and download the CD-ROM image and boot from it. You can try it without even creating a hard disk partition (although you can't do a lot without a disk partition).

Projects

  • Performance Measuring using Hardware Performance Monitoring Counters The three main utilities making up FreeBSD's PMCTools are ported to Minix3 from the bottom up. First hwpmc, the hardware driver that interacts with processors performance monitoring counter. Second, the library and API, libpmc, that allow programmers to take advantage of the driver. Finally, pmcstat, a utility that utilizes libpmc to make performance measurements on individual processes and the system as a whole. These tools can then be used to identify and treat performance sinks in Minix.
  • Shared Memory Implementaion in Minix3 Minix 3 is on its way to be a fully POSIX-compliant system. The lack of the features of IPC hinders developers from porting useful programs which take advantage of IPC from other platforms. Therefore, I would like to perform a proposal to implement the functionality of shared memory.
  • Using Virtual Memory MINIX 3 is a small, modular, multiserver operating system aimed at being highly reliable, fault tolerant and self healing. Virtual memory has been implemented recently, but it isn't used for much yet. In this project I could build on it, for example, providing support for the POSIX model of shared memory.
  • Writing /proc and /dev File Systems MINIX 3 does not yet have a /proc file system that provides information about processes. In this project, I will implement a new file-system server that populates the /proc directory with per-process information. Second, MINIX 3 currently allocates all device nodes statically on the root device. I will implement a new /dev file-system server that provides an interface for the drivers to dynamically register their devices and modify the system to use it.